Perl的现状

Perl的现状

翻译:saladjonk
校者:fayland 出处:中国Perl协会 FPC(Foundation of Perlchina)
作者:Adam Turoff
原名:The State Of Perl
原文:http://www.perl.com/pub/a/2004/01/09/survey.html
发表:2004年1月9号
Perlchina提醒您:请保护作者的著作权,维护作者劳动的结晶。
我的一个同事最近向我问起了Perl的未来.特别的,他对我们是否有能力与现今最流行的两个平台,.net和Java比肩感到疑惑.我毫不迟疑的向他回答我对这个问题多年来一贯的答案:

“Perl 现在生机勃勃.Perl 6的开发小组也在努力的为下一个版本的Perl语法作定义. 另一个小组则在致力于Perl 6下一代的实时运行引擎Parrot的开发.Parrot被设计为支持像Perl 6一样的动态语言,比如Python,Ruby等,Perl 6还全面向下兼容Perl 5的代码.”

然后,我继续高兴的补充到:

Fotango正在邀请Arthur Bergman为Perl 5.10在Parrot上的重新实现而工作.

对于“Perl有前途吗?”,这是一个充分的回答。

然而,我的同事已经知道Perl 6和Parrot.Perl 6在3年半前就已经声势浩大的被宣布进行开发了.而Parrot,作为一个真正的开源工程,也在两年以前,2001年的愚人节被宣布进行。虽然 parrot已经取得了一些巨大的进展,但是现在,而且将来的一段时间都还不能被用于实际的应用.Parrot的近终极目标是在2004年7月的开源大会时能比CPython更快的执行Python的字节码.现在离这个目标还有相当的工作要做。而即使达到了这个里程碑式的目标,要再进一步让Parrot能替代像Perl等其他东西还需要更多必要的工作.
所以,先不管Perl 6和Parrot这些对perl的主要发展。Perl 真的有未来吗?

Perl的发展现状

Perl 6和Parrot并不能代表perl 的未来,发展他们只是我们的长期保险政策.当Perl 6被最终公布时,Perl 5已经用了接近7年了.当时的核心开发人员都基本离开了,现在换了另一批人。(当时我们没有考虑到开发的继承性,不过幸运的是这只是暂时的问题)Perl 5的源代码很复杂,使新的开发人员很棘手。如果没人来对Perl的核心解释器进行改进,Perl能否在未来10多20年继续作为一个开源项目将不清楚.

在2000 年,Larry Wall将Perl 6看成是保持Perl继续下去的方法,而且也努力使他的这个想法在Perl的世界里流传.那个时候的担忧是很明显的:如过足够多的一流黑客都去开发 Java或者是python,而不是Perl,那么我们多年来发展的并引以自豪的技术将被淘汰,而且不值一提.更进一步,—————,从逻辑极限上讲,所有的这些因素都将阻碍Perl的发展,是他成为过时的语言,不能解决将来的问题。

Perl 6被建议不应只作为Perl的新的实现,而应该被设计为一门连普通人都能扩展的语言.这能使不仅对使用Perl感兴趣,而且对从语言本身和编译/解释器方面维护和扩展Perl感兴趣的人大大增加.一个全新的开始能帮助Perl的开发者们把Perl带入一个与现在Perl 5完全不同的全新方向.

今天,3年多已经多去了,Perl的开发社团仍在积极的编写新颖的软件解决现实中个人和公司面临的问题.然而我们认为这些革新和激情还应该出现在别的地方. 我们不期望新的语言能带来一波新的创新的浪潮,我们希望在CPAN中出现大量的有革新的库和模块,也就是你现在能在Perl 5中使用的.

严格的说,Perl 6已经取得了他的预期目标:使Perl继续延续并且有趣,使创造性继续在perl的社区中活跃.

