写点什么

从 3 个月业余项目到全球第一语言!Python 之父坦言:那些年靠“将就”撑起来的代码,如今都真香了

  • 2025-06-17
    北京
  • 本文字数:3761 字

    阅读完需:约 12 分钟

大小:1.63M时长:09:30
从 3 个月业余项目到全球第一语言!Python 之父坦言:那些年靠“将就”撑起来的代码,如今都真香了

Guido van Rossum 在 1989 年圣诞假期期间,着手开发 Python,仅仅用了三个月就让 Python 有了雏形。如今,这门语言不仅成为全球最受欢迎的编程语言之一,甚至超越了昔日霸主 Java。

 

在 2025 年 5 月的 Tiobe 编程语言流行度指数中,Python 的得分达到 25.35%,创下历史新高。自打 2001 年 Java 称霸以来,还没哪个语言在 Tiobe 榜单上达到过这么高的人气。而在 PyPL 编程语言流行度指数中,Python 更是以 30.41% 的搜索份额遥遥领先,几乎是 Java 的两倍。

 

然而,在这门语言风光无两的 35 年后,Python 的创始人却抛出了一个引人深思的问题:“‘Worse is better’(差即是好)现在还适用吗?”Van Rossum 坦言,这与其说是一个严肃的提案,不如说更像是一场“吐槽”,旨在“激发核心开发者们的一些思考”。

 

“当年写 Python 的时候,我选择了将就”

 

今年五月的 Python 编程语言峰会上,Guido van Rossum — Python 的创造者本人,无疑是大家最期待的面孔。他出现后直截了当地抛出了一个问题:“‘Worse is better’(差即是好),这套理论现在还管用吗?”

 

Guido 先回顾了 Python 早期 35 年的开发经历。他提到,当年自己几乎只用 UNIX,自然而然地,Python 也深受 UNIX 精神的影响,尤其是其中的 “worse is better” 理念。

 

时间回到上世纪 80 年代末,Guido 在荷兰的 CWI 研究中心参与了一个名为 Amoeba 的分布式操作系统项目。这个项目的目标是让整个计算机网络像一台单一的机器一样运作。

 

“我们希望 Amoeba 能自举(self-hosting),但这需要大量用户级工具,如编辑器、邮件客户端等。由于 Amoeba 与 Unix 的文件系统模型完全不同,现有工具无法复用,只能用 C 慢慢重写,进展非常缓慢。”

 

面对这一挑战,Guido 开始思考是否有更高效的方法来开发这些必要的工具。他认为,与其继续用 C 语言编写,不如直接设计一门新的语言来加速开发进程。他想到了自己之前参与过的 ABC 语言项目。ABC 语言结构优雅,特别适合处理用户数据,并且拥有列表和字典等强大的数据结构。然而,它过于抽象,无法直接与操作系统进行交互,更像是一种电子表格语言。

 

因此,在 1989 年的圣诞假期期间,Guido van Rossum 着手开发一门新语言。这门语言的灵感来源于 ABC,但更侧重于与操作系统进行交互。他将这个项目命名为 Python,这个名字来源于他喜爱的英国喜剧节目《Monty Python's Flying Circus》。

 

假期结束后,Guido 仍在业余时间持续推进 Python 的开发。特别是在早期,Guido 几乎包揽了所有代码工作。

 

“我白天做本职工作,晚上或有空就写 Python。三个月后,我已经可以跟别人演示:‘看,这就是我做的语言。’它能交互式运行代码、赋值打印变量、定义函数、创建并遍历数组。”

 

“对我来说,‘worse is better’ 在很长一段时间里确实非常奏效。”如今,他 Guido 回忆道。他还举了很多 Python 的“糟糕设计”:比如没有长整型、依赖 C 的 stdio 实现、甚至一开始连类都没有。

 

但正是这些“简陋”的选择,让他能“在三个月内把语言跑起来”。他说:“语言的语法和结构,我其实并没有深入推敲,很多地方直接照搬了 C 和 ABC。”

 

在软件设计领域,存在两种截然不同的哲学取向。

 

一派以 MIT/Stanford 为代表,强调“做正确的事”(The Right Thing)。Common Lisp、CLU、Scheme 等语言都深受这一哲学的影响:注重形式逻辑、追求优雅和完整。与之相对的是另一种路径,即 “Worse is Better”。这一思想源自 Unix 与 C 传统。

 


“Worse is Better”的核心哲学是:优先追求实现上的简洁性,而非完美。早期的 Unix 和 C 编译器正是这一思想的产物——它们结构简单、资源消耗少,能在不同平台上轻松移植运行。这种“够用就好”的策略,使得它们不仅能运行在小型计算机上,也能适配大型系统,展现出极强的可移植性。

 

