博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

钻研技术

   yuguang.cublog.cn
关于作者  


我的分类  




Perl 大师, Larry Wall

Perl 大师, Larry Wall

  • 翻 译:redcandle from linuxforum
  • 出 处:中国 Perl 协会 FPC - PerlChina.org
  • 原 名:Larry Wall, the Guru of Perl
  • 中 文:中文名称
  • 作 者:Marjorie Richardson
  • 原 文:LinuxJournal 61 期
  • 发 表:1999-05-01
  • Perlchina 提醒您:请保护作者的著作权,维护作者劳动的结晶。


看看 Perl 的创造者,看看 Perl 的新进展。

我和 Perl 脚本语言的创造者,Larry Wall(拉里沃尔),在三月一号通过电子邮件进行了一次“交谈”。Larry 显得非常健谈,你一定会觉得这次交谈既有趣又使人受益。我真是这样感觉的。

Marjorie(马乔里,记者,以下简称马):起初的时候,是什么让你决定开发 Perl 的?

Larry(拉里,Perl 的创造者,以下简称拉):这要看你的“起初的时候”是指什么样的“起初”。就象摩西所说:“起初神创造天地”。我并不是完全在说笑。每个人都有他在意(或 不在意)的对圣经的阐释方法,而我认为宇宙万物就是激发我们想要成为一个创造者的最大的灵感。我也已经努力地要把这样一种整体的思想加入到 Perl 中间去,有些已经获得了实现。

要是以传记体的开始来讲,我的父亲是牧师,我的爷爷也是牧师,我的很多祖先也是牧师。我的妻子总是喜欢说传教士是智慧的种子(我猜她是在 奉承)。不过也有可能吧,我确实继承了还算像样的脑组织结构的基因。另外我还继承了一些思想和技能,有些思想和技能已经融入到 Perl 文化当中了。比如,认为你能改变世界的思想;比如,认为别人很重要的思想;比如,对于交流的热爱,包括花言巧语的理解,更别说对语言学的关注了。再比如, 对于文字重要性的认识;对于将所有事物与其他事物进行联系的渴望;对于建设的狂热,对于毁坏的厌恶。当然还有一点,那就是真正衡量财富的方法不是看你积聚 了多少,而是看你与别人分享了多少。

最直接的诱因是我遇到了一个问题,我手头的工具都无法解决它。或者说,都不能轻易得解决它。就象使徒保罗所说“凡事都可行。但不都有益 处”。我应该能够用 awk 和 shell 解决我的问题,但幸运的是程序员最重要的三个美德在我身上储量丰富,它们是:懒惰,急躁和傲慢。我太懒了,如果用 awk 来做的话需要做大量的工作,这是无法忍受的。我太急躁了,awk 做起来很慢,我可等不及。然后,我的傲慢使我认为自己可以做的更好一些。当然,真正要写出 Perl 这样的东西需要做大量艰苦的工作,也需要耐心甚至谦卑。如果我仅仅是为了我自己,可能是不会下这么大的功夫的。然而,我知道,其他的人也会来使用 Perl,不仅仅只有我一个人而已,所以我的“懒惰曲线”是结合整个社区来绘制的。这样看来我的懒惰可以说是代偿性的懒惰咯。这里我们又一次提到了救赎。

马: 哦,回答的非常全面。必须承认,我本来没有期望你能从宇宙的起源说起:-)那么,为什么用 Perl 这个名字呢?

拉:我希望起一个短一点的有正面意义的名字。(比如,我绝对不会把一个语言叫作“Scheme”或是“Python”)。实际上我查阅了字 典中所有三个或是四个字母的单词,最后却一个也没有用。我也曾想过用我妻子的名字 ,Gloria,来命名它,但那让给家人带来混乱。最后我选中了“Pearl”,作为 Practical Extraction and Report Language(实用摘录和报告语言)的缩写。那时,字母“a”还在名字当中。但是我听到有传闻说有个朦胧绘画语言也叫作“pearl”,就把它缩短为 “Perl”了。(当我给这个语言新的诠释的时候,名称中的“a”也就真的消失了,可以把“Perl”理解为:Pathologically Eclectic Rubbish Lister 病态折衷垃圾列表器(译者:晕,怪不得这种解释不常见到,太抽象了点:-!))。

