拉里·沃尔(Larry Wall,1949年3月10日-)是程序员、系统管理者、语言学家和作家,生于1949年3月10日加拿大卑诗省邓肯市。他最为人知的地方,是他设计的编程语言——Perl。
拉里·沃尔亦是用来阅读 Usenet 新闻组的程式 Rn 的作者,又是一支开放源码界的重要程式 patch 的作者,这两支程式奠下了他在黑客和开放源码界举足轻重的地位。他得过两次 IOCCC(国际C语言混乱代码大赛)的胜利,亦是第一届自由软件奖(Free Software award)的得奖者。
拉里·沃尔是个幽默的人,他经常在程式码的意见或 Usenet 里展现这个特点。
拉里·沃尔曾受语言学的训练,这点帮助了他写书,亦帮助了他在 Perl 的设计。他是 Programming Perl(通常被称为“骆驼书”)的共同作者之一。所有他编辑过或是共笔作者之一的书籍都是由 O'Reilly 出版。
传奇程序员Larry Wall的Perl乐趣编辑本段回目录
"Larry Wall是如何发明了一门凌乱的编程语言--接着改变了WEB的面貌?"
LarryWall微笑着回忆起Yahoo的共同创始人DavidFilo几年之前发给他消息,当时正值Yahoo公开面市之前的不久。File写道:"如果没有Perl,Wall发明的通用编程语言,Yahoo是不可能开始的。那么,Larry你愿意买一些便宜的,Yahoo的原始股(IPO)么"?
回溯到1996年早期,当时正值硅谷Internet IPO的疯狂处于绝对高度,这样一个提议无异于问你是否接受让一辆装载了固体黄金制品的自动卸货卡车往你的门前草坪上运输。但是对于Wall,钱永远不是主要的动机。尽管被认为是黑客们使用的最有价值的工具的作者,Wall仍平静地住在偏远的加州的Mountain View中一个小镇上,为陈旧的1977 Hoda Accord做加工。Perl与钱无关,Wall只是为了解决在日常工作中的碰到的一个编程问题才发明了这门语言,并且从开始他就确认Perl的源代码是可以自由获得的。人们总是想到用Perl来做修补工作--无论是用它来构造一个上百万美圆的Internet目录公司或者只是在他们自己的主页上面做一项调查。
尽管Wall可能很节俭,但他并不笨。他接受了这个提议并且为他的14岁的女儿购入一些Yahoo的股票--这也足够支付她的大学费用。关于Internet上古老的"互惠经济"(gift economy)的规则的更好的例子是几乎不可想象的--投资网络,你就可以获利。
Larry Wall喜欢把Perl叫做一门"粗陋的"语言。用他那温和的嗓音,他这样描述perl:他是一个顺从,温顺的仆人,只是为了"让他服从于你的需要"而存在。拥挤在Web上的大多数Perl黑客却欠温和:他们宣称,Perl是一种不可缺少的粘合剂,使得整个web紧紧联系在一起----不止是Yahoo,还有Amazon和其他成百万的站点。Perl的支持者认为,如果没有Perl和Larry Wall,那么网络只是它现在样子的一个苍白的影子。
无论是在推动Web的发展,还是在制造了众多Internet基础设施的FreeSoftware/OpenSource运动的发展过程中,wall都扮演了一个重要的角色。但是即使他的同时尊称他为FreeSoftware的"极为重要的首领和睿智的老者",Wall的领导风格绝对是谦卑的----这个显著的个性使得他区别于该运动的其他领导人物。
作为传教士的儿子和孙子,Wall是一个虔诚的教徒。据他的朋友,Perl的亲密合作者Tom Christiansen说,他的任务是实现他的理想--"使人们合作工作。他计划以他内心无私的感知能够为Perl做一些互利的工作"。但是他不会允许自己卷入到不重要的"信仰"战争中,这些战争正困扰着编程世界----那些无休无止的争论诸如是否一个编程语言或者操作系统天生地比另外一个好。这样激烈的争论是那些喜欢泾渭分明的黑客的偏好,他们不允许哪怕是狭小的变通空间的存在----相对计算机世界中的基础概念如是/否,0/1等数字的问题,模糊性属于外边的世界。
但是Wall和Perl就是狭小空间的全部,就是凌乱的非理想性和模糊的创造性。毕竟,传送的价值不仅在于它为你解决了某个具体问题,而在于它帮你完成了某项工作。某种程度上,Perl,不是第一流的。但那不是Wall关心的。他谦虚的目标就是有用,就是帮助帮助人们做他们需要做的----实现编程语言,硬件平台,多种软件领域和同一个宇宙空间中共同工作的人们的互相连接。
如果你仔细思考,你会发现Perl是网络的全部所在。 Wall十多年之前首先发明的Perl,直到1994年网络成长时才开始爆炸性地传播,这并非出于偶然。网络是一个黑客云集的,凌乱的既成事实存在,它需要快速的思考和更快的反应次数。 Perl是一个网络黑客的最好朋友。
Larry Wall是如何改变整个计算机文化的。
"我试图同时得到适量的灵活性和稳定性",在他Mountai View的有些凌乱的家中,Wall说道。他正地在谈关于Perl的事情,但他的态度融合进了日常生活的基础。Wall有一个Caller ID(主叫标记)连在计算机上面,这样对于每一个进来的电话他有指令来发出对应的声音。CallerID有什么好的,Wall问,如果你不得不走很远去接电话以知道是谁打电话?同样的,按下他的门铃也从一个Wallace&Gromit粘土木偶发出一系列对话;当他的干衣机(藏在车库中)停止转动时,一种汽笛声将响彻整个房间。
Wall的职业是一个系统管理员,而不是一个软件工程师。系统管理员对编程和技术倾向于一种功利主义的态度----他们关注于使网络不停运转,解决紧急的问题,飞快地编程。Wall做为一个程序员,一生都用来解决这种问题--Perl就是他个人工艺品仓库中最近的工具。在他构造出PERL的几年之前,他已经达到了黑客的名望,他写了"Rn"----一个用于读Usenet新闻组的程序。
对于软件开发,Rn是一种现在称为freesoftware或者opensource模型早期的原型----在其中各地的程序员通过网络互相协作,通过使得大家都可以获得代码来改进产品。Wall写了Rn,在Internet上发放了源代码之后,然后就开始做升级版本,这个升级版本包含了来自最初的网络空间中其他黑客提出的建议和错误修正。
但是回溯到80年代中期,通过网络不是很容易发放升级版。人们通常通过300-1200波特率的modem连接网络,是不可能以轻松的态度把上兆的源代码来回传递,而现在这种情况很正常。
所以Wall写了一个小程序,称为"patch"。Patch带有一个压缩的新的升级源代码并可以应用于以前的源代码。Patch能够提高旧代码更新的速度,并且甚至非常聪明地考虑以前的源代码作过的变化。
作为黑客,Wall是一个相当慎重的人,但那并不意味着他总是很谦让。"patch改变了计算机文化",wall说。
"我多年来一直相信patch是他一个对opensource文化最重要的贡献,尽管他从来没有象Perl或者Rn作到的那样吸引这种更大,更诱人的工程的注意力。"opensource运动的最著名的领导人之一Eric Raymond说。
"Patch可能是迄今为止最成功的活儿",Raymond说道,"Larry有效地创造了,至少是关键性地促成了,被Linux验证了的现代化的高度分布的开发模式。"
Patch之后是Perl。表面上,他是完全不同的东东,一个高度复杂的"脚本"语言,为那些需要写自动任务,连接不兼容程序和系统或者解决难以应付的问题的程序员打算。Perl起源于1986,那时Wall是Burroughs公司的附属公司的一个系统管理员。那时,他致力于加州Santa Monica和Paoli,Pa。的计算机之间信息的同步交换有关的"NSA的一个秘密项目",但NSA不止希望希望信息的同步--它还希望生成关于每次交换的报表,而Wall现有的工具没有一样可以胜任这个任务。把所有的事情结合起来需要一个应急解决方案,一个编程的活儿,最终成为Perl----实用提取和报表语言(Practical Extraction and Report Language)。
"我意识到在C语言和Unix Shells之间有极大的空白区域,"Wall说,"C可以处理复杂的事情--你可以叫它’可操作复杂性’而Shells却擅长处理那些我称做’whipupitude’的事情。但有一大段空白区域,无论C还是Shells都无法很好地处理,这就是我设计PERL的目的。"
从那时起,Wall把他的业余时间和精力花费在探索一门可以连接计算机领域中所有大的空白区域的语言的需求。
"人们总是在寻找空隙",Wall说,"他们总是在寻找新的生态环境。而你进入这些生态环境的速度是真正重要的,因为第一个进入这些环境的人总是赢家。"
Perl是一个赢家。Wall保证Perl的特别强大的能力----文本处理,灵活性和一个对于解决快速/困难问题非常有用的工具集----他们使得程序员可以立即了解Perl的本质:比如David Filo和Jerry Yang,这两个Stanford大学的本科生创造了Yahoo。他们发现Perl不可缺少。他们用Perl来生成Web页面,为他们的执行Web数据搜集的机器人编写代码,并且维护web地址的数据库。
"我们极大地依赖于它",FILO说,"由于可以快速地开发,你可以很快地做这些事情。
Yahoo的经验不是唯一的,Tim O’Reilly,计算机图书的出版公司O’Reilly & Associates的CEO和奠基人说。不止是O’Reilly出版最畅销的Perl计算机图书,3年前他们还聘请Wall作为Perl的全职推销者。
"Perl做这个很顺利",O’Reilly说,"Perl比传统的编程语言要容易理解的多,并且我认为是人们开始构造和想象Web是一个很重要的部分。他让业余爱好者进入----你不必是一个专业程序员。。。。尽管Perl可能有点难,并且可能有点模糊,它对于那些人们想做的事情还是可用的。你可以把事情迅速地捆绑在一起并且迅速解决问题。"
我只是尽力使得计算机比程序员多想一些。
到底Perl能够做什么?在地位上,它与sun的其他计算机语言--Java/Python/Tcl相比,到底有什么差别?
Perl的拥护者说,它是一个"瑞士军刀"----一件可以高效地做任何事情的工具。 学习Perl,一个人不必是那种精通Java/C++的编程天才,尽管Perl自己的灵活性使得它有时比较混乱--尤其对那些习惯于只用一种方法解决问题的程序员。但是Perl最大的优点在于它在其他计算机语言之间建立了一座桥梁。
"Perl曾经是,并且继续是原型式的胶水语言",Chip Salzenberg, Perl最主要的代码分发商之一说。"按照设计,它的演进就是为真实程序员面对日常的挑战、 需要使复杂和非协作的系统协调工作的需求所驱动的。
Larry Wall相信这个演进过程体现了真实的世界是如何工作的。
Perl作了许多工作,Wall说,并且对他认为是你程序的错误给出了很好的反馈,所以当你试图快速开发一些东西的话,会有非常迅速的好转。你试验一些东西,然后它出错,你再改正。你就这样使他成长,发展。我就是这样写程序的。许多人就是这样编程的,他们也是这么去思考的。
Wall说,Perl对真实生活的反映--他的人性特征--是内建于这门语言的深厚的哲学结构。Perl是,第一个后现代的计算机语言,WALL说,一个人造自然语言,模拟了程序员是如何思考的。
所有语言的深厚的结构都是Wall的主要关注点。在他作为一个系统管理员和相关hacking的一生中,他和他的妻子是Uc-Kerkeley的语言系的学生。wall说,他们的计划是,是成为战地的传教士,并致力于翻译圣经。他们将从一本没有书面语言的圣经开始工作,从头学起,再写下来,然后帮助将圣经翻译成那门语言。
他和妻子放弃了这项任务,但是他转而从事另一项工作--协助其他人为实现类似的目标-与其他人想连接做一些有用的事情而努力。当这件事情转而成为创造一门编程语言,而不是彻底地从头建造一些事情的时候,Wall--从他的语言训练中得到灵感--选择去建造一些事情来复制真实的人们的思想和行为。
首先而且最重要的是,这意味着为解决每个可能的问题提供许多不同的途径--这导致Perl的战斗口号,"有不止一条路径可以实现"。"如果你认为人们的语言是一个艺术媒介",WALL说,"他已经给你创造力的空间。如果你想能够为不同的事情做优化--如果你想能够用同一种语言开处方,作诗,写报纸专栏和杂志专题--他就必须具有灵活性。这与人们在计算机科学中学到的截然不同。人们被教导如果有任何冗余,那就是有害的,恶劣的。从自然语言的角度看,我不买它(指计算机科学的教导)的帐。"
Perl沿着一门真实语言的道路发展,吸收了长期以来其他语言的优点----有一些Unix,一些c++,一些BASIC,一点这个,一点那个。如果其他任何人有一些新鲜,有用的东西,Perl会包含他。当Wall调用这些"后现代主义"的概念,他是指Perl的折衷,包容的方式----在每一个隐蔽处和裂缝中都可以找到的一点点真理的能力---同时不用使它自己被任何大的真理所包围。
当他出现的时候,大多数计算机语言试图使程序员想计算机一样思考",Wall说,"我试图使计算机比程序员多想一些,并达到了一定程度的成功。问题是,到底谁是主导者,这就是全部所在"。
尽管Perl十分普及,但这门语言不是没有反对者。 MarcEwing, RedHat 的首席技术官员,Linux商业版本的主要分发商,情愿使用Python;Infoseek,Internet的搜索引擎公司,用Python做内部开发工作。也许最有力的批评来自Eric Raymond,他长期将Perl吹捧为open source运动最成功的故事之一。"这门语言的设计显示出他的年纪和明显的膨胀的标记,Perl从来不是一个漂亮或者优雅的语言;他的引诱力在于他的直接的可用性。长期之后,在我看来,Larry’s早期选择产生的问题是积聚和加强其他优点只比效益的堆积快一点点。"
"这些问题导致了很多人从使用Perl流失到其他脚本语言,",Raymond说,"我个人是这种趋势的一部分;我已经完全从Perl转向Python,一门年轻的语言,有点象应用程序但是有更清晰的设计。。。我期望在未来Perl相关的重要性可能降低,即使啊的开发人员的基数在绝对数字上持续增长,因为他的竞争者的增长将比Perl的竞争者快的多"。
Perl有很多优点,但决不清晰----实际上使用Perl的黑客用"混乱"作为称赞的话。但是对于perl的攻击者,甚至是Python的支持者,混乱犯了编程的大忌。
我最近从perl的用户(同时也是Python的用户--但他们并不总是喜欢Python)听到的最多的一个抱怨是-当你有一段时间没有接触Perl后,即使你自己的Perl代码也很难再读懂--更别提别人的Perl代码了。,"GuidoVanRossun,Python的主要作者说,"对于过去的或者不熟悉的Python代码这很少是一个问题。当Perl的支持者极力提倡Perl用户写清晰的代码,并且较新的Perl版本包含一些帮助特性,Perl坚持“混乱”的价值意味这总是Perl的一个问题。”
在某中程度上,Perl/Python的争论只是无休止的那些为了体现黑客特性争夺主导权的比赛的另一个例子。但关键差别是真实的---那些探询纯正和那些坚持工具的有效性之间的差别。"纯正语言的支持者总是说Perl是丑陋的",O’Reilly说,"说Perl是一个’厨房水槽’式的语言,说Perl会被他的自重压垮,而Perl继续比其他脚本语言的合集解决越来越多的问题"。
"我们出售关于Perl和Python的最畅销书。"。。。说,"并且我们继续看到Perl使用情况的健康增长,而Python的增长很平常。Perl的使用比Python高的多,至少根据书籍销售的情况来看是这样。"
“Perl并没有经历任何大规模的使用者分流”,Salzenberg说,“至多你可以说,在Perl继续发展的同时其他也在发展。这对Perl是很好的。当有许多事情需要胶合,一门粘贴语言是最有用的。。。Perl将继续发展以使得任何事情可以与其他任何事情相连接。”
Wall让其他人反击对Perl的攻击。当我询问他对于Raymond的直接的批评的反应是,他发给我一份在线email,其中引用了托尔斯泰的话:"这真奇怪,托尔斯泰写道,漂亮就是好的这个错觉是如此地完美!"
对于wall,好就是作好连接,这正是他自身的美丽所在。
Perl不但连接了C程序员的世界和UnixShell的世界,或者连接了计算机世界的数字服务和人类现实不成熟的混乱。Perl还在自由软件世界的两个极端之间架设了一座桥梁,一方是Raymond为代表的商业实用主义,他们支持自由软件因为它作出了最好的软件;一方是自由软件基金的RichardStallman领导的激进的道德学家,他们相信自由软件是绝对好的。
那些希望修改或者改变perl的人们可以通过在两种不同的许可声明下的限制达到这个目的。他们可以在GPL下操作---Stallman的FSF制定的非常严格的许可证,为了保证自由软件总是保持自由。或者他们可以选择Wall自己的"艺术许可证"--一套更宽松的规则的集合,wall说,这意味着"本质上,你可以用Perl做任何你想的事情事情,只要你把艺术的控制权给我就行了。"
它已经不会招致FSF任何过分的不满了,WALL说,但实际上艺术license接近与我在这个问题上的感受,我希望perl能够被使用。
的确是这样。Perl在一个似乎是死路一条的地方开辟了一种可能性---为什么有如此之多的Perl 黑客的一个主要的原因是,当被问到为什么他们喜爱perl,一个简单的回答就是"fun"(有趣)
我问LarryWall为什么认为Perl有趣。"他让你富有创造力",他说,"他给你众多选择。你常用的计算机语言就象一种训练,他会把你带到他到过的任何地方。Perl就象一辆偏离大路的汽车,将把你带到你想去的地方,即使到那里没有任何正式的道路。"
当你能够利用那种路径搜索的方法, 你就从努力中得到回报。LarryWall,坐在MountainView家中的起居室,抚摩他的小猫,听着回荡在房间中神秘的音乐,就象一个非常高兴的男孩。他对web作出了有价值的贡献,web不会让他忘记它的。
"几乎每一天,都有人会给我写一条消息说我喜欢你发明的那个东西",LarryWall说,"它改变了我的生命,我曾经讨厌编程--现在编程又是一个快乐的事情。"(Andrew Leonard)
Larry Wall, Perl教父访谈编辑本段回目录
看看Perl的创造者,看看Perl的新进展.
Larry Wall, Perl教父访谈 看看Perl的创造者,看看Perl的新进展.我和Perl脚本语言的创造者,Larry Wall(拉里沃尔,),在3月1号通过电子邮件进行了一次"交谈".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是小写的.而现在,标题是ProgrammingPerl.
马: 嗯,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脚本的秘诀.大多数Perl1的脚本可以不用更改的运行于Perl5之下.一个附带的好处是,对于特性的声明使得依赖性在编译时是可见的,所以程序不会在运行时因为缺少某个特性而退出.这与shell编程形成了鲜明的对比,在那里,直到执行的时候这些问题才会暴露出来.
马: 有没有进一步的Perl开发计划?
拉: 我要是比自己再聪明一些,大概就能预见到了.不过我的智慧只能是知道我还没有聪明到那样的程度,正因为如此我把可扩展性放到了Perl的首要位置.说到这个,我可以告诉你一些我希望实现的特性.
首先,如果要来处理文本,Perl是首选.Perl一直就是一个文本处理语言,虽然很早以前它就已经不仅仅局限于文本处理了.由于这个缘故,Perl就成为CGI编程的首选,因为在提取和组合文本方面Perl非常拿手.
其次,我希望Perl可以把这样那样的东西黏结到一起.我们并不是黏结积木,我们的目的是把原来并不同类的东西黏结到一起.作为一个胶水语言,Perl既适合于修补裂缝,也适合于填充壕沟.Perl对空隙极为熟悉.典型的CGI脚本或是mod_perlservlet可以把数据库和网络黏结到一起.当一个空隙消失之后,又会产生其它空隙.
第三,我希望可以给失去特权的人以特权.我们开玩笑说准备把多出来的饭菜送给饥饿的非洲人,实际上,在美国之外,有非常多的程序员,他们没有足够的钱用来购买操作系统或是软件.中国最近一次就从某出版社(我为其工作)订购了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可以把世界上的所有事物联系在一起. 组合学是令人惊讶的.
Perl杂志的第一期(不要与Linux杂志混淆)有一篇文章,标题是"Perl是如何拯救了人类基因组计划".文中说明了世界各地不同的基因组实验室使用了不同的数据库,其中的数据格式也是千差万别,而Perl如何将这些数据处理成统一的数据.马: 我们收到ActiveState Tool公司的一份产品声明,它说:``PerlDirect 提供对Perl的如下特性的可靠的,稳定的,支持和责任: Perl的可用的高质量的分发包,以及常用扩展;建议和支持;Y2K测试组件;每周一次的Perl警告信息.
PerlDirect提供给您直接支持一个引导开源运动的组织的机会.年捐助额应当不低于12,000美元.''你和这家公司熟吗?我觉得他们提供的这个机会非常有趣.这有什么意义吗?
拉: 听起来好像是和我签约的支持.
我相信即使是Richard Stallman也会承认技术支持是通过自由软件盈利的有效方式.我和ActiveState没有直接的联系,不过我跟他们合作过,我想他们解决的问题远比他们引起的问题要多得多.你得了解,他们的市场是Windows,在那里他们收取报酬帮用户做事是很好的事情,因为那是唯一不会使用户们疑惑的方式.Linux用户当然要聪明一些,不过他们还是不够聪明,没有认识到Windows完全是一种不同的文化,而Perl作为一种后现代化语言对环境是非常敏感的,因此在那样一种环境下看起来会大不相同.
马: 噢,我的本意并不是说他们不诚实--只是好奇想知道你到底知不知道这件事.你对开放源代码运动的看法怎样?你认为它将会变成长期存在,还是只是一时流行?
拉: 我的大脑一定是连接性很强的,因为我认为你所说的两方面都是正确的.而且它们同时也都是不对的. ;-)到目前为止,开源运动已经经历了20年的发展了,我们怎么能说它将变成什么什么?我们仅仅要向大家显示开源也曾经产生了大量优秀的代码程序.
另一方面,我们想更进一步,希望更多的人认识到这是一种有效的开发模式,对很多不同种类的,以前都是以封闭模式开发的软件也是适用的.不过,当然,它也是一时流行--就象我们已有的其它一时流行的东西一样,比如自由语法,结构化程序设计以及最近的面向对象.你得了解的是,对一时流行的东西,人们通常会有两种对待的方法.这有些象启示录中把绵羊和山羊分开一样.有些一时流行的东西,流行过去之后就会从此消失,但是另外一些一时流行的东西会由流行转为平淡,通常在这之前都会经过一个狂热期.
比如自由语法,结构化程序设计和面向对象等,它们都是由一时流行转为平淡,但是并没有消失.那些流行之后即消失的东西,通常不是来源于历史,而是来源于某些人的希望(通常是市场人士).以此来判断的话,开源应该会由一时流行转为普通应用,因为它其实已经是普通应用了.
以我来看,开源运动正是我们正在成长的后现代化文化的又一个展示.相反的,所谓商业机密的提法只是之前的创意无价的思想的翻版.我们以前经常说代码重用服务,可是这么多年来,只有当开源出现之后,代码重用服务才得以实现.后现代化程序员认为重用好代码不必考虑它是原创还是相反.这与自豪无关.后现代化主义者应该是一个剽窃者,剽窃一切他(她)认为精彩的东西.
马: 要是什么东西都开源的话,程序员要靠什么生活呢?
拉: 和许多其他开源的支持者不同,我不认为任何东西都会开源.我所持的是目前也在逐渐得到更多认同的观点,那就是那些具有很大规模的基础性的东西需要开源,就象美国政府逐渐认识到州际公路应该是不收费的一样.另一方面,我不会期望城市中的停车场会免费,除非那个市府特别开明.因此如果拿Windows和Word来比较,我更希望Windows能够开源.有一种说法,我们可以有很多方法通过开源来谋生,这就好像我们有很多方法通过开放的科学来谋生一样.不过,我认为这里正是开源需要努力开发的一个方向.科学在开始时,只是富人的爱好,只是当它进入到教育学院之中以后才逐渐发展成今天为我们所熟悉的形式..开源还没有开始这一步,或者更确切的说,开始了,但是各个教育院校却把目标设定在赚钱上了.我希望有更多的地方能向UC Berkeley学习.
马: 那么,你靠什么谋生呢?
拉: 开始时,我和其他人一样,一边编程一边做系统管理的工作,同时我还开发自由软件.之后,我写了一本书然后就有了版税.那本书很畅销,它使得我和出版商O'Reilly & Associates都赚了很多钱,可能赚的比我还多.当然,那些钱他们还要用来支付其他人的报酬,总的来说是差不多的.不管怎么说,三年前我和Tim O'Reilly都认识到,对Perl有利的事情dvO'Reilly & Associates也是有利的.
因此现在我想干什么他们都会为我付账,只要是对Perl有帮助就好.这是一种良好的共生关系.马: 有没有新的令人感兴趣的计划呢?
拉: 有人建议我写作骆驼书的第三版,除此之外我还没有正式的计划.
马: 哦.介绍一下你自己吧.比如你在哪里上的学,你有什么兴趣爱好之类的.
拉: 我的童年有一半时间是在洛杉矶南部度过的,然后是在华盛顿.我从高中毕业之后,进入西雅图太平洋大学,开始学的是化学和音乐,然后转到医学,最后的专业是自然和人工语言.之后,我和我妻子参加了语言学的进修.当时,我们打算去做传教士(准确的说,是圣经解说员),最后考虑到健康的原因放弃了该计划.有趣的是,传教士们由Perl上得到的帮助大概会大于我作为一名传教士能够提供的帮助.至于说到我的兴趣,这个有点困难,因为我对所有有趣的东西都感兴趣.说起来就会有很多了,不过有两样例外,即歌剧和肥皂剧--太空题材的影片除外.
马: 你娱乐的时候会做什么?
拉: 读书和听我的妻子给我读书(特别是太空类的).和家里任何人讨论任何问题.玩填字游戏.玩麻将.练合气道.看动画.逗鱼.
马: 看起来你很忙碌有很有趣味--很好的组合.那么你早饭吃什么?
拉: 我早饭吃很多东西--不过,我通常是在午餐时间吃早饭.
马: 时间过得好快.谢谢你抽空接受采访.非常感谢!