专栏名称: 机器之心
目录
相关文章推荐
爱可可-爱生活  ·  【[134星]OmniTools:一站式在线 ... ·  昨天  
爱可可-爱生活  ·  【[214星] DeepSeek ... ·  昨天  
机器之心  ·  刚刚,DeepSeek开源MoE训练、推理E ... ·  2 天前  
爱可可-爱生活  ·  突破性的“一步扩散”生成模型 查看图片 ... ·  2 天前  
51好读  ›  专栏  ›  机器之心

Python简史:开发者的小小副业如何成为全球最热编程语言?

机器之心  · 掘金  · AI  · 2019-08-19 03:19

正文

选自TechRepublic

作者: Nick Heath

机器之心编译

参与:魔王、张倩、杜伟

1989 年,Guido van Rossum 厌倦了当时已有编程语言的缺点,决定创造一种新的编程语言,于是 Python 诞生了。现在 Python 已经拥有数百万用户,那么关于这门语言的过去、现在和未来,创造者 van Rossum 有什么要说的呢?
1994 年末,一组从全美国选出来的程序员聚在一起讨论他们的新型秘密武器。
这是针对新型编程语言 Python 举办的第一次 workshop,共有二十来个程序员参加,Barry Warsaw 是其中之一。他记得当时这些第一批用 Python 的人都很兴奋。
「我记得有个人说:『不要告诉别人我参加了这次 workshop,因为使用 Python 是我们的独特竞争优势。』Python 是一个秘密武器。」
这次 workshop 在当时的美国国家标准局(NBS)举办,Warsaw 表示:很显然,当时 Python 提供了一些新特性,使写代码的过程变得简单、便捷。
「第一次使用 Python 时,我就知道它很特别。它提高了代码的可读性,写 Python 代码是很愉快的过程。」Barry 回忆道。
现在,Python 热潮早已突破了最初的开发者圈子。有人预测它将很快成为世界上最流行的编程语言。它吸引新用户的速度远超其他语言,每天有数百万人使用 Python,且用户数量的指数级增长没有显现出衰退迹象。
Python 可用于大型任务和小型任务,专业开发者、业余开发者都可以使用。该语言尤其受到 web 开发者、数据科学家和系统管理员的青睐。今年 4 月,人类成功拍摄了首张黑洞照片,这其中 Python 功不可没,它将分布在世界各地的电脑上的脚本合成起来。
在许多世界知名的组织中,Python 也发挥着重要作用,如它帮助 Netflix 向全世界 1 亿多个家庭提供视频流,支持照片分享社区 Instagram,还帮助 NASA 探索太空。
Python,诞生伊始
就某些方面而言,Python 的崛起就像英国同名喜剧组合「Monty Python」一样离奇怪诞,而它也同样在自己的生态系统中积聚出名气和影响力。
Python 最初只是荷兰程序员 Guido van Rossum 的「副业」。1980 年代末,van Rossum 在荷兰数学和计算机科学研究学会 (CWI) 工作。他厌倦了当时已有编程语言的缺陷,决定创造一种既好用又高能的新语言。