另一个关于“Perl”这个名称的珍闻是,刚开始时“Perl”中间的“p”是小写的。那时 UNIX 还只能支持小写字母。实际上,你可以把它叫作反小写系统。就象在网上发贴的人最初所有的东西都是小写的,后来它们发现适当的使用大写可以使得交流更加的方 便。对 Perl 来说,当 Perl4 发布之时我们觉得有必要区分“perl”程序和“Perl”语言。如果你找出第一版骆驼书,你可以看到标题是 Programming perl,字母 p 是小写的。而现在,标题是 Programming Perl。

马:嗯,Perl 现在完美了吗,你还会进一步的开发它吗?

拉:嗯,这两者并不是互斥的。看看 Linux。:-)

实际上,Perl 从来没有设计的很完美。设计的时候我们就打算使它适合进一步的发展,具有更强的适应性。从生物学角度来讲,世界上没有完美的生命体。最多你只能说一个生命 体对其所处的环境适应的好些或是差些。实际上,生物学家已经认识到任何对于一个环境来说似乎是“完美”的生命体当环境发生变化的时候就有灭绝的危险。超特 定性几乎与生态龛位同义。我们说的并不只是恐龙,还有专吃蜗牛的鸟和印度豹,还有巴西的一种甲虫 -- 当然还有 Visual Basic。

我们已经看到很多超特定性有机体的死亡了,在计算机世界中,这包括:Lisp 机器,Ada 芯片和很多所谓的第四代语言。任何用汇编语言为废弃的系统编制的程序如今也都被废弃了。同样的,任何把自己的命运与单一操作系统捆绑在一起的程序也会随着 操作系统的消亡而消亡。我不知道 Windows 在沉没之前还能够经受几颗鱼雷的轰击,但是当它沉没的时候,一大批仅适用于这个操作系统的程序将随其一起沉没。明显的,由于开放源码运动,Linux 不存在这样的问题。

不管怎么说,让我们回到 Perl 上来。从一开始,Perl 就是为改变而设计的。这中间包括了某些折衷。如果以和我不同的观点来看的话,这些折衷可能并不是最好的处理方法。比如,为了在将来给 Perl 增加关键词的时候不会破坏已有的老程序,我在变量名上给它们使用了不同的命名空间。即变量名和关键字必须是要用标记明显区分开的。我选择了标记变量,一个 是因为这样可以方便的使用变量在字符串中的内插,另一个原因是在 BASIC 语言中有标记变量的先例。在某些环境下这可能是无法接受的,比如某些顽固的纯化论者会说,加入标记会使 Perl 变得很难看,而且太象 BASIC 。或许吧。那又怎么样?这是一种有意的折衷,目的是为了 Perl 可以更为有用。从这方面来讲,Perl 可能不是很符合计算机科学家的定位,但是它适合这个世界。对于这个折衷,我从来没有觉得遗憾。

当然,第一印象之后,还是有些东西会得到计算机科学家的喜欢的,比如变量的作用域和 closures 。因此大体上,如果这些科学家能够强捏住他们的鼻子把 Perl 奶酪放到他们的嘴里尝一尝(并坚持住)的话,那么他们会发现还是可以一吃的。

更重要的,Perl5 使用了一种扩展系统,它有些类似 Linux 的模块系统,允许连续的开发,而不需要改变核心语言。即,你可以开发特定功能的 Perl 模块如果这个模块非常流行,常用的话,我们会考虑把它加入到 Perl 核心中去。

这并不是说我们不会改变核心了。最近我们还加入了对多线程和 Unicode 的支持。有趣的是,虽然我们确实是在修改核心,我们还是使得它看起来就象是在做一个扩展模块。实际上,如果你要使用新的核心的特性,那你必须要首先声明。 这正是我们使得Perl几乎可以 100% 兼容老版本 Perl 脚本的秘诀。大多数 Perl 1 的脚本可以不用更改的运行于 Perl 5 之下。一个附带的好处是,对于特性的声明使得依赖性在编译时是可见的,所以程序不会在运行时因为缺少某个特性而退出。这与 shell 编程形成了鲜明的对比,在那里,直到执行的时候这些问题才会暴露出来。

马:有没有进一步的Perl开发计划?

拉:我要是比自己再聪明一些,大概就能预见到了。不过我的智慧只能是知道我还没有聪明到那样的程度,正因为如此我把可扩展性放到了Perl的首要位置。

