十五年前,《程序员》杂志曾专访过Python之父GuidovanRossum,一起探讨了Python3.0的较为明显的新特性,即增加了对中文(Unicode)的支持。十五年过去,Python的版本号只前进了一个数字,但是Python已经是编程流行度的王者。我们也在近期对GuidovanRossum再次进行采访,除了就开发者们关心的Python4问题进行了最新披露外,还对软件开发核心进行了深层解读。
年,CSDN《程序员》编辑在GoogleDevDay大会现场采访到GuidovanRossum,那时的他已经加入Google近两年,而Python已经是Google的第三大编程语言,适用速度不太高的应用,比如企业内部的一些小工具以及和沟通交流的工具应用。当时的会场上不断有中国程序员走近Guido,索要签名和合影,就像打卡网红景点一样。Guido很高兴地看到Python在中国正从小众走向大众。对于如何推动Python在中国的发展,他认真地提出了几个小建议“比如,CSDN网站上有人在翻译我的英文Blog。出版社也可以考虑出一本中文的Python教程或图书,或把一些现有的Python书籍翻译成中文。”
弹指一挥间,从GuidovanRossum在年发布第一个Python公开发行版本算起,Python已然过了三十而立又一年。Guido的小建议已一一实现,如今的Python也在全球编程语言总榜牢牢占据第一,超越了众多历史上流行的编程语言,成为最受欢迎的解释型编程语言,可以跨平台运行在所有主流操作系统之上。同时它在众多软件企业和组织,例如Google、Mata(Facebook)、Twitter、RedHat、Dropbox、阿里巴巴、腾讯、百度、NASA等,都是排在最前列的编程语言。在CSDN-中国开发者调查报告中,工作中常用Python的开发者占比达30.7%,使用量呈逐年攀升趋势。
另一方面,诞生之初便是开源项目的Python,三十多年来其生态圈对整个开源事业的贡献可谓源源不断,绵绵不绝。在年由于GPL早期在美国个别州与地方法律存在冲突,Python2.0发行版便自行创立了PSFL许可证,为推动GPL的进步作出了贡献。Python社区也贡献了众多的开源软件,例如NumPy、SciPy、Matplotlib等众多科学计算程序库,TensorFlow、PyTorch机器学习框架,SaltStack和Ansible等DevOps运维自动化平台,OpenStack云计算解决方案,还有Django、Tornado、Flask等数不清的PythonWeb应用开发框架,等等,都已成为开源软件开发的重要基石。
此外,作为Python软件基金会(PSF)成员之一的Google,还有一个GoogleSummerofCode(GSOC)的项目,被众多开发者所喜爱,它赞助世界各地的大学生利用暑假时间参与到一些开源软件的开发中,为开源提供生生不息的新力量,如今已是全球最大的开源社区实习项目。
Guido从一个小众语言的发明者,到最流行语言的“仁慈的独裁者”,转变为一个退休编程爱好者加入微软,他现在的工作和生活状态如何?本次对话,我们也向CSDN开发者征集了最想问Python之父的问题,从CSDN副总裁邹欣与GuidovanRossum的独家对话中,一起看看他的精彩解答。下面是Guido在加州海边度假别墅中的对话实录。
1Python缘起与三十载风云发展史
邹欣:现在很多人的第一门编程语言就是Python。你是怎么开始学习编程的?
Guido:我最早是与年在阿姆斯特丹开始学习编程。学的第一门语言是ALGOL60,后续还学过一些别的语言,但我最爱的是Pascal,它是一门非常优雅的语言。在这个过程中,我逐渐了解一门编程语言应有的特性,以及它们在处理具体问题时各自的特点。例如,在ALGOL60里是没有字符串类型的,如果想定义一个标识符就必须用一种魔法一般的方式来处理字符串,这种魔法在不同的输入硬件上的施展方式还不一样——要知道我们当时是通过穿孔卡片来输入代码的,每一种卡片机都是不同的。而Pascal在处理字符串上也很有一套,我认为Pascal非常优雅,能帮程序员高效率编程。
邹欣:上世纪90年代初,你在圣诞节假期作为个人兴趣项目创建了Python,当时你有没有想过有一天Python会如此大放异彩?如何看待今天的Python?
Guido:当时,我在工作中有个任务要完成:用C语言写一大批功能非常相似的小型工具。对于重复编写非常相似的C语言代码,我比较心烦,如果能有个比C语言更好的编程语言就好了,我就能非常快速地完成任务。后来,我索性自己发明了Python。当时只是想创造一个“胶水语言”,把写过的C语言小程序粘贴在一起构成一个新的工具。
我对Python后来的发展其实根本没有什么预期,我觉得它就跟当时做过的许多失败的项目一样,没有什么特别之处。Python最开始的发展其实非常缓慢。它后来之所以会得到大家的青睐,主要是在上世纪90年代末期,很多科学家开始在进行科学计算时,就像我一样用Python来作为“胶水语言”,调用原来由Fortran或C++编写的代码。对于这些科学家来说,Python是非常顺手的工具。
对比现在的Python和最早的版本,你也许会发现Python这门编程语言几乎没怎么变,只是类的声明有少许改变;print从一开始到Python2一直都是语句,直到在Python3里才变成了函数;函数从最开始没有关键字和参数到后来有;以及Python3才出现的双下划线魔法函数(Dunder/MagicMethods),等等。但总的来说,现在的Python跟最开始相比并没有特别大的差别,无论是语法、语义还是其本质精神都非常接近。
邹欣:大家刚接触Python这门语言时都会好奇的就是强制的代码缩进。如果重来一次,你是否会放弃缩进这个强制要求?
Guido:代码缩进(Indentation)其实并不是我发明的,当时的同事给了我启发。在Python中要求进行代码缩进的原因是30年前的代码编辑器都不能很好地对代码进行缩进排版,所以我就想鼓励程序员自己来对代码进行正确的排版,从而确保程序员从视觉上对代码的理解与编译器对代码的解析是一致的。这其实非常重要,几年前苹果公司就发生过一次非常严重的代码安全漏洞事故,就是由于代码中一个语句与程序员实际设想的if-else语法逻辑没有匹配而引起的,如图1。其实,严格要求代码缩进确实有点夸张,改用花括号,也不是不可以。
图1:Apple的SSL/TLS错误
邹欣:开源编程语言Python的发展是否像所谓的“曲棍球曲线”一样,是突然获得了高速发展?
Guido:我其实不是很喜欢“曲棍球曲线”这个词,虽然这是一种非常直观的表述。实际上任何事物的发展最终都会变得平滑,就像一个S曲线一样,在发展达到一个高峰后就不会继续高速发展了。
对于我来说,衡量Python发展的一个指标其实是社区事件。Python最早是在年,一个与开发工具有关的Usenet新闻组里发布的,后来我们建立了邮件列表(mailinglist),到年Python有了专属的Usenet新闻组