Guido van Rossum,2001 年。 这一年 Python 软件基金会成立。 (图源: Guido van Rossum)
对于门外汉来说,创造一门自己的编程语言不亚于「自己造一架飞机」,但是时年三十多岁的 van Rossum 有他自己的优势。当时他与 CWI 的一个团队用三年时间创造了一种解释性编程语言 ABC,所以他对构建执行编程指令的解释器需要什么、新语言需要哪些语法构建块都有自己的见解。
对于当时的 van Rossum 来说,意识到已有编程语言的易用性缺陷也是非常重要的。他当时正在开发的 Amoeba 分布式计算系统需要使用 C 语言或 Unix shell,这两种语言都有很明显的缺陷。
C 语言不仅需要开发者执行手动管理内存的复杂工作、时刻面临潜在的错误,还缺少可重用代码库,这就使得开发者在每执行一个新项目时就得重新造一个轮子。而 Unix shell 存在另外一些问题:它为常见任务提供了一套实用工具,但是运行速度很慢,无法处理复杂逻辑。
这些语言对开发者造成的限制使得 van Rossum 决定自己创建一种解释性语言,这门语言借鉴了 ABC 语言的最优特性。
「我当时的想法是『为什么不创造一种自己的语言呢』,借鉴 ABC 语言的思想,但缩小项目的规模,把一个团队三年完成的事情缩减到我自己三个月就能完成的规模(就像臭鼬工厂的项目那样)。就这样 Python 诞生了。」van Rossum 说道。
1989 年底,van Rossum 开始积极投入该项目。他借用了自己最喜欢的喜剧组合 Monty Python's Flying Circus 的名字为该语言命名,并在任何可以工作的时候投入该项目的研发。
「那时候我的社交活动很少,在闲暇时刻我也不看电视,而是把时间花在编程上,或者同时做这两件事。」
尽管创造 Python 名义上是为了辅助自己的工作,但 van Rossum 发现创建这门语言的动力多过挑战。
「我也不知道自己有多大信心能通过这个工具提高效率。我认为我只是享受独自做大项目的快感,写自己想写的代码,按照自己的想法设计。我喜欢编程。」van Rossum 说道。
一个人自己创造了一种编程语言,这听起来很不寻常,但是 van Rossum 得到了足够的支持。1980 年代末,出于对当时可用开发工具的失望,多种主流语言应运而生。
Larry Wall 曾说过:他创造 Perl 是因为用现有工具编程很难解决某个问题,而且他具备伟大程序员的三大优点:懒惰、暴躁和自负。(懒惰会促使程序员写一些省事的程序,辅助自己或别人更好地完成工作,无需做重复和繁琐的劳动;暴躁让程序员主动去完成一些你还没有提出的工作,去优化自己的代码让它更有效率,能够 3 秒钟完成的任务,我们绝不能容忍 1 分钟的等待;自负会促使程序员写出可靠无误的代码,我们写代码不是为了接受批评和指责,而是为了让其他人来膜拜。)类似地,为了寻找一种更好的语言来创造构建集成电路的交互工具,John Ousterhout 设计了 Tcl 语言。
仅仅用了三个月时间,van Rossum 就创建了 Python 的工作原型,他认为该原型虽然缺乏一些现代特性,但是仍然能够从中看出今天 Python 的雏形。
「现在 Python 具备大量当时还没有的重要抽象,但是不管怎么变化,Python 语言看起来是类似的。当时我已经具备 Python 解释器、Python 语言运行的所有基本组件。第一个 Python 解释器创造的简单 Python 程序可能到现在还能运行。」他接着补充道,函数的定义方式没有变化、代码缩进规则没有变化、字典和元组也是使用相同的语法创建,同样不变的还有,在交互式模式下直接输入 Python 代码即可立即执行计算。
但是,当 van Rossum 的两个同事开始使用这门语言时,他对 Python 的广泛传播不抱太大期望,他已经经历过前互联网时代让编程语言取得进展的艰难。
今天向全世界共享软件只需几次点击即可,而在 1980 年代,这事儿要难得多。van Rossum 回忆起尝试分发 Python 前身 ABC 语言时的重重困难。
「我记得大概是在 1985 年,第一次去美国,我带了一箱磁带,磁带里是 ABC 语言。」
有一些人通过当时初级的电子邮件系统传达了他们对 ABC 语言的兴趣。van Rossum 借助这些人的地址和电话号码,挨个发放磁带。但是,ABC 并没有流行起来。
「这也难怪,ABC 有那么多优秀的特性,却无法得到很好的分发。」但是随着互联网革命的发展,分发 Python 要简单多了,最起码不用再弄一箱子磁带了。
1991 年,van Rossum 通过 alt.sources newsgroup 向全世界发布了 Python。尽管 Python 解释器仍然需要由 21 个单独的部分组合并压缩成一个文件,需要通过 Usenet 网络下载一整晚,但这比之前的当面派发还是要高效多了。
「我希望 Python 能够获得成功,但是我之前发布的语言失败过。」
失败的经历萦绕在脑海中,van Rossum 说他很长时间都不去看 Python 用户群增长方面的信息。渐渐地,他意识到发展势头不错,在与 Python 社区定期交流一段时间之后,他发现自己成功了。
「我认为这种发现来得非常非常缓慢。在我们第一次开源发布之后,我的工作节奏是开发新的发布版本、与刚出现的 Python 社区交流。」
Python 为什么能赢?
1990 年代早期和中期,Python 语言发展迅速,Python 的时代似乎到来了。这令 van Rossum 感到震惊。
van Rossum 认为开发者使用 Python 的原因和他最初创建 Python 的原因一致。他们想要一种高级的脚本语言,能够平衡易用性和强悍能力,在处理复杂逻辑时不会出现 Unix shell 的局限性。他们想要结束使用 C 语言时必须手动执行内存管理、必须在每个项目开始时重复造轮子的局面。
Barry Warsaw 表示,Python 既具备易用性,其能力也不打折扣,这种平衡是 1990 年代早期的主流编程语言所不具备的。「我之前写过大量 Perl、Tcl 和 C 代码,写的过程并不怎么愉悦。当 Python 出现时,我的感觉是:『哇,它让编程重新变得有趣了!』」
Python 当时所提供并一直提供到现在的,是清晰、不含混的语法,用缩进将代码分块,帮助开发者更轻松地理解代码。
高德纳咨询公司(Gartner)应用平台战略团队研究总监 Fintan Ryan 表示,清晰性是 Python 赢得开发者的重要因素,尽管用缩进实现这一重要功能引起了分歧。「它提供非常简洁的语法。你也可以在其他语言中执行缩进,但 Python 能够自动执行。一些程序员喜欢这一点,一些则讨厌它。」