说到这个,我可以告诉你一些我希望实现的特性。

首先,如果要来处理文本,Perl 是首选。Perl 一直就是一个文本处理语言,虽然很早以前它就已经不仅仅局限于文本处理了。由于这个缘故,Perl 就成为 CGI 编程的首选,因为在提取和组合文本方面 Perl 非常拿手。

其次,我希望Perl可以把这样那样的东西黏结到一起。我们并不是黏结积木,我们的目的是把原来并不同类的东西黏结到一起。作为一个胶水语 言,Perl既适合于修补裂缝,也适合于填充壕沟。Perl 对空隙极为熟悉。典型的 CGI 脚本或是 mod_perl servlet 可以把数据库和网络黏结到一起。当一个空隙消失之后,又会产生其它空隙。

第三,我希望可以给失去特权的人以特权。我们开玩笑说准备把多出来的饭菜送给饥饿的非洲人,实际上,在美国之外,有非常多的程序员,他们 没有足够的钱用来购买操作系统或是软件。中国最近一次就从某出版社(我为其工作)订购了 200,000 本英特网书籍。这仅仅只是开始而已。也正因为如此去年我把对 Unicode 的支持加入到 Perl 中去。当然,文本处理也涉及到 Unicode。

说了这么多,其实它们基本上和下一步的开发计划无关,因为这些天以来我基本上已经很少参与开发了。Perl 社区的工作已经超过我很多数量级了,他们才是真正的使Perl成为真正的脚本语言的人。我只是待在一边偶尔为他们欢呼罢了。我现在就要为他们欢呼。啦啦啦!:-)

马:Perl 到底是在哪些方面优于其它的脚本语言的,比如 Python 和 Eiffel?

拉:对于脚本语言来讲,Perl 是独特的,而且在所有的计算机语言中,Perl 也是非常独特的。它是唯一的一个有意识的并且明确的被设计为后现代化的计算机语言。而其它的语言都还不同程度的坚持着他们的现代化特性。事情虽然是这样, 我却很少使用后现代化来描述 Perl ,因为很多人并不能真正理解后现代主义,虽然他们已经处于后现代化之中。事实是,美国文化已经完全进入后现代化了,不仅是音乐和文学,还包括时尚,建筑以 及所有的与文化沾边的领域。

现代化是基于某种傲慢之上的,把创意置于一切之上的文化的有色眼镜,它的设计者认为他们认为很好的东西,全世界都应该喜欢。即是说,如果 某件事值得做,那就应该把所有其它可能的途径都推到一边而仅留它一个。看看在 Lisp 中对圆括号的使用,以及 Python 语法中对空格的使用吧。还有对象的强制应用,这包括很多语言,其中就有 Java。所有这些都是“自说自话的”限制了用户的自由。它们其实就是阻碍自由思想的翻版。1970年代的时尚警察已经离我们远去了,但是很多程序员依然 是网络警察的奴隶。

恰恰相反,后现代主义允许人们对任何艺术品从个人的或是不同文化的背景给出诠释。 无论怎么说都是你自己的事情。Perl 的口号即来源于此,那就是:“条条大路通罗马”。Perl 之所以在你做任何事时都给你许多不同的可以使用的方法的原因是:我确信程序员们都希望自己是具有创造性的,他们可以有很多不同的理由想要写出他们自己的特 别的代码。你想要做什么是你自己的事情,不是我应该考虑的。我要做的就是给你涂料任你绘制自己的图画。

马:谁在使用 Perl,他们怎么使用它?

拉:两年前,我在一次商业展会中遇到一个人。他和另一个人在经过我面前的时候,他正给那人介绍国家安全局的有关情况,他说他用 Perl 写了一个过滤器。我于是问他,我可不可以告诉别人国家安全局使用 Perl。他当时反问:“难道有谁不用吗?”所以现在我不会说国安局用 Perl。 我只是告诉大家国安局的人认为大家都在用 Perl。我想大家应该知道这个。

有趣的是,正是这个人中止了那个使用到 perl 的项目。当我告诉他,Perl 可能是那个项目最大的受益者时,他觉得很开心。

