
| 出版日期:1999-09-06 总期号:855 本年期号:65 |
|
perl渐成气候
曹开彬 当我们把目光对准linux时,我们要记住,在internet世界里还有很多自由软件。谁代表自由软件?谁是自由软件的发展方向?linux作用举足轻重,但perl、apache、python等自由软件同样不可忽视。它们的情况如何? 1987年,美国的larry wall及其合作者们开发了perl(practical extractionand report language)语言。从一开发起,larrywall就赋予perl免费和开放源码的权利。所以,perl由它的使用者维护和发展。到现在,它的影响力并不亚于linux,并在internet的世界里扮演着越来越重要的角色。 系统管理员和cgi作者的宠儿 简单地说,perl是一种解释性高级程序语言。为什么larry wall会想到要开发perl语言呢?这跟他长期与unix打交道有关系。大家知道,unix主要用c语言和unix shell来编程的,但它们却不是一个整体的两个部分。c语言能很方便地进行系统内部的操作,但却不能快速地进行外部开发;unix shell刚好相反,它能很方便地进行外部处理,却很难进行底层操作。如果能把这两者结合起来,不是很好吗?larry wall认为这是他创建perl的初衷。因此,他把c语言以及sed、awk、unix shell等十多种工具和语言中非常“酷”的优点结合起来,把它们中不“酷”的东西清除出去,开发出了perl。如果程序员觉得用sed或awk或sh完成工作有点慢,但又不想用c语言来写,perl就可以派上用场了。 当然,到了现在,perl已经不像当初那么“单纯”。经过十多年的发展,perl已是最主要的web脚本语言,大多数的cgi程序都是用它写的(正因为如此,它甚至成cgi程序的代名词)。同时,它也是一种非常好的快速原型设计语言,并且能使不同的系统很好地协同工作。由于perl能非常方便地将小程序嵌入到大型应用程序之中,所以被誉为是“internet的输送管道”。 perl目前已经受到很多程序开发人员的喜爱,如系统管理员、数据库开发人员、web开发人员等。现在,perl不但成为系统管理员和cgi作者的宠儿,就连数学家、遗传学家、新闻工作者,甚至企业管理者也都喜欢用perl。目前全世界至少有100万以上的程序员在使用perl来工作。 perl的标准库及各种文档都是由自愿者写的,但它也有核心开发队伍,即perlporters。这些成员都是无私奉献的,他们的任务也很简单,就是开发出大量的比市场上所出售的perl应用程序更好的产品,而且是免费的。 perl越来越得到大家的认可并非偶然,这是由于它具有很多其它语言所没有的优点。首先,用perl编写的程序不用编译,其程序可直接运行。最重要的是,它可以跨平台运行。同一perl程序可以在unix、windows、windows nt、mvs、vms、dos、macintosh、os/2、plan9及amigaos等操作系统上自由运行。其次,perl简单易学。它可以使复杂的事情变简单,简单的事情更简单。perl为程序员处理了很多东西,例如内存分配、碎片整理等。同时,perl程序也是相当简练的,一页的perl程序用其它语言可能要花几百甚至上千行代码。perl程序不必处理很多细节,这大大减少了程序的bug,增加了可靠性。第三,perl运行速度很快。第四,perl是面向对象的。第五,perl应用程序很多。cpan(comprehensive perl archive network)有很多perl应用程序。你可以在几分钟内找到自己想要的东西。这些程序都是来自世界各地的perl开发者提供的。最后,perl是自由软件,为程序员免费共享。 perl的版本演变 1988年1月,perl的第一个正式版本perl1发布;1988年6月,perl2发布;1989年10月,perl3发布;1991年3月,perl4发布;1994年10月,perl5发布。因此,perl5是最新的版本。但在perl5中,目前已发布perl5.6。(注:perl5.6的前一个版本是perl5.005,但由于perl的支持者们觉得perl5.1和perl5.001会使人误解,所以决定将版本的编号改为perl5.6,而不是perl5.006。对perl5.6的新修订版本称为perl5.6.1。) perl5和以前的版本有很大的区别,它的代码全部是重新写的。它最主要的改进有下面几点。一是语法更简单,定义变量更灵活。perl5的保留字只有原来的1/3,并且去掉了很多的不规则的语法。在perl5中,你可以像c语言一样自由地定义变量,甚至可以定义匿名的变量和子程序。二是模块化和重用性更好。perl标准程序库都根据模块来定义,每个程序包都可以很方便地使用。三是面向对象进一步加强,使用了“类”的概念,文件句柄也得到支持。四是同时执行多种dbm。一个perl程序可同时访问dbm、ndbm、sdbm和gdbm等。五是嵌入性和可扩展性更好。在perl5中,可轻松地把perl程序嵌入到c或c++程序中,也可借助xs(perl提供的一个转换器)将c或c++程序很方便地接入到perl程序中。另外,perl程序的易读性也有了明显的改进。 总之,perl5与perl4在程序代码上会有很大差别,但perl的每个版本都向下兼容,perl5也一样。所以,perl4的程序可以在perl5上安全运行。但perl的支持者们说,从perl5发布以后,他们就建议用户用perl5,因为他们不会对perl4再提供支持。 cpan提供大量perl标准程序 cpan是为使全世界perl爱好者更好地共享资源而建立的一个网站。它是包含所有perl资源的网站,在全世界有100多个镜像站点,在http://www.perl.com中有个虚拟接口。 cpan有个多路转接器,用户一旦访问该站点,它会自动选择一个离它最近的镜像。例如,你在法国,它就会自动帮你链接到法国当地的一个站点。当然,它也提供人工选择的功能。用户一旦选定,它便会记住,以后就直接进入该站点。这样的目的是为了使用户下载速度加快。正是这一功能,很多人将cpan称为“魔鬼站点”。 cpan最大的好处在于有关perl的内容它无所不包。它有两个大的目录,一是“脚本(scripts)”。在它里面,又有分类,如和web有关的脚本等。另一个是“模块(modules)”。这是个perl标准程序库,可以用这些模块来写cgi程序、图形程序、数据库或其它各种程序。在这里,你可以找到perl的faq,也可以找到perl的语法、perl的入门指南。最重要的是,在这里有很多可供自由下载的perl应用程序,供人们使用。这些应用程序都是即插即用的模块,并且都是可重用的源代码。正是由于应用程序的丰富且容易得到,才使得perl越来越为大家所了解和喜爱。 微软投资支持perl 三年前,微软公司就和activestatetool公司合作,投资开发perl应用程序,并且他们的大部分成果都开放源码,为大家共享。双方表明,这次合作的意图是改善perl在windows平台上的应用。activestate公司将为perl在windows平台上的应用加入很多以前所没有的特性,如fork、全面支持windows平台的统一编码标准等。 这是微软公司第一次向基于windows平台的开放源码程序投资。业内人士对这个消息反应不一。有人认为这是好消息,因为它可以使perl为更多人所知道,更有利于perl的发展。但也有人对此深表担忧,尤其是perl的支持者们更不认为这是个好消息。他们担心perl会在微软的干预下变成“microsoft perl”。对此,activestate的负责人认为,微软的目的是为了利用perl改善unix与windows之间协同工作的能力。他指出,perl与java是完全不同的事情,在unix与windows平台上,perl版本是统一的,它们的核心程序代码也是一样,因此不会出现unix与windows平台上的perl相背离的结果,也就是说不会出现微软的perl。同时,微软的有关负责人也说,微软的目的是最终结果,而不是想通过投资来控制perl的支持者们。 perl的使用者比java多 现在,java的呼声正一浪高过一浪,但在internet的世界里,有一点是没有争议的,即perl的使用者比java的使用者要多。perl可以跨平台运行,而java也是可以跨平台运行;perl是众多自愿者支持的自由软件,java是sun公司开发的纯商业软件。perl与java,哪一个好呢? 从经济角度看,自然是perl好。不花钱又能办事,谁都喜欢。在技术上是怎样的呢?事实上,任何一门程序语言,都有其不足与长处。一个程序员想试验哪种语言好,最好的方法是用两种语言写同一个程序,看看哪个更好写,哪个运行更快更稳定。 larry wall本人认为,perl在快速原型设计方面比java强得多,并且perl可以使系统运行失败的影响减小到最少。也有人认为,perl比java成熟得多,因为java的年龄毕竟不大,还没有经受过大的考验。 不过,不用担心perl会吃掉java,或者java会吃掉perl。这是两种基础不同的程序语言,它们会有各自的生存空间。 perl比gpl更开放 不像java,perl是免费的,没有私有产权这么一说,它的源代码和编译器都是免费、公开的。虽然gnu计划包含有perl,但并没有“gnu perl”这样的概念,因为perl不是自由软件联盟(freesoftware foundation)开发的,也不由它维护。事实上,perl比gnu gpl和al(artiste license)的条款更开放。larry wall及其支持者们允许用户把自己开发的perl程序销售,也可以去买市场上的perl应用程序。但一般来讲,用户总能从perl的维护者们所开发的程序里找到自己想要的东西,并且决不会比市场上出售的程序差。 自由软件的出现给internet世界带来很大的冲击。perl这个自由软件,已不仅仅是一种语言,它是internet文化的一部分,它用一种创造的思想去对待一切。 |
|||||||||||||||||