量子位 昨天
《Python之禅》作者去世,Python之父:没有他就没有今天的Python
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_keji1.html

 

学过 Python 的朋友知道,当你输入 import this 时,会看到这样一首 19 行诗。

「优美胜于丑陋,显式胜于隐式,简单胜于复杂 ......」这 19 句箴言写尽了编程之美,被后人称为《Python 之禅》。

刚刚,Python 之父 Guido van Rossum 宣布,写下这首诗的Tim Peters已经离开人世。

「在《Python 之禅》之前,他就已经是我的导师,也是这门语言的共同设计者。」

默哀!

Tim 发明的算法,此刻仍在无数设备上运行

「Tim 是继 Guido 之后 Python 的第二个真正意义上的用户。」

此言不虚,早在《Python 之禅》之前,他就已经是 Python 最早期的核心开发者,影响了包括 Guido 在内的很多人。故得知他离世的消息后,Python 社区的核心开发者们纷纷留下了悼念。

Python Web 框架 Pyramid 的主要作者 Chris McDonough 写下长文追忆 Tim。

Guido 非常依赖 Tim...... 当他不再担任日常核心开发人员之后,Python 的复杂性急剧上升绝非偶然。

他的文字充满幽默、友善和恰到好处的积极,还夹杂着一丝狡黠的黑色幽默。

核心开发者 Chris Angelico 回忆,自己曾与 Tim 讨论过无数技术问题:「他从不把你当傻瓜,也不会随便否定你的疑问,总是认真回答、耐心解释。」

核心开发者 Neil Schemenauer 感慨,Tim 花费了数以千计的小时帮助其他开发者,没有期待经济回报或者个人荣誉。

他还引用了《马太福音》里的一句话来形容 Tim。

凭着他们的果子,就可以认出他们来。

再准确不过。Tim 走了,他的果子却已经结满全世界,「任何在 1995 年至 2010 年间启动的 Python 项目都带有 Tim 的文化印记。」

其中最名扬天下的当属Timsort 排序算法。

是的,那个 Timsort 里的 Tim,就取自 Tim Peters 本人。

2002 年,Tim 为 Python 设计了这套排序算法。它能够利用数据中已经存在的顺序,高效完成排序,尤其擅长处理现实世界中那些部分有序的数据。

后来,这套算法走出了 Python,被 Java、Android 等平台采用。

还有很多出自 Tim 之手的神技,比如doctest,能将文档里的代码示例直接拿来运行测试,检查示例是不是写对了。

以及difflib,比较两段文本之间的差异,找出哪些内容被增加、删除或修改。

除此外,Python 底层的内存管理、垃圾回收、字典实现等机制,都留下了 Tim 的印记。Guido 回忆,Tim 刚接触 Python 不久,就说服了自己支持整数(int)与浮点数(float)的混合运算。

此后多少年,Tim 一直深深影响着他。

Tim 与 Python 的结缘往事

1952 年,Tim Peters 出生于美国威斯康星州。在成为 Python 社区传奇之前,他曾为超级计算机开发编译器,还曾参与 Dragon Systems 的语音识别软件开发。

△图源 openbookproject

1991 年,Tim 的朋友给他发邮件介绍了一门刚诞生不久的编程语言,Python。

Tim 很快就产生了兴趣,开始与它的发明者 Guido 通信,一边试用,一边讨论语言应该怎样设计。

这时的 Python,还是 0.9.1 版本。

这之后,他就一头扎进了 Python 的开发。

在当时的开发者社区,Tim 逐渐成为了一个传奇。

因为无论别人提的问题多么复杂、多么小白,他都能写出长篇、耐心且细致的回复。

由于回答得又多又快又好,他获得了一个外号,Timbot,Tim 牌机器人。

△图源 pycon 博客

甚至,1998 年,Python 核心开发者 Barry Warsaw 在 "Tim 大阴谋论起源 " 的讨论中专门写了一封邮件,就叫《关于 Tim 的真相》。

大家认识的 Tim Peters 其实根本不存在!「所谓的 Tim,只是一段古老的 AI 程序,负责自动扫描邮件列表、回答开发者的问题。」

△《关于 Tim 的真相》邮件翻译

不然的话你们自己想想,你们之中有谁真的见过他吗?当然了,Guido 肯定说自己见过,但我没看见任何证据。

△《关于 Tim 的真相》邮件翻译

就在这样的社区氛围中,《Python 之禅》在酝酿诞生。

1999 年的 6 月,Python 社区又吵起来了。

有开发者抱怨,大家整天忙着吵应该怎样修改 Python,但很少讨论如何把这门语言用好。