1994 年 Barry Warsaw 参加第一次 Python Workshop 时的照片。 (图源: Barry Warsaw)
Python 强调简洁、可读的代码,这一点并非偶然。van Rossum 曾表示,编程语言不仅告诉计算机要做什么,也用于开发者之间的信息交流。
关于可读性,Ryan 表示,Python 从一开始就提供有别于其他语言的内置功能。「你一上手就可以使用类、异常处理等功能。Python 还提供对 lambda、map 和 filter 等函数的支持,这些函数在很多案例中非常有用。」
如果 1980 年代末的流行编程语言能够更好,或许 Python 压根就不会出现。van Rossum 当时创造 Python 的一大动力来自于,他在 CWI 开发的 Amoeba 分布式计算系统与 Perl 脚本语言不兼容。「对于 Python 而言,最幸运的事莫过于 Perl 与 Amoeba 不兼容了。如果 Perl 可以移植到 Amoeba,那我可能不会想自创语言。」van Rossum 说道。
尽管 Python 一经发布就吸引了一票硬核粉丝,形成了用户群,但在 1990 年代 Python 仍然处于劣势。van Rossum 表示,Python 的竞争对手是 Tcl/Tk 和 Perl,它们和 Python 的目标一样:兼具易用性和强悍能力。「1990 年代 top 3 编程语言中,Perl 绝对是第一,Tcl/Tk 排名第二,Python 只占第三名。」
根据 Stack Overflow 开发者调查报告,现在 Python 是活跃用户增长最快的编程语言,而 Perl 已经滑出最新的 Stack Overflow 调查报告。
下图展示了 Python 的爆炸式增长:近年来在 Stack Overflow 网站上,Python 相关问题的阅读量增长速度远远超过其他编程语言。