说到大家用 Perl 做什么,可以说是做什么的都有。几年前当我听说 Perl 在华尔街使用非常广泛的时候,着实吃了一惊。当时他们说:“每个桌子上都有一本 Perl 书”。不过,考虑到市场分析需要他们不断的修正他们的模型,他们还需要扫描那些可能与他们在市场中的位置相关的新闻信息的话,就会觉得合情合理了。他们需 要的正是快速原型和文本处理。

很多人把Perl和CGI脚本联系在一起,其实那主要是由Apache下的 mod_perl servlets 完成的。Perl 多是用于那些客户端的机器人和蜘蛛,它们搜索网络并在形形色色的数据库中建立链接。不过,这并不是全部。如果你曾经受到垃圾邮件的困扰(有谁没有过?), 那么几乎可以肯定,你的邮件地址被某个 Perl 脚本从网络上搜集到了。垃圾邮件本身也很有可能是由 Perl 脚本送出的。有人可能说 Perl 是滥用网络的首选。但同时也会有人以此为傲。

这仅仅是 Perl 用途的一鳞半爪而已。如果不考虑民意测验或调查也不考虑美国人口调查局,那么最好的了解 Perl 用途的方法就是查看 Comprehensive Perl Archive Network(CPAN)站点上的 800 个或是经常使用的模块。如果你把这些模块都看一遍,你会发现,Perl 几乎与世界上所有事物都有联系。稍微动动脑筋,你会发现Perl之所以与世界上所有的事物都有联系,并不是因为 Perl 能够与所有这些事物如何沟通,而是因为 Perl 可以把世界上的所有事物联系在一起。组合学是令人惊讶的。The Perl Journal 杂志的第一期(不要与 The Linux Journal 杂志混淆)有一篇文章,标题是“Perl 是如何拯救了人类基因组计划”。文中说明了世界各地不同的基因组实验室使用了不同的数据库,其中的数据格式也是千差万别,而 Perl 如何将这些数据处理成统一的数据。

马:我们收到 ActiveState Tool 公司的一份产品声明,它说:

“PerlDirect 提供对 Perl 的如下特性的可靠的,稳定的,支持和责任: Perl的可用的高质量的分发包,以及常用扩展;建议和支持;Y2K 测试组件;

每周一次的 Perl 好消息。PerlDirect 提供给您直接支持一个引导开源运动的组织的机会。年度使用费应当不低于 12000 美元。”

你和这家公司熟吗?我觉得他们给自由软件提供的这个获利机制非常有趣。这有什么意义吗?

拉:这听起来好像是和我的技术支持时候常用的协议。我相信即使是 Richard Stallman 也会承认技术支持是通过自由软件盈利的有效方式。

我和 ActiveState 没有直接的联系,不过我跟他们合作过,我想他们解决的问题远比他们引起的问题要多得多。你得了解,他们的市场是Windows,在那里他们收取报酬帮用户 做事是很好的事情,因为那是唯一不会使用户们疑惑的方式。Linux 用户当然要聪明一些,不过他们还是不够聪明,没有认识到 Windows 完全是一种不同的文化,而 Perl 作为一种后现代化语言对环境是非常敏感的,因此在那样一种环境下看起来会大不相同。

马:噢,我的本意并不是说他们不诚实 -- 只是好奇想知道你到底知不知道这件事。你对开放源代码运动的看法怎样?你认为它将会变成长期存在,还是只是一时流行?

拉:我的大脑一定是连接性很强的,因为我认为你所说的两方面都是正确的。而且它们同时也都是不对的。 ;-)

到目前为止,开源运动已经经历了20年的发展了,我们怎么能说它将变成什么什么?我们仅仅要向大家显示开源也曾经产生了大量优秀的代码程 序。另一方面,我们想更进一步,希望更多的人认识到这是一种有效的开发模式,对很多不同种类的,以前都是以封闭模式开发的软件也是适用的。

不过,当然,它也是一时流行 -- 就象我们已有的其它一时流行的东西一样,比如自由语法,结构化程序设计以及最近的面向对象。

你得了解的是,对一时流行的东西,人们通常会有两种对待的方法。这有些象启示录中把绵羊和山羊分开一样。有些一时流行的东西,流行过去之后 就会从此消失,但是另外一些一时流行的东西会由流行转为平淡,通常在这之前都会经过一个狂热期。比如自由语法,结构化程序设计和面向对象等,它们都是由一 时流行转为平淡,但是并没有消失。那些流行之后即消失的东西,通常不是来源于历史,而是来源于某些人的希望(通常是市场人士)。以此来判断的话,开源应该 会由一时流行转为普通应用,因为它其实已经是普通应用了。