有人提议,不如请 Guido 和 Tim 一起写份《The Python Way》,用十几条简短的规则,总结 Python 的设计哲学。

这次又是 Tim 光速回应,他表示,「这种事情当然应该交给 Guido 来做啦,不过嘛,如果是 Guido,他大概会从下面这个提纲开始。」

优美胜于丑陋。

显式胜于隐式。

简单胜于复杂。

……

就这样,Tim 一口气帮 Guido 写了 19 条箴言。

为啥不零不整的呢?因为 Tim 说,最后一条要留给 Guido 写才行。

是的,至今我们仍未知道那一天 Tim 的第 20 条原本会是什么。有人猜第 20 条应该是 " 留白很重要 "(Significant whitespace),有人猜第 20 条原则就是 " 没有第 20 条原则。"

△1999 年 6 月 4 日《The Python Way》原始邮件

△中文翻译供参考

2020 年,Barry Warsaw 问他这首诗的创作过程,Tim 表示,这是自己在电视播放职业摔跤比赛的广告间隙,啃着火腿三明治随手写的。

随后,Barry Warsaw 亲自献唱,加上自己弹吉他、贝斯、键盘,把这首诗写成了一首歌。

前几年,有一位 Python 小白提问:「为什么给线程传递参数时,括号里明明只有一个变量,后面却非加上一个逗号?」

Tim 亲自回复解释了单元素元组的语法,解释完,他又向 Python 官方提交了文档改进请求,希望以后能把这个问题讲得更清楚。

提问者连连道谢。

Tim 又安慰他,单元素元组的写法,本来就是 Python 里最奇怪的语法之一,不用担心以后每天都会遇到这么古怪的东西。

大家都爱 Tim,不是没有原因。

还有一次,有同事向 Tim 求助,说一个错误每运行六次才会出现一次。

Tim 笑着问他:「那你有在源代码里搜索过 6 吗?」

就这样,Tim 三十多年来一直活跃在社区里,帮人解决所有疑难杂症。

直到 2024 年。因为 Python 软件基金会的章程修改和社区的治理问题,他与当时的管理者发生了激烈争论。

随后,Python 指导委员会认定他在相关讨论中多次违反社区行为准则,暂停了他三个月的核心开发者资格,论坛账号也受到限制。

这件事当时在社区引起轩然大波。

Tim 对处罚依据及处理程序提出质疑,专门建立了一个公开博客,逐条回应相关指控。在他的博客页脚,留着这样一句话:「Question everything. Love everyone.」

质疑一切,爱所有人。

三个月后,Tim 重新回到了 Python 社区,又继续开始参与技术讨论。

2026 年 7 月 8 日,Tim 在的 Python 社区的留下的最后一篇帖子依然在认真讨论优先队列、数据结构以及路径搜索算法。

长长的技术分析的最后,他感叹,「说了这么多,无非是想说,现实世界远比我们期待的那些简洁漂亮的抽象模型更加复杂。」

七天后,Tim Peters 离开了这个世界。

△Tim 的名片," 用户已不再活跃 "One More Thing

Tim 的离世,让许多程序员重新翻出了《Python 之禅》。

Hacker News 上,有人分享,自己还把《Python 之禅》打印了出来,贴在办公室墙上。大家几乎每周都会引用它。「最初只是个玩笑,后来却成了我们文化中相当重要的一部分。」

还有人说,自己刚学编程时就读过《Python 之禅》,那时读不懂。此后的许多年里,每隔一段时间重新读一遍,总会发现自己又理解了几句话。

讨论不仅于此,很多人开始怀念当时的那个 Python。

有网友吐槽,那句「应该有一种,最好只有一种,显而易见的解决方法」,再放到今天的 Python 身上,已经不太适用了。

也有人开始怀念当时的那个 Python 社区。

那是一个开发者们通过邮件列表交流、争论、打趣的年代。而 Tim,他总是愿意花费大量时间,认真回答素不相识的程序员提出的问题。

有网友说:

我很大程度上,是通过观察 Tim,才学会了如何在互联网上与人相处。

现在 Tim 走了,但或许,他给这个世界的爱还在延续 ......

一键三连「点赞」「转发」「小心心」

欢迎在评论区留下你的想法!

—  完  —

点亮星标

科技前沿进展每日见

智客推

智客推

ZAKER 智客推 GEO | AI 时代的品牌认知解决方案

一起剪

一起剪

ZAKER旗下免费视频剪辑工具

相关文章
评论
没有更多评论了
取消

登录后才可以发布评论哦

打开小程序可以发布评论哦

12 我来说两句…