注意: 虽然 JavaScript 对于本网站不是必需的,但您与内容的互动将受到限制。请开启 JavaScript 以获得完整的体验。

《Python编程》(第1版)前言

《Python编程》(第1版)前言


这是我为Mark Lutz的著作《Python编程》(第1版)撰写的前言,该书由O'Reilly出版。另请参阅我为第2版撰写的前言

作为Python的创造者,我想就它的起源说几句,并补充一些个人理念。

六年多前,在1989年12月,我正在寻找一个“业余”编程项目,以在圣诞节前后的一周里打发时间。我的办公室(阿姆斯特丹的一家政府研究实验室)会关闭,但我有一台家用电脑,而且手上也没什么别的事。我决定为我最近一直在构思的新脚本语言编写一个解释器:它是ABC语言的后代,希望能吸引Unix/C程序员。我选择Python作为项目的暂定名称,当时我有点玩世不恭(并且是Monty Python's Flying Circus的忠实粉丝)。

今天,我可以肯定地说Python改变了我的生活。我搬到了另一个大陆。我的工作日都花在用Python开发大型系统上,如果不是在黑Python或回答Python相关的电子邮件的话。现在有了Python T恤、研讨会、邮件列表、新闻组,以及这本书。坦白说,我唯一未实现的愿望是我的照片能登上《纽约时报》的头版。但在我开始白日梦之前,这里有一些Python过去的趣闻。

一切都始于ABC,这是一种我在八十年代初协助创建的出色的教学语言。它是一种极其优雅而强大的语言,旨在服务非专业程序员。尽管它拥有所有的优雅和强大,并且提供了免费的实现,但ABC在Unix/C世界中从未流行起来。我只能猜测原因,但一个可能的理由是:给ABC添加新的“原始”操作很困难。它是一个庞大、"封闭的系统",只有最基本的I/O操作:从控制台读取字符串,向控制台写入字符串。我决定不在Python中重蹈覆辙。

除了这个意图,我还有许多其他改进ABC的想法,并且渴望尝试。例如,ABC强大的数据类型结果比我们预期的效率要低。它过分强调理论上最优的算法,而对常见情况的优化不足。我还觉得ABC的一些旨在初学者使用的特性,对于(当时!)预期的有经验的Unix/C程序员受众来说,就不那么可取了。例如:ABC独特的语法(所有关键字都大写!);一些术语(例如,“how-to”而不是“procedure”);以及其用户几乎普遍讨厌的集成结构化编辑器。Python将更多地依赖Unix基础设施和惯例,但不受Unix限制。事实上,第一个实现在Mac上完成。

事实证明,Python显著地摆脱了许多传统编程语言的束缚。这可能归因于我的选择:除了ABC,我的主要影响是Modula-3。这是另一种具有卓越优雅和力量的语言,由一个小型、意志坚定的团队设计(其中大部分是我在DEC位于帕洛阿尔托的系统研究中心实习期间遇到的)。想象一下,如果我以Unix shell和C为模型设计Python,它会是什么样子!(是的,我也借鉴了C,但只借鉴了其最不具争议的特性,以满足Unix/C受众。)

任何个人创作都有其独特之处,有时其创作者必须为此辩护。也许Python最具争议的特性是它使用缩进进行语句分组,这直接源自ABC。它是该语言中我最珍视的特性之一。它以两种方式使Python代码更具可读性。首先,使用缩进减少了视觉混乱,使程序更短,从而减少了理解一个基本代码单元所需的注意力范围。其次,它限制了程序员在格式化方面的自由度,从而实现了更统一的风格,这使得阅读他人的代码变得更容易。(例如,比较C语言中大括号放置的三到四种不同约定,每种都有强大的支持者。)

这种对可读性的强调并非偶然。作为一种面向对象的语言,Python旨在鼓励创建可重用代码。即使我们一直编写完美的文档,如果代码不可读,也很难被认为是可重用的。除了使用缩进之外,Python的许多特性共同促使Python代码具有高度可读性。这反映了ABC的理念,该理念旨在以最纯粹的形式教授编程,因此高度重视清晰性。

通过减少不必要的变异性,可读性通常会得到提升。在可能的情况下,对于特定的构造,只有一种单一、显而易见的方式来编写代码。这减少了编写代码的程序员所面临的选择数量,并增加了代码对阅读它的第二个程序员来说显得熟悉的可能性。对Python可读性的另一个贡献是选择以保守、传统的方式使用标点符号。大多数运算符符号对于任何对高中数学有模糊记忆的人来说都很熟悉,而且不必为像@&$!这样的漫画咒骂符号学习新的含义。

我欣然承认Python不是运行速度最快的脚本语言。不过,它是一个很好的亚军。随着硬件速度的不断提高,程序在其生命周期中的累计运行时间通常与编写和调试它所需的程序员时间相比可以忽略不计。当然,这才是真正可以节省开支的地方。虽然这很难客观评估,但大多数尝试过Python的人都认为它在编码时间上是赢家。此外,许多人认为使用Python是一种乐趣——难以想象更好的推荐。

我独自对Python的优点和缺点负责,即使有些代码是由其他人编写的。然而,它的成功是社区的产物,从我首次在网上发布Python时就采纳它的早期用户开始,他们随后在自己的环境中传播了Python。他们通过电子邮件向我发送了赞扬、批评、功能请求、代码贡献和个人启示。他们愿意在我很快建立的邮件列表中讨论Python的各个方面,并在我的最初直觉失灵时教育我或引导我走向正确的方向。贡献者太多,无法一一感谢。然而,我将破例提及一位:这本书的作者是Python的早期采纳者和推广者之一。随着这本书的出版,他(和我的!)拥有比标准手册集更易于理解的Python描述的长期愿望,终于实现了。

好了,闲话少说。我强烈推荐这本书给任何有兴趣学习Python的人,无论是为了个人提升还是职业发展。来吧,埃里克,乐队指挥! (如果你不理解最后这句话,说明你没看够Monty Python的重播。)

吉多·范罗苏姆
弗吉尼亚州雷斯顿,1996年5月