这种做法也被称为“新泽西方法”:重点不是寻找最优解,而是先构建一个“能用、能传播”的系统。一旦系统达到“足够好”的门槛,就有可能像病毒一样迅速扩散。用户会逐渐适应它的不完美,开发者社区则可以在此基础上持续改进,逐步逼近理想状态。

 

这套方法通常遵循这样的路径:

  1. 首先构建一个跨平台、资源消耗低的基本实现;

  2. 把这个“次优解”快速推向用户;

  3. 在广泛采用的基础上,持续增强功能和性能。

 

“Worse is Better”的提出者 Gabriel(Richard P. Gabriel,1949 年出生,美国计算机科学家,以在 Lisp 编程语言方面的贡献闻名)其实也并未否定 MIT 派的“正确主义”理念。他指出,这种模式更适合构建庞大复杂的单体系统,或像钻石般精致的小型系统。然而,这类系统往往需要漫长的设计周期和强大的硬件资源,难以在早期计算资源有限的时代广泛推广。

 

相比之下,“Worse is Better” 更具现实主义精神。它强调快速构建、简洁实现,从“够用”出发,逐步演进。这一理念不仅推动了 C 和 Unix 的崛起,也启发了后续如 Web、JavaScript、Rust、React 等技术生态的发展路径:先做出最小可用系统,再在实际使用中不断打磨。

 

“今天的 ‘worse is better’ 还成立吗?”

 

对 Python 而言,“Worse is Better” 的理念似乎得到了验证,那些为了快速迭代而做出的早期妥协,最终也都被时间一点点补上了。

 

作为一个完全的业余项目,Python 于 1991 年 2 月发布了第一个版本。Guido 很快收到大量积极、实用的反馈,项目也因此进入了快节奏的迭代周期:频繁发布新版本,不断改进语法、扩展标准库、修复 Bug。Python 的社区也随之壮大,越来越多机构开始在生产环境中依赖它。

 

“这些年来,我当年偷的每一个懒,最终都被补上了。”比如哈希表的实现“被重写了两次”,垃圾回收器现在“几乎能填满整套系统”,测试用例也“堆了一大堆”——而最早的时候,“我们连测试都没有。”Guido 在大会上表示。

 

“在那个时代,‘worse is better’ 是 Python 得以流行的关键。”他说,“我根本耗不起三年做语言设计,还没人用、也没人夸我一句。”事实上,从动手写代码到第一次发布,前后不到一年。“发布前几乎没有修什么问题,除了类——那还是一个实习生加进去的。”

 

“[Python] 并不完美的事实,反而鼓励了很多人参与进来。”他回忆说,当时的代码都很简单直白,没人想着做什么性能优化。这让早期的贡献者迅速产生了归属感,“这门语言也成了他们自己的孩子。”这些人后来也在各自的公司里积极推广 Python。

 

那么,“今天的 ‘worse is better’ 还成立吗?”Guido 将早期开发节奏和现在作了对比:“现在的新功能,往往需要大厂资助的团队投入数年时间才能推出。”

 

比如静态类型系统,“得理解非常深奥的类型系统理论,几乎得有学术背景。”而且这还不仅是 Python 自身的复杂度问题,“像 numpy 这样的项目,也全靠专职维护者撑着。”

 

“我们现在的社区很大,但真正能做出实质性贡献的人其实并不多。”Guido 反问:现在的贡献者是否非得“写出一份完美的 PEP,或者一个能直接部署的原型”?

 

他怀念过去那种“先把功能做出来交给社区,后面再慢慢完善”的开发节奏。

 

“难道我们真的要放弃 ‘worse is better’,追求每一件事都尽善尽美?”他说,“那样挺可惜的。”但他也承认,“我不知道该怎么改变现在的状况。”毕竟,核心开发者也担心发布新功能后会破坏已有代码。

 

让更多人走进 Python

 

谈及其他项目时,Guido 还特别提到了 PyO3,分享了 Rust 与 Python 的组合开发“就是走的 ‘worse is better’ 路线:先把能跑的核心特性搭起来,再慢慢打磨。”他停顿了一下:“听起来比做核心 CPython 有意思多了。”

 

随着语言生态的演进,越来越多的 Python 开发者开始关注如何在现有项目中引入 Rust。一项关键技术是 PyO3,它允许开发人员用 Rust 编写 Python 模块,将 Python 嵌入到 Rust 应用程序中,并与 Rust 中的 Python 代码进行交互。 

 

据其维护者 David Hewitt 的说法,PyO3 定义了所有 Python 解释器的公开 API,让 Rust 能够把它们视为 C 的外部接口,其目标是让 Rust 开发者只需要专注于自己的业务逻辑,而不需要考虑底层细节。

 

David 认为,Rust 的优势体现在人才生态上,“许多年轻程序员正在从 Rust 起步”,如果 Rust 获得投资,这可能会“扩大人才库的规模”。

 