在 Stack Overflow 网站上,Python 与其他语言相关问题的阅读量增长速度对比显示出 Python 用户群的巨额增长。 (图源: Stack Overflow)
那么 Python 是如何超越前对手 Perl 的呢?又该怎么解释二者迥然不同的命运呢?van Rossum 认为,这与代码库超出一定规模后能否轻松维护有关。「人们的经验是,对于 10 行的代码,Perl 绝对没问题。但如果你有 500 行主线代码、包含几千行代码的库,那在 Perl 中维护该代码库就需要大量精力了。而使用 Python 的话,即使没有足够的精力去管理,代码仍然是相对可读且可维护的。」
既易于使用,又足够稳健可以写大型应用,van Rossum 认为这是 Python 在 1990 年代取得初步成功的原因。「当时的一些网络开发者想写更大的应用,他们认为用 Python 写大型应用比使用 C、C++ 或 Java 要省力很多。」
随着 1990 年代 Python 使用范围的扩大,当时仍在 CWI 工作的 van Rossum 发现他创建的这门语言越来越多地把他和世界各地的人们联结起来。
Python 和 web
1990 年代中期,Python 的使用开始出现新方式,从音频录制和回放脚本到首次涉足 web 开发。而后者成为了 Python 使用的主流。
「最大的应用方向是 web 开发,这也是我很感兴趣的方向。你可以用 Python 创建动态网页,这是我最喜欢的 Python 应用之一。」van Rossum 说道。
Ryan 表示,1990 年代 Python 在开发者之间流行的原因是,它成为快速创建强大脚本的最受欢迎语言。「作为具备强大功能的脚本语言,它降低了很多用户的使用门槛。」
此外,Ryan 还表示 Python 足够灵活,很容易学习,从而吸引了具备不同技术专长的不同类型用户。「系统管理员等使用 Python 执行系统自动化和系统编程,开发者看重 Python 的函数式编程和类的继承等特性。而 Perl 在这方面要逊色很多。一旦人们熟悉了 Python 语言,况且这门语言比较好学,他们的生产效率就会得到迅速提升。」
1994 年,时任美国国家标准局(NBS,现美国国家标准与技术研究院 NIST)高管的 Michael McLay 注意到了 Python。他对 NBS 科学家能够以何种方式使用 Python 很感兴趣,这预示着 Python 会因其易用性受到研究人员和科学家的青睐。van Rossum 表示 NBS「有大量数据需要处理,但是缺乏优秀的编程人员」。
为了让 NBS 内部的其他人员接受 Python,McLay 邀请 van Rossum(当时仍在荷兰 CWI 工作)来 NBS 担任为期两个月的客座研究员。这一任命成为 Python 未来演进的催化剂,也为 van Rossum 的生活带来了巨大改变。

