Why Python

发表于:2007-07-04来源:作者:点击数: 标签:
终于把一切安顿好,可以安心做自己喜欢的事了,闲话少说,先履行自己一个多月前的承诺--翻译《WhyPytyon》,其实虽然这段时间很忙但我还是抽出时间先翻译了一部分,这也是我的第一篇译文,不知道其他人能不能读懂,不过我以后会一直维护的,所以希望读到的人也
终于把一切安顿好,可以安心做自己喜欢的事了,闲话少说,先履行自己一个多月前的承诺--翻译《Why Pytyon》,其实虽然这段时间很忙但我还是抽出时间先翻译了一部分,这也是我的第一篇译文,不知道其他人能不能读懂,不过我以后会一直维护的,所以希望读到的人也能给我一些建议,特别是加了*FIX ME*的地方,Thanks^_^

     在提取出这篇自述之前,Cardinal Biggles让Eric坐在舒适的椅子上思考了超过4小时…
    我第一次看到Python是一次偶然,而那时我并不十分喜欢我所看到的。那时是1997年初,Mark Lutz 的书 Programming Python 刚由O'Reilly & Associates出版。在由一些神秘的捐助人经过一些我也无法理解的随机过程筛选之后,O'Reilly的新书会不时被送到我家。
其中一本就是Programming Python。由于我喜欢收集不同的计算机语言,我发现它比较有趣。我知道数十种通用语言,把写编译器和解释器当作乐趣,也曾自己设计过许多种专用语言和标记形式语言。在我写这篇文章时我完成的最近一个项目是一个用来操作PNG(Portable Network Graphic)图像的叫做SNG的专用语言。感兴趣的读者可以参考SNG的主页::URL::javascript:window.open(this.src);" style="CURSOR: pointer" onload="return imgzoom(this,550)">http://www.catb.org/~esr/sng。我也曾在我的Retrocomputing  Museum网页(::URL::http://www.catb.org/retro.)上写过一些罕见的通用语言的实现。
我已经听说过许多关于Python的评论,知道它是一种现在所谓的“脚本语言”,一种内建内存管理和优秀的调用或配合其它程序的机制的解释型语言。于是,带着头脑中一个最迫切的问题:“Python什么地方优于Perl?”我深入研究了Programming Python。
众所周知,Perl是现代脚本语言的始祖。它在很大程度上取代了shell成为用于系统管理的脚本语言的最佳选择。 这一部分归功于它易于理解的Unix库和系统调用,一部分归功于活跃的Perl社区构建的巨大的Perl模块集合。这个语言通常被认为是网上85%的内容背后被使用的CGI语言。它的创建者Larry Wall被公认为开源社区最重要的领导人之一,在黑客名人堂上仅次于Linus Torvalds和Richard Stallman。
那个时候,我已经用Perl做过不少小型项目。我发现这个语言非常强大,虽然它的语法和其它一些方面显得过于特别,而且容易给粗心的人带来麻烦。在我看来,Python作为另一种脚本语言似乎还有不小的山峰需要翻越,因此在我读《Learning Python》的时候,我首先注意了它和Perl的区别。
我快速地浏览了大家都注意到的Python的第一个新奇的特性:空白符号(缩进)在这个语言的语法里有明确的含义。这个语言不同于C和Perl中使用括号的语法。取而代之的是,缩进的改变为语句划分了界限。同时,和大多数黑客最初了解这一特性时一样,*FIXME我也经过了反复回味才理解它。*
作为一个老资格的程序员,我有幸在20世纪70年代有过数月在批处理的FORTRAN下编程的经验。虽然大部分的黑客并没有经历那个时代,但我们的文化中还是保留了一些对于那些丑陋的 *FIXME 固定格式(原文为fixed-field) *语言的记忆。事实上,那时就被用来形容最新的使用了在Pascal和C中面向Token语法的语言的词汇—自由格式(Free Format)早已被遗忘,早在十年以前,几乎所有的语言就被以这种方式设计。对于Python的这一特性,我们并不能责怪任何人,*FIXME for initially reacting as though they had unexpectedly stepped in a steaming pile of dinosaur dung.*
那当然是我个人的感觉。我并不是很感兴趣地浏览了剩下的对这个语言的描述。除了比起Perl十分整洁的语法和对按键和菜单等GUI元素的良好支持外我并没找到其它推荐Python的理由。
我把书放进了书架,心想我以后或许会用Python做一些以GUI为中心的小型项目—仅仅为了确定我确实掌握了这门语言。而那时我并不认为这门语言能对Perl构成威胁。
许多其他的事情让我把那件事抛在了脑后。1997年剩下的时间对我而言具有重大意义,这一年我创作并发表了<<大教堂与市集〉〉。但我也抽时间写了一些Perl程序,其中两个也具有一定规模和复杂度。其中之一是keeper, 一个现在还被用来在Metalab的软件归档中对提交的注册进行辅助记录的软件。你在::URL::http://metalab.unc.edu/pub/Linux/!INDEX.html中看到的网页就是由他生成的。另一个,anthologize,则被用来为Linux  文档工程的HOWTOs的Linux第六版自动生成PostScript。这两个程序都能在Metalab得到。
Writing these programs left me progressively less satisfied with Perl. Larger project size seemed to magnify some of Perl's annoyances into serious, continuing problems. The syntax that had seemed merely eclearcase/" target="_blank" >ccentric at a hundred lines began to seem like a nigh-impenetrable hedge of thorns at a thousand. ``More than one way to do it' lent flavor and expressiveness at a small scale, but made it significantly harder to maintain consistent style across a wider code base. And many of the features that were later patched into Perl to address the complexity-control needs of bigger programs (objects, lexical scoping, ``use strict', etc.) had a fragile, jerry-rigged feel about them.
在写这些程序的过程中我渐渐对Perl产生了不满。更大规模的项目似乎把Perl的不足之处放大成了严重的,不断出现的问题。和(to be continued...)

原文转自:http://www.ltesting.net