不过,引入 Rust 并非没有代价。从单一语言到双语言开发,会带来显著的技术和组织复杂度上升,一个可参考的案例是“Linux 内核项目推进 Rust 的引入”。尽管 Rust for Linux 项目在技术和社区管理上都极具挑战,甚至遭遇部分核心开发者的抵触,但它还是在跌跌撞撞中被往前推进,其重要原因就是 Rust 能为 Linux 吸引来一批新一代的开发者。

 

另外,针对 Rust 这门语言本身,Python 之父 Guido 补充道:“当然啦,我可能永远不会学 Rust……也许该试试。

 

最后他总结道:“也许我们真的应该朝这个方向多走一步:让更多社区成员有参与感,让他们也能关心这门语言的发展。”

 

参考链接:

https://www.youtube.com/watch?v=_7UWcOEpoCI

https://www.infoworld.com/article/3981643/python-popularity-climbs-to-highest-ever-tiobe.html

https://en.wikipedia.org/wiki/Worse_is_better#cite_note-WorseIsBetter-3

https://www.cc4e.com/papers/2015-05-Guido-Early-Years-Python-IEEE.pdf

https://www.youtube.com/watch?v=UmL_CA-v3O8

https://pyfound.blogspot.com/2025/06/python-language-summit-2025-lightning-talks.html

2025-06-17 08:006838

评论

发布
暂无评论
发现更多内容

阿里云官方出品:全面总结阿里云云原生架构方法论与实践经验

尹文敏

云计算 阿里云 云原生

毕昇JDK:为啥是ARM上超好用的JDK

华为云开发者联盟

Java 华为 jdk Openjdk 毕昇 JDK

开源之夏来啦,欢迎报名 Apache APISIX 项目!

API7.ai 技术团队

开源 后端 技术人生 API 网关

一个超牛逼的 GitHub 项目,标星高达55.3Kstar,附项目源代码

Java架构师迁哥

深入分析Linux操作系统对于TCP/IP栈的实现原理与具体过程

奔着腾讯去

c++ socket 网络协议

创业邦南立新:搭建创新生态,是奔向万亿美金市值的必经之路

创业邦

入职阿里定级P7,2021年最新最全180道高级岗面试题及答案

Java架构师迁哥

面试官:如何给字符串设计索引?

一个优秀的废人

MySQL 索引 字符串 索引优化

从零开始学习3D可视化之模型动画

ThingJS数字孪生引擎

可视化 模型 大屏可视化 数字时代 3D可视化

我人生的里程碑之【作为独立开发者,第一次承接外包项目的心得经历,也许说出你的心声哦!】

码界西柚

程序人生 6月日更

大厂招聘程序员都是“有章可循”你Get到了吗?

Java架构师迁哥

上架Steam一周的付费游戏,开源了!其实你能“薅”的不止一只羊

程序员生活志

24道几乎必问的JVM面试题,我只会7道,你能答出几道?

北游学Java

Java 面试 JVM

油管视频下载: 如何下载油管视频到本地

科技猫

分享 教程 经验 油管视频下载 下载油管视频

建信金科大咖访谈:ISO20000及ISO27001标准体系解读

金科优源汇

Kubernetes学习笔记之Calico CNI Plugin源码解析(二)

360技术

阿里工作8年,肝到P8就剩这份学习笔记了,已助朋友拿到10个Offer

Java 程序员 架构 面试

准备3个月,面试10分钟,Java中高级岗面试为何越来越难?

Java架构师迁哥

《原则》(九)

Changing Lin

6月日更

如何判断老板是在给员工画饼?

石云升

创业 职场经验 6月日更

程序员需要了解数据库知识么?

escray

学习 极客时间 朱赟的技术管理课 6月日更

福利时刻 十年黑客大佬的Web安全渗透技术分享

学神来啦

Linux 黑客 安全 运维自动化

2021年最新版Java后端最全面试攻略,全面对标BATJ

Java 程序员 架构 面试

Flink + Iceberg 在去哪儿的实时数仓实践

Apache Flink

flink

centos7使用

xujiangniao

Linux

在外包5年,每天读写删改,突然发现跳不出来了

Java架构师迁哥

用 CloudQuery 管理和操作数据库,更高效更安全

BinTools图尔兹

运维 dba 数据库管理工具

本文是为了帮大家快速回顾了Java中高级知识点,只需收藏不用看!

Java架构师迁哥

☕️【Java 技术之旅】带你一起攻克String类创建的难点分析

码界西柚

Java string pool string 6月日更

超全!阿里首发内部微服务架构笔记,再也不用为“微服务”苦恼了

Java架构师迁哥

涵盖了所有计算机底层知识总结与操作系统的实战教程,你确定不看看吗

Java架构师迁哥

从 3 个月业余项目到全球第一语言!Python 之父坦言:那些年靠“将就”撑起来的代码,如今都真香了_开源_Tina_InfoQ精选文章