首届 Python Workshop 时 van Rossum 与 Barry Warsaw、Roger Masse 的合照(当时 Barry Warsaw 和 Roger Masse 都在 CNRI 工作)。 (图源: Barry Warsaw)
正是在这一任命期间,首届 Python Workshop 在 NBS 的办公室里举办了,van Rossum、Barry Warsaw 等 Python 早期用户齐聚一堂,讨论他们用 Python 做了什么以及对 Python 未来发展的期待。
在 NBS 的办公室里,van Rossum 见到了 Bob Kahn,后者因发明互联网基础技术 TCP/IP 协议而闻名。
这次会面为 van Rossum 带来了一个工作 offer——与 Kahn 一起在美国全国研究创新联合会 (CNRI) 工作。CNRI 是一个非盈利性研究组织,专注于网络技术的战略开发。
正像 Python 满足了人们对新型编程语言的需求一样,这个工作 offer 也来得恰如其时。当时 van Rossum 对自己在 CWI 的未来正持怀疑态度。「CWI 更像一个学术机构,他们给了我一点压力,要么拿到 PhD 学位,要么到别处找工作。」
「当时我 35 岁左右,读 PhD 对我没什么吸引力。由于 Python 的缘故,我的生命中出现了一些其他的可能性,经过一些电话聊天和思考,我决定不去读 PhD,而是去尝试新的选择。」
1995 年 4 月,van Rossum 加入 CNRI。在 CNRI,van Rossum 和一群 Python 爱好者一起构建了管理 Python 语言的结构。在这里他领导了一支小型开发者团队构建 Knowbot 程序,该软件是在分布式计算机系统(如互联网)上运行的移动代理。
这支团队使用 Python 工作,团队成员包括 van Rossum、Jeremy Hylton、Roger Masse、Barry Warsaw、Ken Manheimer 和 Fred Drake,他们在 Python 社区中都发挥了重要作用。
「我们组最后有 4 到 10 人,大部分在 CNRI 工作,是 Python 开发的主力军。」van Rossum 表示。
在 CNRI 工作期间,这支团队创建了用于管理核心代码库变更的 CVS 服务器——python.org (http://python.org/) website,以及帮助改善和维护 Python 的 Python Special Interest Groups 邮件列表。
自 1991 年 Python 公开发布后,Python 用户社区发展迅猛。1990 年代下半叶,Python 吸引了大量全球用户群体。在这段时间内,Python 的管理开始变得正规,成立了管理结构,2001 年还成立了 Python 软件基金会 (PSF)。随着社区的发展,自 1994 年开始一年两次的 Python workshop 演变成大型年度盛事,最终成为每年一次的 PyCon 大会。
进入 21 世纪,Python 的用户群变得更加庞大,社区在发展过程中发挥了积极的作用。van Rossum 仍然是核心,而且关于他会一直担当 Python 核心的想法不曾消失,比如人们称他为「终身仁慈独裁者」(BDFL)。
「在很长一段时间里,我承受住了压力,也提升了项目管理技能,比如把大量工作委托给别人、让大家各司其职。」van Rossum 表示。
Ryan 称,语言的创造者成为管理者,这并不鲜见,比如创造了 Perl 的 Larry Wall、创造了 Node.js 的 Ryan Dahl,而 van Rossum 因其在 Python 管理过程中的公平公正而著称。「大家都认同,他在项目的发展方向和自己的管理工作之间做出了很好的平衡。」
的确,van Rossum 确立的开放性本质(核心开发者通过公开辩论帮助决策)是 Python 成功的决定性因素。
Python 的演变
Python 发布以来,出现过几次大的飞跃,如 2008 年 Python 3.0 的出现使该语言现代化,以及最近关于 Python 管理机制的重大变化。
变化是从去年开始的,van Rossum 宣布卸任 BDFL,直接导火线是 Python 改进提案 PEP 572,该提案是关于给 Python 添加表达式内赋值的语法,但引起了公开反对。
尽管该提案的目的是写出更高效的代码,但 van Rossum 迎来了反对者铺天盖地的批评,有些用户认为该语法会降低代码的可读性,使代码更难维护。
van Rossum 说他已经习惯了关于新特性的争论,但是这一次,一些批评者不妥协的态度以及针对个人的攻击使得他下定决心退休。
「技术层面持反对意见的人竟然跑到社交媒体上,大喊决策流程崩溃或我犯了重大失误,这令我失望。我觉得自己受到了来自背后的攻击。」
「过去,在需要对 Python 做出改变或者改进某个特性时,核心开发组会讨论优缺点再进行决策。不管大家是否达成共识,我最终都会认真考量并做出决定。关于 PEP572 提案,尽管存在争议,但是我最终决定「Yes,我想做这个功能」,而人们却没有选择信服。这并不是反叛,不过我觉得我和核心开发者之间缺乏足够的信任来继续下去。」
他认为,这种争议的变化部分原因在于用户量太大。「或许 Python 社区太大了吧,达成任何形式的共识都变得更加困难,因为不管你做出什么决定都会有人反对。」
今年早些时候,Python 核心开发者选出了指导委员会来监督 Python 的未来发展。van Rossum、Barry Warsaw、Brett Cannon、Carol Willing 和 Nick Coghlan 当选指导委员会成员。
Warsaw 表示,这一变化对管理用户群增长如此迅速的语言是一种必然。「我认为 Guido 确实把所有事情扛在自己的肩上。25 年前这没什么问题,那会儿 Python 社区比较小,而现在再把所有事情一肩挑就太难了。我认为,为了他的健康和对社区的参与,将负担分给五个人是明智的。」
指导委员会的新选举会在每次新特性发布之后举行,Warsaw 称这将为下一代 Python 领导者铺平道路。「如果 Python 还能再健康发展 25 年,到时候肯定不是我和 Guido 管理它了。」
指导委员会的成立受到了更广泛核心开发者社区的欢迎,核心开发者 Mariatta Wijaya 称这一举措走在了正确的方向上。「我认为,指导委员会比一个人决定所有事要好,(一个人决定所有事)对那个人来说责任和负担都太重了。指导委员会的成立是一个好信号,这意味着社区将有更多输入。」

Python 核心开发者 Mariatta Wijaya 欢迎 Python 指导委员会的成立,指导委员会将监督 Python 的发展。 (图源: A. Jesse Jiryu Davis)
Python 的未来
尽管 Python 仍在以惊人的速度吸引新用户,但社区中一些人已经看到了未来面临的挑战——要想保持先进,Python 需要进化。
在今年的 Python 语言峰会(PLS)上,BeeWare 联合创始人 Russell Keith-Magee 提醒道:如果对移动和新 web 平台的支持没有改进的话,Python 将面临「生存危机」。(BeeWare 项目旨在使写出的 Python 应用可在任意设备上运行。)






请到「今天看啥」查看全文