AICon 北京站 Keynote 亮点揭秘,想了解 Agent 智能体来就对了! 了解详情
写点什么

从 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:004217

评论

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

技术解读:单集群如何做到2万+规模

数据湖洞见

大数据 FusionInsight 华为云 大集群

java8的parallelStream提升数倍查询效率

网站,小程序,APP开发定制

java8

架构师训练营第六周作业--doris临时失效时序图

CATTY

时序图

vue项目发布时去除console语句

网站,小程序,APP开发定制

关于架构的几件小事:架构概述(1)

北风

架构 架构设计 架构师 架构设计原则

阿里花500万年薪招天才黑客?官方回应:这种人得交给警察

程序员生活志

黑客 阿里

[译] 图说前端-图解 React

梦见君笑

大前端 React 框架

如何编写可怕的 Java 代码?

武培轩

Java 编程 程序员 后端

万字详解加拿大央行CBDC分析报告

CECBC

海南的七星彩网站系统盘口代码解析

网站,小程序,APP开发定制

代码

工程规约 - maven统一管理

Man

maven DevOps 工程规约

创业使人成长系列 (3)- 如何取个好名字

石云升

创业 成长 取名

[译] 图解前端-深入理解 Props 和 State

梦见君笑

大前端 React 漫画编程

架构师训练营第六周作业

talen

架构师训练营第六周学习总结

张明森

了不起的 Webpack Scope Hoisting 学习指南

Geek_z9ygea

Java 大前端 webpack

帮助小团队实现大梦想 | Atlassian 云产品免费使用

Atlassian

[译] 图说前端-组件、Prop 和 State

梦见君笑

大前端 React 漫画编程

JavaScript 混淆与逆向必读之 AST 节点类型名词基础

穿甲兵

Java

每周学习总结 - 架构师培训 6期

Damon

AOP有几种实现方式?

八苦-瞿昙

技术 随笔杂谈 aop 代理 框架

如何在 Go 中写出高效的单元测试

Grafana 爱好者

testing slideshare Go 语言

使用 Generic Webhook Trigger 触发 Jenkins 多分支流水线自动化构建

jerry.mei

DevOps 持续集成 jenkins CI/CD 持续交付

如何使用预测性指标衡量敏捷转型的成功?

Atlassian

敏捷开发 开发工具 Atlassian Jira

[译] 图说前端-图解 React Native

梦见君笑

大前端 漫画编程

U盘+grub2安装centos8实战

程序饲养员

架构师训练营第六周学习总结

CATTY

手把手整合SSM框架

JavaPub

要不要做一个gif动态图玩一下?

诸葛小猿

GIF ScreenToGif 动态图

ARTS 04 - 使用 Gitlab + Generic Webhook Trigger 触发 Jenkins 自动化构建

jerry.mei

算法 ARTS 打卡计划 CI/CD 函数式编程 Elixir

架构师课程第六周 作业

杉松壁

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