程浅 发自 凹非寺
量子位 | 公众号QbitAI
学过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走了,但或许,他给这个世界的爱还在延续......
一键三连「点赞」「转发」「小心心」
欢迎在评论区留下你的想法!
— 完 —
🌟 点亮星标 🌟
科技前沿进展每日见
本文来自大风号,仅代表大风号自媒体观点。