Python简史:一个圣诞节的“私活”项目,如何改变了编程世界?
本文永久链接 – https://tonybai.com/2025/08/30/python-an-origin-story
大家好,我是Tony Bai。
在编程语言的星空中,很少有哪颗星像Python一样,以如此温和而坚定的姿态,从一个不起眼的个人项目,成长为照亮地球未来的科技灯塔。如今,当我们谈论数据科学、人工智能时,Python几乎是绕不开的默认选项。但这一切的起点,竟源于一位程序员在阿姆斯特丹的圣诞假期里,为了“打发时间”而开始的一个“私活”项目。
近期,一部名为《Python: The Documentary》的纪录片,通过对创始人Guido van Rossum及众多早期核心贡献者的访谈,为我们揭开了这段波澜壮阔的起源故事。这既是一部技术编年史,更是一部关于设计哲学、社区力量、时代机遇与人性光辉的启示录。
本文将沿着这部纪录片的脉络,和大家一起穿越回那个个人电脑尚不普及、Usenet是唯一交流渠道的年代,探寻和复盘Python成功的真正基因。
孕育:一次对“专家思维”的反叛
故事始于80年代的荷兰CWI(国家数学和计算机科学研究中心),一个诞生了Algol系列语言的学术圣地。当时,编程语言的设计理念被一种根深蒂固的经济关系所主导:计算机极其昂贵,而程序员相对廉价。因此,语言被设计得尽可能贴近硬件,以榨干机器的每一分性能,至于程序员需要花费多少时间去理解和编写,则在其次。
正是在这种背景下,CWI的ABC语言项目应运而生。项目成员Lambert Meertens在尝试向艺术家教授编程时发现,现有的语言充满了对底层硬件知识的隐式要求,这对非技术背景的人来说是一堵无法逾越的高墙。ABC的目标,就是创造一门“易学、易教、易用”的语言,让初学者无需关心“那些凌乱的硬件细节”。
Guido van Rossum,当时还是一名年轻的程序员,被雇佣来将ABC的原型实现为一个完整的系统。他在这门语言上投入了三年半的心血。然而,ABC生不逢时。在那个没有互联网的年代,分发软件需要邮寄软盘,ABC几乎没有触及到它的目标受众,并最终被CWI高层扼杀。
这次失败的经历,却在Guido心中埋下了一颗种子。
诞生:在C与Shell之间的“甜蜜点”
项目被砍后,Guido被调往一个名为Amoeba的分布式操作系统项目。他的任务是为这个系统编写大量的用户应用程序。他很快发现,使用C语言来完成这些任务极其痛苦和低效,而使用Shell脚本又缺乏足够的编程能力。
“天啊,如果我们能用ABC来写这些工具就好了,”Guido回忆道,“每个工具可能只需要半页代码,我几周就能搞定,而不是看起来要花上好几年。”
但他同样意识到,ABC过于抽象,它刻意回避了与文件系统、进程等操作系统底层交互的能力。此时,一个清晰的需求浮现了:市场需要一种能够弥合C语言的强大能力与Shell脚本的易用性之间鸿沟的语言。
当时,Perl是这个生态位的有力竞争者,但Guido和他的同事们并不欣赏它。“我们觉得它作为一门编程语言并不好,几乎和Basic一样糟糕,只是糟糕的方式不同。” 正是在这种“一个能打的都没有”的背景下,Guido做出了一个改变历史的决定。
1989年的圣诞假期,他没有选择休息,而是开始了自己的“私活”项目:创造一门属于自己的编程语言。
设计哲学:“禅”的雏形
Guido的新语言,自然地继承了ABC的许多思想遗产,其中最著名、也最具争议的,就是使用缩进来组织代码块。但他同样抛弃了ABC中那些他认为不切实际的部分,朝着更务实的方向前进。
更重要的是,Python从诞生之初就树立了一种与当时主流脚本语言Perl截然相反的哲学。Perl的座右铭是“条条大路通罗马”(There’s more than one way to do it),鼓励天马行空的语法和技巧。而Python则悄然确立了自己的核心原则:“应该有且最好只有一种显而易见的方法来做事”(There should be one– and preferably only one –obvious way to do it)。
这种对明确性(explicitness)和可读性(readability)的极致追求,后来被社区核心成员Tim Peters总结为著名的《The Zen of Python》。当人们困惑于Python的设计哲学时,Tim Peters用诗一般的语言给出了答案:
- Beautiful is better than ugly. (优美胜于丑陋)
- Explicit is better than implicit. (明了胜于晦涩)
- Simple is better than complex. (简洁胜于复杂)
- Readability counts. (可读性很重要)
这可不是什么漂亮的口号,而是真正指导Python语言演进的根本大法。一位科学家用户在纪录片中分享道:“我用Perl处理数据,一年后回来看代码,完全不知道自己写了什么。而Python的代码,一年后我依然能读懂。” 这正是Python设计哲学的胜利。
社区的黎明:从Usenet的21个碎片开始
当Guido将这个名为“Python”(源自他喜爱的喜剧团体“Monty Python”)的语言展示给ABC的同事时,并非所有人都表示欢迎。他的导师Lambert Meertens的第一反应是输入一行代码,让解释器崩溃了,这让Guido备受打击。但第二天,他就修复了这个问题。这种务实、快速迭代的风格,贯穿了Python的整个发展历程。
很快,Python在CWI内部吸引了第一批真正的用户,Sjoerd Visscher和Jack Jansen。他们成为了Guido最初的反馈来源,“你只需要对他喊一声‘嘿,Guido!’”。一个微小的、紧密的社区开始形成。
历史的关键转折点在于CWI的开明决定:他们允许Guido以开源的形式将Python发布到全世界。“他们不知道这会成为一个巨大的成功,这很好,”Guido笑着说,“如果他们知道了,他们可能会阻止,那它就永远不会成功了。”
在那个前互联网时代,发布软件是一项艰苦卓绝的任务。团队必须将源代码打包、压缩、转换成ASCII编码,再分割成21个符合Usenet帖子大小限制的碎块。用户则需要手动下载所有碎片,再反向执行所有步骤。然而,Guido充满诱惑力的“预告”吸引了足够多的早期信徒,他们不辞辛劳地完成了这套复杂的“解压”流程。很快,来自世界各地的邮件和Usenet帖子开始涌入,一个全球性的社区就此诞生。
成长与迁徙:从NIST车间到成为“仁慈的独裁者”
Python的早期发展离不开美国国家标准与技术研究院(NIST)的一群爱好者。他们组织了第一次Python研讨会,只有20人参加,在一个“没有窗户的政府办公楼”里。正是这次会议,奠定了Python社区开放、协作的基调,也催生了Guido著名的头衔——“仁慈的独裁者”(Benevolent Dictator for Life, BDFL)。
这个听起来有些戏谑的称号,精准地描述了Guido在社区中的角色:他欢迎所有人的想法,但保留对语言发展的最终决定权。这种模式在混乱的开源世界中提供了一种宝贵的稳定性和方向感,确保了Python在演进过程中没有因为无休止的争论而偏离其核心哲学。
随后,Guido移居美国,加入了CNRI(国家研究创新公司),这是他第一次可以全职投入到Python的开发中。在这里,他不仅获得了稳定的支持,还拥有了python.org域名,为社区建立了一个正式的家园。(一个有趣的插曲是,他们当时没有注册python.com,导致该域名多年来被一个成人网站占据。)
走向主流:科学计算与Web浪潮的双重助推
Python的崛起并非一帆风顺,而是踩中了数次技术浪潮的节拍。
-
科学计算社区的拥抱:最初,科学家们使用Perl或MATLAB等工具,但Perl代码难以维护,而MATLAB是昂贵的商业软件。Python凭借其开源属性、出色的可读性和通过C扩展实现高性能计算的能力,迅速赢得了科学计算领域的青睐。NumPy、SciPy等库的出现,为Python构建了坚实的护城河。Guido本人虽然不是科学家,但他对社区需求的开放态度,使得Python能够不断演进,满足这个群体的需求。
-
互联网泡沫与Web开发:2000年初,随着Web的兴起,开发者需要一种能够快速构建网络服务的语言。相比于Java的笨重和Perl的混乱,Python的“胶水语言”特性使其成为理想选择。Dropbox和YouTube等早期巨头的成功,雄辩地证明了Python在生产力上的巨大优势。Dropbox的创始人Drew Houston回忆道:“Google有一个百人C++团队在做视频网站,却始终追不上那个叫YouTube的小团队,后来他们发现,后者只有几个用Python的工程师。”
3.0之痛:一次差点撕裂社区的“大分裂”
当一门语言获得巨大成功后,如何处理历史包袱就成了一个棘手的问题。Python 2在Unicode和bytes处理上的混乱设计,成为了Guido心中的一根刺。2008年末,Python 3.0发布,这是一次不向后兼容的重大升级,旨在从根本上解决这些历史问题。
团队乐观地估计,社区只需要几年时间就能完成过渡。但他们严重低估了现实的阻力。对于拥有数百万行Python 2代码的公司(如Dropbox)来说,迁移成本是天文数字。许多核心库的维护者也迟迟不愿跟进,导致生态系统出现严重割裂。
这场“2 vs 3”的分裂持续了近十年,一度让社区陷入绝望。一些著名的开发者公开表示“不会迁移”,认为Python 3的收益不足以弥补其带来的痛苦。
最终,是时间、工具和榜样治愈了这场创伤。2to3、six等兼容库的出现降低了迁移门槛;Instagram等大型公司率先完成迁移并分享了性能提升的成功经验,给了社区巨大的信心;而Python 2.7在2020年正式停止支持,成为了压倒骆驼的最后一根稻草。
这场痛苦的经历给Guido和整个社区留下了深刻的教训:“Python可能已经太庞大了,再也无法承受一次这样的迁移。”如今,“永远不会有Python 4”已经成为社区的共识。
文化的胜利:Python的真正护城河
回顾Python的成功之路,语法和功能固然重要,但真正让它与众不同的,是其独特而强大的社区文化。
- 开放与包容:从Guido亲自指导一位毫无开源经验的女性开发者Mariatta Wijaya成为核心贡献者,到PyLadies社区的兴起,Python社区在推动多元化和包容性方面做出了巨大努力。这使得Python不仅仅吸引了传统的白人男性程序员,还吸引了来自不同背景、不同领域的广大人群。
- 幽默与人文关怀:从以“Monty Python”命名,到import this会打印出《The Zen of Python》,再到用“spam, spam, spam”作为会议T恤的口号,Python社区始终保持着一种轻松、幽默的氛围。这让参与开源不再是一件枯燥严肃的事情,而是一种有趣的社交活动。
- “我为语言而来,为社区而留”: 这是前PyCon主席Jesse Noller的名言,也是无数Python开发者的心声。PyCon不只是一个技术会议,更像一个大型的家庭聚会。人们在这里交流思想,结交朋友,共同塑造着这门语言的未来。
小结:一场精心策划的“意外”
Python的成功,是一系列因素的完美风暴。它诞生于一个恰当的时机,满足了市场对一种更人性化、更高生产力语言的渴求。它的设计哲学——简洁、明确、可读——被证明是应对大型项目和团队协作复杂性的最佳解药。它抓住了一次又一次的技术浪潮,从科学计算到Web开发,再到今天的人工智能。
但最重要的,是Guido van Rossum和整个社区所展现出的务实、开放和人文精神。他们愿意为了长远的目标而承受短期的痛苦(Python 3迁移),也愿意为了让社区更美好而不断反思和改进。
这个始于圣诞节的“私活”项目,最终没有成为又一个被遗忘在历史尘埃中的ABC。它活了下来,并茁壮成长,因为它不仅是一门优秀的编程语言,更是一个充满活力的、不断进化的生命体。它的故事,至今仍在激励着每一个开源世界的参与者。
想系统学习Go,构建扎实的知识体系?
我的新书《Go语言第一课》是你的首选。源自2.4万人好评的极客时间专栏,内容全面升级,同步至Go 1.24。首发期有专属五折优惠,不到40元即可入手,扫码即可拥有这本300页的Go语言入门宝典,即刻开启你的Go语言高效学习之旅!
商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。
© 2025, bigwhite. 版权所有.
Related posts:
评论