我们大多数人可能听说Python语言的时间并不长,多则十来年,少则几个月。但Python其实并不是一门新兴的计算机编程语言,它诞生于 1989年!比 1995年出现的Java语言都早了好几年。Python语言可以说是老树逢春的典型。
Python的创始人,也就是“Python之父”,是荷兰人Guido van Rossum(吉多·范罗苏姆),江湖人称“龟叔”。而他之所以被中国的程序员亲切地称呼为“龟叔”,推测应该是Guido的开头类似汉语拼音“Gui”(龟)。在本书中,我们还是称呼他的本名吉多。
1982年,吉多毕业于荷兰阿姆斯特丹大学(University of Amsterdam),取得了数学和计算机科学硕士学位。尽管他的专业横跨数学和计算机两个领域,但相比数学,他本人总趋向于做计算机方面的工作,并特别热衷于编程和写计算机程序代码。而且跟好多计算机领域的“大神”类似,传说吉多在读大学的时候曾经因为沉迷于编程无法自拔,差点退学了。20世纪80年代和90年代初,吉多在CWI(荷兰国家数学和计算机科学研究所)做程序员,在此期间他发明了Python语言。1995年,吉多举家从欧洲迁居美国,先后在 NIST(美国国家标准与技术研究院)、CNRI(美国国家研究创新联合会)、 BeOpen、Zope、Elemental Security等机构和公司工作过。2005年,吉多加入谷歌担任资深主任工程师,谷歌公司许诺他可以用一半的时间来维护Python项目。传说他去谷歌面试的时候,简历上只写了三个单词“I wrote Python”,当然这只是个段子。2013年,吉多加入著名的在线文件存储服务公司Dropbox并担任首席工程师,2019年,他从Dropbox离职后宣布退休。但在2020年,64岁的吉多又复出加盟微软公司。
作为Python语言的创始人,计算机世界的英雄,吉多在现实生活中其实一直算不上是有钱人。在多年的职业生涯中,他为了赚钱供孩子上大学,还曾经离开他心爱的Python-Labs团队。但吉多对Python语言的爱从不曾减弱,他推崇开放和自由,喜欢穿印有Python主题的各种文化衫。他在Python社区一直担任Benevolent Dictator for Life(“终身仁慈独裁者”),始终参与和指导Python语言的发展和维护。
Python的诞生过程,是一个极具戏曲性的故事。市面上几乎所有的Python书籍和介绍都是这样传说的:在1989年的圣诞节期间,作为程序员的吉多觉得无聊,为了打发假期,想找一个编程项目来做,于是花了两个星期发明了Python……没错,一般大神的传说都是这样神奇!但根据Python官方网站上吉多本人撰写的文章自述,当年他在CWI的Amoeba分布式操作系统部门工作,当时他们需要一种比编写C程序或Bash脚本更好的方式来进行系统管理。而吉多之前在CWI的ABC语言实现部门工作时学到了大量有关编程语言设计的知识,他认为某种既具有ABC语言的语法又能访问Amoeba系统调用的脚本语言可以满足需求。于是吉多决定开始尝试编写这门新的语言。当然,他也不可能仅仅花两个星期就完成了Python的开发,事实上吉多经过一年多的开发和改进,才对外发布了Python语言的第一个版本。
Python的英文原意翻译成汉语是“蟒蛇”,但Python编程语言跟蟒蛇这种爬行动物显然没有一毛钱关系。之所以会选择Python作为该编程语言的名字,Python官方网站的资料文档中明确地说了,这个名字来源于英国BBC电视台从20世纪70年代开始播出的系列情景电视喜剧Monty Python’s Flying Circus(《蒙提·派森的飞行马戏团》)。当初吉多在着手编写Python的时候,还阅读了刚出版的 Monty Python’s Flying Circus的剧本。吉多觉得他需要选择一个简短、独特而又略显神秘的名字,于是他决定将这门新的编程语言命名为“Python”。Python语言最初的logo图标(图1-1),是由吉多的兄弟 Just von Rossum设计的。而现在最新的Python语言logo图样,则像是两条缠绕在一起的胖胖的小蟒蛇(图1-2)。
图1-1
图1-2
通常来说,业界都认为Python语言是在教学语言ABC的基础上发展而来的。正如吉多本人的自述,他在荷兰阿姆斯特丹为CWI工作时曾参与过ABC语言的设计开发。与那个年代大部分的编程语言不同,ABC语言以教学为目的,是专门为非专业程序员设计的。ABC语言的目标是希望让计算机语言变得容易阅读、使用、记忆和学习,并以此来激发人们学习编程的兴趣。但ABC语言最终并没有流行起来,一个重要原因是计算机硬件的性能限制。在当时,ABC语言的编译器需要性能比较强大的电脑才能运行,但在20世纪八九十年代普通电脑的性能不足,高配置电脑的使用者又并不在意编程语言的学习难度。而从吉多本人的观点来看,他对ABC语言有过许多抱怨,但同时也很喜欢它的许多特性;他觉得缺乏可扩展性是ABC语言最大的问题,ABC语言没有成功普及应用就是因为它不够开放。所以,吉多在设计Python语言的过程中,也尽量避免并改进了这方面的问题,使其成为一种具有全面可扩展性的语言。
Python的语法受到了ABC语言的强烈影响,这些语法规定让Python语言容易阅读和学习。但来自ABC语言的一些语法规定,直到今天还富有争议,比如强制缩进。一般来说,大多数编程语言都是代码风格自由的,也就是说程序代码不在乎缩进多少,不管写在哪一行,只要有必要的空格即可。但Python语言规定代码必须要缩进,因为Python是按照缩进来划分代码块的,而不像大多数语言一样是用花括号或其他符号。这也引起很多其他语言的程序员调侃说,“Python的程序员需要使用游标卡尺”。
Python语言的设计还参考了许多其他的计算机编程语言,比如Modula-3、C、C++、 Algol-68、SmallTalk、Unix shell、Perl等。除了ABC语言,Python的语法很多都来自C语言。Python从其他语言中学习和借鉴了许多优点,将各种编程语言优秀的特性融合于一体。可以说,Python就是“浓缩各种编程语言的精华”,Python的成功也代表了计算机编程语言发展历史上各种语言的成功。
最初的Python语言是作为吉多本人的个人项目,完全由他一个人开发,他主要用自己的业余时间来做这件事。后来,Python在CWI的Amoeba项目使用中获得了很大的成功,得到了吉多同事们的欢迎,他们积极向吉多反馈使用意见,并参与到Python的改进工作中来。吉多和他的一些同事组成了Python初期的核心团队,随后Python逐渐拓展到CWI之外。在Python语言的开发过程中,社区起到了重要的作用。Python的开源和开放,让来自世界各地的程序员都可以参与Python语言的开发和维护。目前,Python是由一个核心开发团队在负责维护,但吉多仍然发挥着至关重要的指导作用。以下是Python发展历史上重要的时间节点:
1991年,第一个Python解释器诞生,它是用C语言实现的,并能够调用C语言的库文件。1991年2月,Python 0.9.0第一次正式发布在Usenet(新闻网,一种交互式电子讨论组)。
Python 1.0 1994年11月发布。
Python 1.5 1997年12月31日发布。
Python 1.6 2000年9月5日发布。
Python 2.0 2000年 10月 16日发布,增加了对Unicode的支持,实现完整的内存垃圾回收机制,构成了现在Python语言框架的基础。
2001年,Python软件基金会(PSF)成立,这是一个专为Python相关知识产权而创建的非营利组织。
Python 2.1 2001年4月17日发布。
Python 2.2 2001年12月21日发布。
Python 2.3 2003年7月29日发布。
Python 2.4 2004年11月30日发布。同年,最流行的Web框架Django诞生。
Python 2.5 2006年9月19日发布。
Python 2.6 2008年10月1日发布。
Python 3.0 2008年12月3日发布。Python 3.0的重点是删除重复的编程结构和模块,新版本不完全兼容之前的Python 2源代码。Python 3.0版本常被称为“Python 3000”,或简称“Py3k”。相对于Python的早期版本,这是一个较大的升级。
Python 3.1 2009年6月27日发布。
Python 2.7 2010年 7月 3日发布。是的没错,Python 2.7的发布是晚于Python 3版本的,它主要是将很多Python 3的新特性移植到了Python 2.7中。
Python 3.2 2011年2月20日发布。
Python 3.3 2012年9月29日发布。
Python 3.4 2014年3月16日发布。
Python 3.5 2015年9月13日发布。
Python 3.6 2016年12月23日发布。
Python 3.7 2018年6月27日发布。
Python 3.8 2019年10月14日发布。
Python 3.9 2020年10月5日发布。
Python 3.10 2021年10月4日发布。
Python 3.11 2022年10月24日发布。
其中,Python 2.7是最后一个Python 2.x的版本,它除了支持Python 2.x的语法外,还支持部分Python 3.1的语法。2020年1月1日,Python官方正式结束了对Python 2的维护,这意味着Python 2完全“退休”,Python已经彻底进入Python 3的时代。从此以后,Python 2.x的类库等已经被放弃支持了,用户如果想要在这个日期之后继续得到与 Python 2.7有关的支持,则需要付费给商业供应商。对于2.x和3.x这两个版本,我们到底该选择哪一个来学习和使用的问题,Python官方的表述非常明确:Python 2.x已经是“遗产”,Python 3.x是现在和未来的语言。
由于Python 3.x向下不兼容,从2.x到3.x的过渡并不容易,整个Python世界花了漫长的十多年来进行迁移。但Python依然是一个继续发展中的语言,Python的运行效率和性能依然值得改进。“Python之父”吉多曾经在社交媒体上表示,假如会有Python 4,那么从3到4的版本过渡会更像是从1到2的过渡,而不会像是从2到3的过渡。但后来吉多在被问及Python的未来,以及什么时候会出Python 4.0的时候,他却表示可能不会有 Python 4了。他说,“我和Python核心开发团队的成员对Python 4.0没什么想法,提不起兴趣,估计至少会一直编号到Python 3.33。”
Python语言自诞生以来已超过 30年了,为何大器晚成呢?分析原因,其一是在Python刚出现的20世纪90年代,计算机硬件的性能相比现在差得多,软件程序执行的速度和效率更加重要,程序员编程时对快速开发并不是特别看重,如何“压榨”机器性能才是第一要务。而Python作为一门解释型动态语言,边解释边执行,天生就存在运行速度较慢的问题,因此并不被当时的编程业界看好。Python追求快速开发、强调语法简洁、降低学习门槛的核心理念,并没有成为当时计算机行业的主流观点。时至今日,计算机硬件的性能已经得到飞速发展和提高,运行效率已不再是制约编程语言的最重要因素,快速开发、入门简单则成为用户选择编程语言的重要考虑因素,而Python很好地满足了这些新的需求。其二是Python语言的“出身”不好。看看我们在前面介绍过的各种主流编程语言,可以说个个都“系出名门”,它们的东家不是Sun和Oracle,就是微软和谷歌,几乎都是计算机和互联网业界的巨头。因此这些语言能得到大力推广和宣传,并且有专业的组织和团队开发和维护,可以快速普及并获得成功。而Python语言“出身寒门”,最初只是个人编写开发,有些被人诟病的问题也长期得不到解决,后期因为志愿者和社区的加入才逐渐改善。所以和其他巨头公司的“正规军”比起来,Python语言的起步和能量都差了很多,这些都导致Python在初期发展较为缓慢。
回顾历史,Python语言看似是吉多本人在不经意间开发出来的,但它丝毫不比其他任何编程语言差。虽然Python在诞生的最初十来年一直不温不火,但从Python 2.0开始其开发方式转为完全开源的方式,复杂的开发工作被整个社区分担,Python也获得了高速的发展。进入21世纪之后,Python的使用率呈线性增长,越来越受到广大程序员的欢迎和喜爱,大量的企业也开始采用Python语言。到了21世纪的第二个十年,Python迎来了爆发式的增长,这主要得益于大数据和人工智能的迅猛发展,这个早在上个世纪就早已出现的编程语言终于高调回归。现如今,计算机硬件的性能已不再是瓶颈,Python语言简单容易又开源免费,因此越来越多的人开始学习和使用Python,Python不再是程序员的“特供”语言,它正在以惊人的速度席卷各行各业。
自1989年诞生以来,从名不见经传到跃居几乎所有编程语言排行榜的首位,Python堪称“编程语言界的屌丝逆袭样板”。