Python的创作起源,成功是必然的

国内网上关于Python语言的起源说的神乎其神,有的说"因为作者不喜欢花括号,于是发明了python",有的说是“作者为了打发无聊的圣诞之夜,发明了Python",真的看不下去了,太浮夸了。这是对Python发明创作过程的断章取义,给人感觉发明一种编程语言十分随意、毫不费力,这是将当下天天加班熬夜的程序员智商置于何地,给奋斗中的程序员造成多大的心里阴影面积。

你只有十分努力,才能看起来毫不费力。不管有没有花括号、不管有没有圣诞节,Python都一定会出现。Python的创作是作者深思熟虑的结果,在圣诞节前他已经思考良久,他对当时很多编程语言了如指掌,他80年代初就在参与编程语言编写——ABC编程语言,由于当时ABC并没有广为流传,日积月累,作者越来越渴望创作一个能被当时Unix/C程序员广接受的编程语言——ABC的下一代语言。这个想法逐渐酝酿成熟,于是在1989年圣诞节来临之际,作者Guido van Rossum利用假期开始写编译器,并怀着略有调侃的心情用Python作为项目的标题,开启了编程之旅(Ps:Python是蟒蛇,Montl Python是他的喜欢的剧团)。

作者在《Python Programming》(1996年)写的前沿中讲述了Python的创作过程。现将其主要内容翻译如下:

作为Python的创建者,我想对它的起源说几句话,添加一些个人理念。

六年前的1989年12月,我正寻找一个“业余爱好”的编程项目,能让我在圣诞节前后的一周里保持忙碌。我的办公室(阿姆斯特丹的一个政府管理的研究实验室)将关闭,但我有一台家用电脑,手头没有其他东西了。我决定为我最近一直在考虑的新脚本语言编写一个解释器:ABC的后代,它会吸引Unix/C黑客。我选择了Python作为这个项目的工作标题,感觉心情有点不敬(我也是Monty Python's Flying Circus的忠实粉丝)。

这一切起源于ABC语言,这是我在80年代初帮助创作的一种很棒的教学编程语言。这是一种针对非专业程序员的,极其优雅而强大的语言。然而,尽管ABC有其优雅、强大的功能以及免费实现的可用性,但它从未在Unix/C世界中流行起来。其原因我只能猜想,但最可能的一个是:增加新的基础操作到ABC里的困难。这是一个封闭的单片机,只带有最基础的I/O操作:从控制台读一个字符串和写一个字符串到控制台。我下决心绝不在Python中重复这一错误。
除了这一目的外,我还有很多其它改进ABC的想法,而且非常渴望实现他们。比如,ABC强大的数据类型比我们希望的效率低。过于强调理论上的算法优化,而对常用场景关注不足。同时,我觉得ABC面向新手程序员的特性,对富有经验的Unix/C程序员没什么吸引力。例如:ABC的语法(所有大写关键字!);一些术语(例如“如何”而不是“过程”)和集成的结构化编辑器,这些都是其用户几乎普遍讨厌的。因此,我想Python将更多地依赖Unix基础设施和约定,而不受Unix的约束。
现在,事实证明,Python完全摆脱了传统语言的很多麻烦。这可能是因为我选取了很多例子,除了ABC外,我的主要影响来自于Modula-3。这是另一种非常优雅而强大的语言,是一个小而精的团队所做。想象一下,如果我根据Unix shell和C来建模的话,那么Python是什么样子?(当然,为了讨好Unix/C用户,我也向C借了一些东西,但仅限于哪些最无争议的功能。)。
任何个体的创造都有它的特质,有时它的创造者必须证明这些特质是正确的。也许Python最有争议的特性是它使用缩进来进行语句分组,这直接源于ABC。但这是我本人心里最真爱的的特性之一。这使Python具有可读性更高,可以从两方面来说。第一,使用缩进仅少了视觉上的混乱且是程序变得更简洁,因此减少了需要放在代码基本单元上的注意时间。第二,它允许程序员有更少的格式化自由,因此式样是更统一,这使得阅读他人的代码更容易。(相比较而言,例如C允许有3个或4个大括号的约定,然而每种都有强烈的支持者。)
强调可读性并非偶然,作为一种面向对象的语言,Python的目的是鼓励代码重用。即使我们所有人一直都编写完美的文档,若代码不可读也难以做到代码可重用。除了空格缩进外,Python还有很多特性都是意图让Python代码具有高可读性。这反映了ABC的理念,他希望以最纯粹的形式教授编程,因此很注重清晰表达的价值。

可读性经常通过减少不必要的可变性来增强。如果可能,用一个单一的、显而易见的方式来编码特殊的结构。这会减少程序员面码中面临的选择,并且增加了第二个程序员熟悉代码的机会。对Python可读性的另一个贡献是,选择最常用的方式使用标点符号。大多数操作对任何一个对高中数学有模糊印象的人来说都很熟悉,不需要学习新的含义。
        另外,我很乐意承认Python不是最快的运行脚本语言。尽管它是个好亚军。随着硬件速度的不断提高,与编写和调试程序所需的时间相比,程序在其生命周期内的累积运行时间通常可以忽略不计。因此,这才是真正的节省。虽然很难客观的评估,但是Python被很多试过的人认为是节省编程时间的赢家。此外,许多人认为使用Python是一种乐趣——很难想象会有更好的建议。
        我为Python的有点和缺点负全责,尽管有些代码是其他人写的。Python的成功是一个社区的产物,这始于早期的采用者,他们在我第一次在网络上发布Python时就开始使用它,并在他们自己的环境中传播关于它的信息。他们通过电子邮件向我发送了他们的赞扬、批评、功能请求、代码贡献和个人想法。他们愿意通过我刚建立的邮件列表跟我讨论关于Python的各方面,并教育我或推动我朝着正确的方向前进,而那会让我通过最初的直觉行事失败。
原文来自:https://www.python.org/doc/essays/foreword/

结论

只有十分努力,才能看起来毫不费力

Python的成功来自于作者的专业

社区是创新的培养皿

发布了52 篇原创文章 · 获赞 37 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/CatherineJChen/article/details/104482951