乘风原创程序

  • 传奇程序员Larry Wall:Perl的乐趣
  • 2008/11/17 8:34:43
  • 作者: 2003-8-1 0:48:13 
    出处:博客中国(Blogchina.com) 原始出处: AKA杂志 

    "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说,一个人造自然语言,模拟了程序员是如何思考的.

    所有语言的