这对perl的将来意味着什么呢?首先,Perl 5的进一步发展是与Perl 6和parrot的开发并行的。现在perl 5有五个活跃的发展分支.最主要的分支,perl 5.8.x,仍然生机勃勃,Jarkko Hietaniemi在今年早期发布了Perl 5.8.0的升级版Perl 5.8.1,而且将此移交给了Nick Clark,他当前正在建造Perl 5.8.3。在十月,Hugo van der Sanden发布了最初的Perl 5.9.0的快照,此开发分枝将持续到Perl 5.10。还有这个夏天,Fotango宣布了Arthur Bergman将为Ponie开发出力,Ponie能把Perl 5.10的代码移值到Parrot上运行,以替换现在的引擎.Perl 5.12可能是第一个能直接在Parrot上运行的版本.

为解决那些使用旧的Perl版本的的人所面临的系统兼容性的问题,Rafael Garcia-Suarez正在开发Perl 5.6.2,也就是对Perl 5.6.1的升级,添加了对最新的操作系统和编译器的支持.Leon和Brocard正在对Perl 5.005_04做同样的升级.

Perl将向哪个方向发展呢? perl在不断的发展,而且是多个方向并行发展.对于日常的编程需求,以下三个版本的Perl将会帮助你把工作弄好:5.8.x,5.6.x和绝对需要的 5.005_0x.而对于那些自己能对Perl代码进行移植的人,5.8.x和5.9.x就足够了.对于疯狂工作的人,能够用Parrot解决很多问题,最后对于不要命的编程爱好者,Larry和他的助手正在开发强大的Perl 6,或许对你有帮助。

对Perl有两种说法:一种语言,或一种平台.但是Perl真正有趣的地方不是在那些语言还是平台的问题上,而在Perl的使用率上。

Perl的使用现况

快速判断Perl被使用情况的一种方法是看一看CPAN.最近我看了一下CPAN上的模块清单上可用模块的时间分布情况。 (单位:个)
    1995:30(0.51%)
    1996:  35 ( 0.59%)
    1997:  68 ( 1.16%)
    1998: 189 ( 3.21%)
    1999: 287 ( 4.88%)
    2000: 387 ( 6.58%)
    2001: 708 (12.03%)
    2002: 1268 (21.55%)
    2003: 2907 (49.40%)
    总数: 5885 (100.00%)
有趣的是,大约CPAN上可用模块的一般是2003年发布和更新的.简单的分析一下可以知道,大约85%的模块是自从Perl 6于2000年7月被宣布开工后发布和更新的。很明显,Perl发展没有陷入低谷,而是正在其时。如果以CPAN的活跃程度来看,Perl开发是非常健康的。

对CPAN上的更新率的考察不能告诉我们Perl的所有情况。它仅仅指出Perl的开发者们仍在积极的在CPAN上发布新模块.他们上传的很多都是新的有趣的模块,或者是对我们现在每天使用的模块中的错误进行了修正或是增加了一些新的特性.一些模块即使很多年不更新也很稳定,很有用。但是还有很多模块太老了,过时了,可笑的,应该被遗弃的.

一个悲观主义者看了看CPAN,看到了那些在早期被开发的被遗弃的版本,充满 bug的版本,可笑的版本和包.这些当然不是现在主要使用的.而一个乐观主义者则在CPAN上看到那些神奇有用的模块比(如:DBI,LWP, Apache等),而不太在意那些处于CPAN角落里面的不太有用的模块.

那种观点是正确的呢?看一下模块的清单,只有很少的,那些位于Acme命名空间的模块是供娱乐用的,,在5800的总数中只有85个,占不到CPAN总模块数的2%.当然在Acme命名空间外面也有一些模块是仅仅用与娱乐的.想Lingua: Perligata::Romana和Lingua::Atinlay::Igpay.总的说来供娱乐的模块在CPAN中是很少的.

但是又有多少CPAN中的模块是有用的呢?这依赖于你要解决的问题.让我们假设只有过去3年发布的模块是值得调查的,大约站CPAN总数的82%.再让我们假设Acme空间里面的所有模块都可以大胆被忽略.因为实际上供娱乐的模块数是我们忽略的Acme空间中模块的两倍.这样我们剩下CPAN中的78%,也就是大约4000个模块来统计.

这些模块中有多少是达到可以安全使用的质量呢?事实上,这很难说。这些模块囊括了一大块问题,包括(不仅仅限于这些)

