This post a a Chinese translation of Guido van Rossums‘s article “Personal History – part 1, CWI” on his blog named “The History of Python”.
原文地址:http://python-history.blogspot.com/2009/01/personal-history-part-1-cwi.html
Python的早期开发始于位于阿姆斯特丹的一个名为CWI的研究机构。CWI是Centre for Mathematics and Computer Science的荷兰语拼写的首字母。CWI是个有趣的地方,它接受荷兰政府的教育部门和其它研究拨款,做学术等级的计算机科学和数学研究。任何时间那里都有很多博士生,老辈的人或许还能记得它的原始名称:数学中心。在这个名字下,最有名的发明或许就是Algol 68了。
1982年晚期我大学毕业后开始在CWI工作,在Lambert Meertens和Steven Pemberton领导的ABC小组当程序员。四、五年后ABC项目被终止,因为它缺乏显著的成就。然后我又到了Sape Mullender领导的CWI的Amoeba小组。Amoeba是一个基于微内核分布式系统,由CWI和阿姆斯特丹VU大学联合开发,由Andrew Tanenbaum领导。1991年Sape离开CWI去Twente大学当教授,我结束了CWI的由Dick Bulterman领导的一个新生多媒体小组的工作。
Python是我在CWI的一个直接产品。正如我将会在后面介绍的那样,ABC给了我Python的关键灵感、Amoeba给了我马上的动力、多媒体组让它成长。然而,就我所知,没有任何一笔CWI的基金是正式赞助Python的。事实上,Python仅仅是Amoeba和多媒体小组的一个重要工具。
我最初想创建Python的动机是Amoeba项目需要一个高级语言。我意识到用C语言来开发系统管理工具太费时间了。而且,在Bourne shell下做这个不能保证在其它的shell下也能正常工作。最重要的是作为一个完全新设计的分布式微内核系统,Amoeba的原子操作和其它能运行Bourne shell的传统操作系统相比是非常不同(而且更出色)的。所以我们需要一个语言来作为“C语言和shell之间的桥梁”。很长一段时间里,这就是Python的主要任务。
在这一点上,你或许会问“为什么不移植到已经存在的语言上?”我的观点是,那个时候没有许多合适的语言。我比较熟悉Perl 3,但它与UNIX的联系比与Bourne shell还要紧密。我也不喜欢Perl的语法──我对编程语言的口味受Algol 60样式的语言比如Pascal、Algol 68(都是我早期学的语言)和ABC这个我花费了生命中四年时间的语言影响很大。所以我决定设计一门我自己的新语言,借鉴所有ABC中我喜欢的东西并且修正我意识到的所有问题。
我第一个决定修正的是名字!就像事实那样,ABC小组没有给他们的语言取好名字。他们最初的名字是B,后来被放弃,因为会和另一个也叫B的语言混淆,而且那个B更古老,也更有名的。无论如何,B代表只是一个意义上的工作标题(这是一个玩笑,B是包含语言名字的变量名称,因此用斜体)。小组曾经举办过一个公开竞赛来征一个新名字,但没有一个是满意的。最后选用了内部的备用方案。这个名字想传达一个让语言和字母表一样简单的想法,但它从来没有让我感到信服。
所以,没有在上面分析名字问题,我决定在下面分析它。我选择了第一个想到的名字,从Monty Python’s Flying Circus来的,那是我最喜欢的喜剧演出之一。这点引用让我感觉非常适合一个“实验项目”。“Python”一词也是一个好记的不错的名字,而且也适合用名人命名语言的传统,就像Pascal、Ada、Eiffel那样。Monty Python团队或许在科技人群中不那么著名,但他们是极客们的最爱。它也同样适合CWI的传统──Amoeba小组用电视节目的名字来命名语言。
很多年我都抵抗住要把语言和蛇联系起来的诱惑。当O’Reilly想在他们的第一本关于Python的书《Programming Python》的封面上放上一条蛇的时候,我最终放弃了。用动物图像做书籍封面是O’Reilly的传统,如果要在Python的书的封面上印上动物,蛇是最合适的了。
决定了名称后,我于1989年十二月末开始了Python的工作,在1990年的头几个月有了一个可以运行的版本。我没有记笔记,但我清楚的记得我为Python写的第一份代码是一个我称作“pgen”的简单的LL(1)语法分析生成器。这个语法分析生成器仍然是Python代码的一部分,而且或许是所有代码中需要修改的最后一部分。Python的早期版本被CWI的一群人使用,但在1990年时还仅限于Amoeba小组内部。除我之外的核心开发者是我的同事Sjoerd Mullerder(Sape的弟弟)和Jack Jansen(在我离开CWI多年后他仍然领导Macintosh移植的开发)。
在1991年二月20日,我第一次通过alt.sources新闻组向世界发布了Python(我用uuencode分成21个包发布然后用户要用uudecode来合并成一个压缩的tar文件)。这个版本被标记为0.9.0,几乎是原字照抄了当时MIT给X11项目用的许可证,署名“Stichting Mathematisch Centrum”(CWI的上级组织)作为法律实体。所以,就像我写的其它东西一样,Python在Eric Raymond和Bruce Perens在1997年末推广“开源”一词之前就开源了。
当时立刻就有了很多回复。在这些回复的鼓励下,我在后几年定期的发布新版本。我开始使用CVS来跟踪更新和更容易的管理Sjoerd和Jack贡献的的代码(CVS最初是Dick Grune开发成一组shell脚本,他是ABC小组的早期成员)。我写了FAQ,定期发布到某个新闻组,来回答在web上常见的问题,并建立了邮件列表。1993年三月comp.lang.python在我的鼓励下建立了,但不是我亲自参与的。新闻组和邮件列表通过现在还在的一个双向网关联系在一起,尽管现在是mailman的一个功能了──mailman是一个优秀的开源邮件列表管理器,它本身也是用Python写的。
在1994年夏天,新闻组上的一篇名为“如果Guido被车撞了”的文章引起了关于成长中的Python社区对我本人贡献的依赖的讨论。讨论以Michael McLay邀请我到NIST做两个月的客座研究院而告终。NIST是the US National Institute for Standards and Technology(美国国家标准及技术研究所)的缩写,它的前身是National Bureau of Standards(国家标准局),位于马里兰州的Gaithersburg。Michael在NIST有许多“客户”对在标准相关的项目中使用Python感兴趣。我在那里帮助他们提高Python技术,并为他们的需要对Python做可能的改进。
第一次Python研讨会就是我在1994年十一月在那里召开的,NIST程序员Ken Manheimer提供了重要的协助和鼓励。当时有大约20名听众,其中半数仍然活跃在Python社团中,而其中的几人已经成为了开源项目的主要领导人(Jim Fulton领导了Zope,Barry Warsaw领导了GNU mailman)。在NIST的支持下,我也在Tom Christiansen组织的大约400人参加的Usenix Little Languages会议上做了主题演讲。Tom Christiansen是一位开明的Perl拥护者,他把我介绍给Perl的创始人Larry Wall和Tcl/Tk的作者John Ousterhout。
下一篇内容:我是如何在美国找到工作的……