大家好,我是江湖十年。
2025 年第一天,我想以此文作为我的博客在今年发布的第一篇文章,也作为新一年的起点。
本文翻译自 Python 语言创始人 Guido van Rossum 在 2016 年 4 月 27 日的一次演讲,讲述自己的经历,以及如何创造出 Python 这门语言。
原文地址:https://neopythonic.blogspot.com/2016/04/kings-day-speech.html
关于技术、政治、文化和哲学的漫谈,来自 Python 编程语言的创始人。
2016 年 4 月 27 日,星期三
国王节演讲
今天,荷兰庆祝国王节。为了纪念这一传统,位于旧金山的荷兰大使馆邀请我为荷兰和美国的企业家们做一场“TED演讲”。以下是我朗读给他们的演讲稿内容。部分内容是我自传的总结;部分内容涉及编程语言的重要意义;还有部分是关于 Python 的核心理念。Leve de koning!(国王万岁!)
Python:一门由社区创造的编程语言
请原谅我的闲聊。我最终会切入正题的。
让我介绍一下自己。我是个书呆子,一个怪人(译注:原文为 geek
)。我很可能患有自闭症。我成熟的很晚。26 岁才大学毕业,45 岁结婚。现在我 60 岁了,有一个 14 岁的儿子。也许我在做决定时总是很困难:我在美国生活了超过 20 年,但仍然是永久居民(译注:这里应该是想表达只拿了绿卡,但没有申请入籍)。
我不是史蒂夫·乔布斯或马克·扎克伯格。但在 35 岁时,我创造了一种编程语言,因此受到了一些关注。接下来发生的事情相当精彩。不过我稍后再谈这个。
在我 10 岁时,我的父母给了我一个教育类的电子工具包。这个工具包是飞利浦公司生产的,真的很棒。一开始我只是跟着说明书做,一切都能顺利进行;后来我学会了自己设计电路。我最珍贵的“宝贝”是工具包里的三颗(!)晶体管。
我把自己最早的电子模型之一,一个会闪烁的灯,带到了五年级的“show and tell”课堂上。可却完全冷场了——没人关心或理解它的重要性。我想,这大概是我最早意识到自己是个怪人的记忆之一:在此之前,我只不过是个安静又学得快的孩子。
在高中,我的怪人气质进一步发展——我和其他几个对电子感兴趣的孩子混在一起,在物理课上我们坐在教室的后排讨论 NAND 门,而班上的其他同学还在试图搞懂欧姆定律。
幸运的是,我们的物理老师很了解我们:他让我们制作一个数字计时器,用来向全班同学演示重力定律。这是一个很棒的项目,让我们意识到自己的技能是有用的。其他孩子仍然觉得我们很奇怪:那是七十年代,很多人沉迷于吸大麻和叛逆;另一些人则已经在准备成为成功的医生、律师或技术经理。但他们不打扰我,我也不打扰他们,最终我以全年级名列前茅的成绩毕业了。
高中毕业后,我去了阿姆斯特丹大学:那里离家很近,并且对于一个在七十年代荷兰长大的青少年来说,阿姆斯特丹是唯一一个很酷的城市。(是的,1968 年的学生抗议活动确实对我产生了一些影响。)令我的高中物理老师感到惊讶和失望的是,我选择了数学而不是物理作为主修。但回头看,我认为这并不重要。
在科学楼的地下室里有一台大型计算机,我一见钟情。卡片打孔机!行式打印机!批处理作业!更重要的是,我很快学会了编程,使用 Algol、Fortran 和 Pascal 等语言。这些名字大多已被遗忘,但在当时极具影响力。不久,我又一次坐在课堂的后排,忽视讲座,纠正我的计算机程序。那么,为什么会这样呢?
在那个地下室,围绕大型计算机,发生了一些神奇的事情。那里有一群志趣相投的学生和工作人员,我们互相交流编程技巧。我们共享子例程和程序代码。我们团结一致,共同抵抗大型计算机的工作人员,尤其是在无休止的猫和老鼠游戏中争夺磁盘空间。(在那个时代,磁盘空间是非常宝贵的,在今天你可能无法理解。)
但我学到的最重要的教训是关于分享的:虽然我在那里学到的大多数编程技巧随着大型计算机时代的结束而消失,但软件需要共享的理念比以往任何时候都更加重要。今天我们称之为开源,这是一个运动。记住这一点!
那时候,我掌握的编程窍门和技巧似乎是最重要的。大型计算机的操作系统小组雇佣了几名兼职学生,当他们发布职位空缺时,我申请了这个职位,并得到了这份工作。这是一个改变人生的事件!突然之间,我拥有了无限制的访问大型计算机的权限——不再需要争夺磁盘空间或终端——而且可以访问操作系统的源代码,以及几十位同事向我展示了这些东西是如何工作的。
我终于有了梦寐以求的工作,整天写代码,面对真正的客户:其他程序员和使用大型计算机的用户。我荒废了学业,基本上相当于辍学,如果不是因为我那位开明的经理和一位没有放弃我的教授,我可能连毕业都无法实现。他们督促我完成一些课程,并拖了些关系,最终,经过一番波折,我还是毕业。耶!
我立即找到了一份新的梦想工作,如果没有那张学位证书,我是无法获得的。我一直对研究编程语言保持兴趣,加入了一个构建新编程语言的团队——这可不是每天都会遇到的事情。设计者们希望他们的语言能够征服世界,取代 Basic。
那时是八十年代,Basic 是新一代业余程序员在像 Apple II 和 Commodore 64 这种微型计算机上编写代码时的首选语言。我们的团队把 Basic 视为一个应该被淘汰的祸害。我们正在构建的语言 ABC 的口号是“消灭 Basic”。
可悲的是,由于种种原因,我们的市场营销(或者说时机)非常糟糕,四年后,ABC 被放弃。从那时起,我花了许多时间试图理解这个项目失败的原因,尽管它的初衷显然是好的。除了有点过度设计之外,我理解的最好回答是,ABC 的失败是因为当时没有互联网,因此语言的创造者和用户之间无法形成健康的反馈循环。ABC 的设计本质上是一条单行道。
仅仅五年后,当我在 ABC 的废墟中寻找为自己的语言提供灵感的想法时,缺失的反馈循环就是我决定改善的事情之一。“尽早发布,频繁发布”成了我的座右铭(这是借用了旧芝加哥老派民主党的口号,“vote early, vote often”)。而互联网,尽管在 1990 年时还很渺小且速度缓慢,却让这一切成为可能。
回顾过去的 25 年,互联网和开源运动(即自由软件)确实改变了一切。此外,还有“摩尔定律”,使计算机每年变得更快。这些因素彻底改变了软件制造者与用户之间的互动。我相信这些发展(以及我如何好好运用它们)对“我的”编程语言的成功贡献要远远超过我的编程技能和经验,无论这些技能和经验多么出色。
我给我的语言起名叫 Python,这也没什么坏处。这对我来说是无意识的营销天赋。我本想向《巨蟒剧团之飞翔的马戏团》(Monty Python’s Flying Circus)的不拘一格的喜剧天才致敬,而在 1990 年,我觉得自己没有什么可失去的。如今,我敢肯定“品牌研究”公司会很乐意收取一大笔费用,告诉你这个名字在典型客户的潜意识中引发的复杂联想。但当时,我只是心血来潮。
我向大使馆工作人员承诺,不会让你们厌烦于对不同编程语言优缺点的技术讨论。但我想聊几句关于编程语言对使用它们的人——程序员,意味着什么。通常,当你问一个程序员如何向外行人解释什么是编程语言时,他们会说这就是你告诉计算机该做什么的方式。但如果仅此而已,为什么他们在彼此谈论编程语言时会如此热情呢?
实际上,编程语言是程序员表达和传达想法的方式——而这些想法的受众是其他程序员,而不是计算机。原因在于:计算机可以自理,但程序员总是与其他程序员一起工作,而思想沟通不畅可能会导致代价高昂的失败。事实上,用编程语言表达的想法通常还会影响到程序的最终用户——那些永远不会阅读或甚至不知道程序存在的人,但他们依然会受到它的影响。
想想 Google 或 Facebook 这样的公司取得的巨大成功。这些公司的核心是思想——关于计算机能够为人们做什么的想法。为了有效,一个想法必须以计算机程序的形式表达,使用一种编程语言来实现。最能表达一个想法的语言将给使用该语言的团队带来关键优势,因为它让团队成员——人!——对这个想法有了清晰的理解。Google 和 Facebook 的理念截然不同,事实上,这两家公司最喜欢的编程语言正好处于编程语言设计的两个极端。而这正是我想表达的观点。
真实故事:Google 的第一个版本是用 Python 编写的。原因在于:Python 是表达拉里·佩奇和谢尔盖·布林关于如何索引网页和组织搜索结果的原始思想的合适语言。而且他们也可以在计算机上运行他们的想法!
所以,在 1990 年,早在 Google 和 Facebook 之前,我就创造了自己的编程语言,并将其命名为 Python。但 Python 的理念是什么?它为何如此成功?Python 如何与其他编程语言区分开来?(你们为什么都这样盯着我看? :-)
我有很多答案,有些是非常技术性的,有些来自我当时的特定技能和经验,还有些则只是恰逢其时。但我相信最重要的理念是,Python 在互联网上是完全开源的,由一个充满热情和责任感的志愿者社区(而不是业余爱好者)开发的。
这正是那个在科学楼地下室的极客小组的核心理念。
惊喜:就像任何好的励志演讲一样,这次演讲的要点是关于幸福的!
当我感觉到自己是这样一个社区的一部分时,我是最快乐的。我很幸运在日常工作中也能感受到这种感觉。(我是 Dropbox 的首席工程师。)如果我感受不到这种感觉,我就感受不到生机。其他的社区成员也是如此。这种感觉是有感染力的,我们的社区成员遍布世界各地。
Python 的用户社区由数百万有意使用并热爱 Python 的人组成。活跃的成员在遥远的地方组织 Python 大会(Python conferences)——可以亲切地称为 PyCon ——比如纳米比亚、伊朗、伊拉克,甚至俄亥俄州!
我最喜欢的故事:一年前,我在视频会议中花了 20 分钟与位于伊拉克南部巴比伦大学的一整个教室的教师和工作人员交流,回答有关 Python 的问题。多亏了那位在战乱国家组织这次活动的勇敢女性,巴比伦大学的学生们现在正在学习用 Python 制作的入门编程课程。每当我想到这一经历时,我仍会热泪盈眶。在我最疯狂的梦想中,我从未想过我会触及如此遥远且与我有着如此不同命运的人。
在此,我想以此为结束:一个由社区创造的编程语言在世界各地培养着用户的幸福感。明年我可能会去参加古巴 PyCon!
由 Guido van Rossum 于上午 10:17 发布🖊️
原文完。
P.S.
之所以选择翻译这篇文章,是因为 Python 是我学习并长期使用的第一门编程语言,并且我在“龟叔”的这场演讲中感受到了他对技术的热爱、开放和责任,以及他那精彩且不被定义的人生。他的故事值得被看见。
这篇文章是我在阮一峰老师 2020 年 12 月 18 日发布的「科技爱好者周刊(第 138 期):失业难以避免,重构人生规划」一文中看到的。如今,四年过去了,这篇文章的标题更加应景了 :(。
如下段落引用自阮一峰老师的文章:
最近读到了一段话,引起了我的思考。
“工作对于人生至关重要。它提供了收入,身份和意义,失业的创伤仅次于亲人的死亡。”
我完全同意这段话。因为我父母的人生就是这样,上了一辈子的班,如果把工作的部分去掉,就没有其他值得一说的东西了。
对于许多人来说,人生就是围绕着工作。上学是为了找工作,毕业是为了上班,等到退休不上班,就已经是晚年了。万一失业,生活顿时就崩溃了,就像上面的引言说的,收入、身份、意义瞬间都没了。
我今天想说的是,这种”工作型人生”已经过时了。要是现在你还把上班当作人生的主轴,是一件很危险的事情,因为失业的风险越来越大。 时代变了,稳定的工作越来越少,失业会是家常便饭,人生已经没法依附在某一份具体的工作上了。
我非常赞同阮一峰老师的这段话。
而我今天想表达的是,人生不是旷野,也不是天空,而是你可以以自己喜欢的方式度过这一生。
就像“龟叔”的自我介绍:
我是个书呆子,一个怪人。我很可能患有自闭症。我成熟的很晚。26 岁才大学毕业,45 岁结婚。现在我 60 岁了,有一个 14 岁的儿子。
全文完。
延伸阅读
- King’s Day Speech:https://neopythonic.blogspot.com/2016/04/kings-day-speech.html
- 科技爱好者周刊(第 138 期):失业难以避免,重构人生规划:https://www.ruanyifeng.com/blog/2020/12/weekly-issue-138.html
联系我
- 公众号:Go编程世界
- 微信:jianghushinian
- 邮箱:jianghushinian007@outlook.com
- 博客:https://jianghushinian.cn
- GitHub:https://github.com/jianghushinian