Application servers 
Artificial intelligence algorithms 
Astronomy 
Audio 
Bioinformatics 
Compression and encryption 
Content management systems (for both small and large scale web sites) 
Database interfaces 
Date/Time Processing 
eCommerce 
Email processing 
GUI development 
Generic algorithms from computer science 
Graphing and charting 
Image processing 
Mathematical and statistical programming 
Natural language processing (in English, Chinese, Japanese, and Finnish, among others) 
Network programming 
Operating-system integration with Windows, Solaris, Linux, Mac OS, etc. 
Perl development support 
Perl/Apache integration 
Spam identification 
Software testing 
Templating systems 
Text processing 
Web services, web clients, and web servers 
XML/HTML processing 
以上还只是CPAN上可用模块含盖的一部分范围,这些让我们有足够的底气说:每天不说上千,也至少有上百个CPAN上的模块被用来解决日常生活中的问题. 这么广泛的使用不就是对这些模块的质量的最好的诠释吗?

Perl的其它使用情况

就像Larry在1998年的Perl大会上的演讲中提到的,Perl社区就好比是一跟洋葱,最重要的部分不是它的小小的核心,而是能找到更多东西的外皮.因此,Perl的真正的状态不是看它的解释器的发展或者是CPAN上又有了多少新的模块,而是看人们每天怎么使用Perl.

为什么我们每天都用Perl呢?因为perl能解决从小到大的问题.不像某些语言像C,C++和Java,Perl在让我们更快,更简单的写小的,看似琐碎的程序的同时,又能同样胜任编写大应用程序和系统.我们在写大的工程上应用的技巧和工具能同样用于编写小程序上.

关于写小程序

这里有一个常见的例子.假设我想看一看O`Reilly的perl资源页面,并且找出页面所有的链接.我的程序以载入两个模块开始,LWP::Simple用来取得资源页,HTML:LinkExtor来取得页面上的链接.
#!/usr/bin/perl -w

    use strict;
    use LWP::Simple;
    use HTML::LinkExtor;

    my $ext = new HTML::LinkExtor;
    $ext->parse(get("http://perl.oreilly.com/"));
    my @links = $ext->links();
接着,我开始设计一个网页扫描器或一个屏幕抓取器,只用用几个正则表达式和一些像grep,map,foreach一样的操作,我就可以链接的清单中提取出那些指向O`Reilly的数目的链接,或是那些指向Perl.com上新文章的链接.再添几行代码,我就可以把这些链接存储在数据库中(利用DBI,DB_File,GDBM,或者其它的永久存储库).

过去的这些年里面我写了(而且已经丢弃)很多这样的程序.他们都非常容易写,基本不到一页的代码.这说明了Perl和CPAN所能提供的承受能力.这也说明了一个程序员在很短的时间里用很少的努力能取得多少东西.

最重要的一点是:Perl允许我们用开发大应用程序和系统时的工具去写小的脚本和小的改进程序.不仅仅使我们能快而简单的解决普通问题,而且使我们能用其中一些工具和技术去解决其它的一大类的问题.更进一步,因为我们使用相同的工具,所以我们的改进程序能用于我们自己编写的大系统中.

关于编写大的项目

当然,保证Perl不只能用于写小的脚本是很重要的.用Perl写大的系统是完全的另一回事.在Perl的成功故事档案中有很多这方面的详细描述,包括了很多大系统,困难程序的描述.

有些高难度的系统在Perl的大会和与perl相关的邮件列表上引起的人们的广泛的关注,例如,亚马逊在线,Intenet上最大的零售商,使用HTML:Mason来对他们的网站进行移植.另外50个暂时的基于Mason的站点在www.masonhq.org上列了出来,包括Salon.com,AvantGo和DynDNS

Morgan Stanley这个网站是另一个被广泛使用Perl的网站.大约追溯到2001年,W.Phillip Moore谈到了Perl和Linux适合用于开发Morgan Stanley的底层部分.最近,Merijn Broeren详细描述了Morgan Stanley怎么样基于Perl来保持它的9000多台电脑不间断的运行.还描述了Perl这样被应用于各种全世界都在使用的程序.