以我来看,开源运动正是我们正在成长的后现代化文化的又一个展示。相反的,所谓商业机密的提法只是之前的创意无价的思想的翻版。我们以前 经常说代码重用服务,可是这么多年来,只有当开源出现之后,代码重用服务才得以实现。后现代化程序员认为重用好代码不必考虑它是原创还是相反。这与自豪无 关。后现代化主义者应该是一个剽窃者,剽窃一切他(她)认为精彩的东西。 马:要是什么东西都开源的话,程序员要靠什么生活呢?

拉:和许多其他开源的支持者不同,我不认为任何东西都会开源。我所持的是目前也在逐渐得到更多认同的观点,那就是那些具有很大规模的基础 性的东西需要开源,就象美国政府逐渐认识到州际公路应该是不收费的一样。另一方面,我不会期望城市中的停车场会免费,除非那个市府特别开明。因此如果拿 Windows 和 Word 来比较,我觉得 Windows 能更先开源。

有一种说法,我们可以有很多方法通过开源来谋生,这就好像我们有很多方法通过开放的科学来谋生一样。不过,我认为这里正是开源需要努力开 发的一个方向。科学在开始时,只是富人的爱好,只是当它进入到教育学院之中以后才逐渐发展成今天为我们所熟悉的形式。开源还没有开始这一步,或者更确切的 说,开始了,但是各个教育院校却把目标设定在赚钱上了。我希望有更多的地方能向 UC Berkeley 学习。

马:那么,你靠什么谋生呢?

拉:开始时,我和其他人一样,一边编程一边做系统管理的工作,同时我还开发自由软件。之后,我写了一本书然后就有了版税。那本书很畅销,它 使得我和出版商 O'Reilly & Associates 都赚了很多钱,可能赚的比我还多。当然,那些钱他们还要用来支付其他人的报酬,总的来说是差不多的。

不管怎么说,三年前我和 Tim O'Reilly 都认识到,对 Perl 有利的事情对 O'Reilly & Associates 也是有利的。因此现在我想干什么他们都会为我付账,只要是对Perl有帮助就好。这是一种良好的共生关系。

马:有没有新的令人感兴趣的计划呢?

拉:有人建议我写作骆驼书的第三版,除此之外我还没有正式的计划。当然 Tim O'Reilly 还给我一个 Palm Pilot 作为圣诞礼物,我觉得蛮好玩,不过你要答应不说出去。

马:哦。介绍一下你自己吧。比如你在哪里上的学,你有什么兴趣爱好之类的。

拉:我的童年有一半时间是在洛杉矶南部度过的,然后是在华盛顿。我从高中毕业之后,进入西雅图太平洋大学,开始学的是化学和音乐,然后转到 医学,最后的专业是自然和人工语言。之后,我和我妻子参加了语言学的进修。当时,我们打算去做传教士(准确的说,是去翻译圣经),最后考虑到健康的原因放 弃了该计划。有趣的是,传教士们由 Perl 上得到的帮助大概会大于我作为一名传教士能够提供的帮助。

至于说到我的兴趣,这个有点困难,因为我对所有有趣的东西都感兴趣。说起来就会有很多了,不过有两样例外,即歌剧和肥皂剧 -- 太空题材的影片除外。

马:你娱乐的时候会做什么?

拉:读书和听我的妻子给我读书(特别是太空类的)。和家里任何人讨论任何问题。玩填字游戏。玩麻将。练合气道。看动画。逗鱼。

马:看起来你很忙碌有很有趣味 -- 很好的组合。那么你早饭吃什么?

拉:我早饭吃很多东西 -- 不过,我通常是在午餐时间吃早饭。

马:时间过得好快。谢谢你抽空接受采访。非常感谢!

 原文地址 http://wiki.perlchina.org/index.php/Larry_Wall_the_Guru_of_Perl
 发表于: 2008-04-21,修改于: 2008-04-21 22:32 已浏览75次,有评论0条 推荐 投诉

  网友评论

  发表评论



Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:0.00944

京ICP证041476号