ValueClink,一个专门制作Internet上高质量广告的网站,把perl用到了另一个方向.每天,ValueClick为超过一亿个横幅广告服务,确定每个广告因该发往哪里是要求十分精确的,而这是由一些成熟的Perl代码完成的.ValueClick还使用Perl从大量的注册数据中分析的有效的点击

Ticketmaster 这个网站向全球二十多个国家销售体育和娱乐方面的门票.每年,Ticketmaster向全球销售超过8000万张票.最近,Ticketmaster一天销售了一百万张票,而且大约一半是通过网站销售的.而Ticketmaster是基本上用Perl写的. 这些知是一些公司用Perl开发大程序和重要产品的例子.向四周问问,你会听到更多的.这些年,我在很多使用Perl来开发网络程序和网络服务系统的公司工作过.一些产品带来了数千万美圆的年收入.

很明显,Perl不只应用与写小的程序.

Perl使用的新情况

很多公司用Perl开发私有产品和基于Internet的服务程序来卖给客户.还有很多公司用perl来是他们的内部系统保持正常运转,通过这些自动化的过程来节约劳务费.

今天人们使用Perl的一个新的方面的开源的商业化.像Best Practical和Kineticode这样的公司用Perl来开发产品,通过培训,技术支持,个性化服务赚钱。他们的产品是公布源代码的,可以免费获得,很容易被扩展.同时大量的对附加服务的要求是公司能赚钱,从而继续维持开源产品的开发.

Best Practical Solutiongs公司开发了需求跟踪系统,通常被称为RT.RT是一个事务跟踪系统能够让各个小组协同他们的工作来处理用户的需求,如修改Bug。同时还能跟踪在每个任务上的行为.作为一个开源产品,RT从1996年就开始开发了,有很多的用户,包括在推荐书上列出来的。今天,RT还用与为Perl的 Bug跟踪服务,为CPAN的模块开发服务.很多组织依赖与他们在RT上保存的信息,有时候每天1000以上,每年300000以上的事情需要被跟踪解决.

Kineticode是另一个成功的开源商业公司,开发Bricolage 内容管理系统,一个与Perl相关的产品.Bricolage被用于一些大的网站,包括ETOnline和世界卫生组织等。最近,Howard Dean Campaign采用Bricolage作为他的内容管理系统来处理网站每天高达数百万次的内容更新,最顶峰的时候是这个数据的十倍!

还有一个例子是SixApart,曾经很流行的MovableType系统的开发者.SixApart为MovableType提供个人使用和非商业使用的免费许可.虽然MovableType是Perl写的,但是它不是私有软件.SixApart公司曾经设法用他们的基于Perl的产品赚钱。

这些是早期用Perl写的商业出售的软件。虽然这三个公司是最明显的,但是他们不是唯一走这条路的。

结论

当我的同事问我perl是否有未来的时候,我开始思考Perl的现在情况。他向我挑战让我回想以前想当然的回答:”当然Perl会有个美好的前途!” 和 “Perl的前途在Perl 6和Parrot!”,我很高兴他这样做。

今天,在Perl的世界中有很多活动,他们中的很多没有被人注意到。核心的开发正在以令人激动的步伐迈进。CPAN也在健康的发展.Perl为或大或小的程序提供了一个有力的环境.即使我们没有在2004年开到Perl 6最终发布,对perl 5我们仍有很多工作要做,而且很多Perl 5上的工作值得作。

然后就是这个引起这次调查投票的问题:Perl 能够和Jave和.NET平台并驾齐驱吗?很明显,当解决实际问题的时候,Perl和Jave及.NET一样有效.但是当谈到一个平台向其它平台的扩展,可能Perl不及.NET和JAVA.但是,当涉及到为解决问题要坐下来写代码的时候呢?可能要另当别论。

当然,Java和.NET利用他们的环境中各种手段来提高你的速度的时候。Perl的成功之处不是对其他语言的短处说这说那,他的成功之处是依是否帮助你做好工作而定的.

你可能感兴趣的:(应用服务器,python,ext,网络应用,perl)