Python之父宣布退休,但Python仍在吞噬世界他发推文说,“苦乐参半:我即将离开Dropbox,现已退休;亲爱的,我在Dropbox担任工程师期间学到了很多东西,比如从这次经历中键入注释。我会非常想念在这里工作。”Python正在吞噬世界如今,对Python的热情已经远远超出了最初的开发者圈子。有人预测,随着Python用户群的快速增长,它很快就会成为世界上最流行的编程语言。每天有数百万人使用Python,并且用户群呈指数级增长,几乎没有下降的迹象。专业和业余开发人员都使用Python来完成大大小小的任务,尤其是Web开发人员、数据科学家和系统管理员。今年出现的第一批黑洞图像是使用Python拼接在一起的。Python在世界上一些最著名的组织中发挥着关键作用,例如Netflix使用Python为全球超过1亿个家庭提供流媒体视频,Instagram使用Python共享图片,NASA使用Python探索太空。Python的早期Python最初是荷兰程序员GuidovanRossum的个人项目。80年代后期,vanRossum在荷兰国家数学和计算机科学研究中心的CWI部门开发了分布式系统。对现有的编程语言感到失望,他决定开发一种新语言——一种既易于使用又功能强大的语言。对当时的vanRossum来说,用市面上仅有的几种编程语言很难做任何事情。他开发的Amoeba分布式计算系统要求他使用C语言或Unixshell,这两种语言都有很大的局限性。C语言需要开发者自己手动管理内存,容易埋下潜在的bug,也缺乏可重用的代码库。想要完成日常任务的开发人员需要在每个新项目中重新发明轮子。Unixshell还有另一个问题——它为日常任务提供了一些实用程序,但它们处理复杂逻辑的速度太慢了。这些语言对开发人员施加了这样的限制,以至于在vanRossum看来,他自己创建的这种解释型语言——从ABC语言中借用了一些特性——似乎是最好的选择。“我在想,为什么不自己开发一种语言呢?我本可以借鉴ABC的一些想法,将项目的规模缩短到三年,”vanRossum回忆道。在几个月内,我把它变成了我自己的个人项目。Python就这样诞生了。”1989年末,vanRossum开始认真开发这门语言,借用了他最喜欢的喜剧团体“MontyPython”的名字,并且因为它与蛇的关系,后来有了盘绕着蟒蛇。他说:“当时我并不知道Python是否真的会让我的工作更有效率。在某种程度上,我真的很喜欢这样的想法,我可以自己做一个大项目,然后按照我的设计按照你想要的方式实施。在我看来,编程是一件有趣的事情。”三个月后,vanRossum有了一个可以工作的Python原型。“虽然今天的Python有许多当时不存在的抽象特性,但语言本身仍然保持一致,”他说。那时,Python已经有了解析器和运行该语言所需的基本组件。第一个起作用的Python程序今天还在运行。”他们的函数定义相同,缩进相同,创建字典和元组的语法相同,交互提示也相同。当他的两个同事开始时将这门语言用于日常任务,vanRossum没想到它会流行起来。因为他知道在互联网时代之前让一门编程语言流行起来有多么困难。今天,只需点击几下就可以分享一款软件与世界,但在1980年代,这是一件非常费力的事情。1991年,vanRossum通过alt.sources新闻组向世界发布了Python。当时它基本上是一种开源许可证,早于“开源”一词license"本身已经六年了。虽然当时的Python解释器仍然需要将21个单独的部分连接成一个zip文件并在一夜之间从Usenet网络下载它,但它仍然比离线发送磁带更有效。几年前。他说:“我希望Python能成功,毕竟我之前做的另一件事基本以失败告终。”vanRossum说他花了很长时间才知道Python的用户群在增长。渐渐地,他意识到Python的发展势头正在形成,在与Python社区交流了一段时间后,他知道Python成功了。为什么Python会赢当Python在20世纪90年代初期和中期开始受到关注时,是Python的时候了,这让vanRossum感到震惊。vanRossum认为,被Python吸引的开发人员转向Python的原因与他最初创建它的原因相同。他们需要一种能够在易用性和功能性之间取得平衡的高级脚本语言。他们希望结束在C语言中手动管理内存以及在开始新项目时需要为重复性任务重新实现代码的日子。Warsaw说,Python在可用性和功能之间取得了平衡——这是1990年代初期任何主要编程语言都没有提供的平衡。“我写了很多Perl、Tcl和C代码,但一点都不好玩。当Python出现时,我想,‘哇,这让编程变得更有趣了’”。无论过去还是现在,Python都提供了一种清晰明确的语法,该语法使用缩进将代码分组,使开发人员更容易阅读和理解代码。Python强调代码的简单性和可读性并非偶然。vanRossum曾公开表示,一种编程语言不仅应该告诉计算机该做什么,还应该促进开发人员之间思想的传递。Ryan说,除了可读性之外,Python还具有一些早期内置的通用功能,这些功能使Python从其他语言中脱颖而出。“您可以从一开始就使用某些功能,例如类和异常处理。Python还提供对lambda、映射和过滤器等功能的支持,这些功能在许多情况下都非常有用。”如果80年代后期的主流编程语言再好一点,Python可能就没有机会了。vanRossum开发Python的动机之一是Perl与他在CWI工作时使用的Amoeba分布式计算系统不兼容。“Python的幸运在于Perl无法移植到Amoeba。如果Perl可以移植到Amoeba,我就不想自己开发一种语言,”他说。尽管Python在发布后吸引了铁杆粉丝,但在1990年代,Python在编程语言方面仍然处于劣势。Python的竞争对手,vanRossum说,是Tcl/Tk和Perl,这两种语言的目标与Python的相同:易用性和强大。“在1990年代,在前三大编程语言中,Perl绝对是第一,Tcl/Tk是第二,Python是第三,”他说。StackOverflow开发者报告显示,就开发者活动而言,Python是增长最快的编程语言,而Perl正在萎缩,甚至没有出现在最新的StackOverflow开发者报告中。下图显示了这种爆炸性增长。近年来,StackOverflow网站上与Python相关的问题数量增长速度远远超过其他编程语言。那么,Python是如何超越它以前的竞争对手的呢?以及如何解释两种语言截然不同的命运?根据vanRossum的说法,这与代码库达到一定规模后维护它的难易程度有关。他说,“从人们的经验来看,Perl适合写行数少的脚本,但如果你的主代码超过500行,再加上几千行分支代码,那么Perl中有很多原则遵循维护这些代码。在Python中,你不需要遵循那么多原则,而且代码的可读性和可维护性仍然很高。”Python的简单性和易用性的结合,同时足够健壮以开发大型应用程序,是Python在1990年代取得成功的原因。“一些互联网开发人员想要开发越来越大的应用程序,他们意识到这很重要用Python开发应用程序比用C、C++或Java更容易”。随着Python在1990年代越来越流行,当时在CWI的vanRossum发现他创建的编??程语言越来越多地将他与来自世界各地的人们联系起来Python和Web在20世纪90年代中期,出现了Python的新用例,从音频录制和播放到它首次涉足Web开发,后来成为Python的主要用例。“Web开发很重要,而且这对我来说是一件非常有趣的事情,”vanRossum说。Python开始与Perl和shell脚本一起用于Web服务器后端开发。“你可以创建动态网页,这是我最喜欢的Python用例之一”。根据Gartner的Ryan的说法,Python在1990年代在开发人员中流行起来,主要是因为它可以用来快速创建功能强大的脚本。“作为一种非常强大的脚本语言,它降低了许多用户的使用门槛。”Ryan还表示,该语言的灵活性和易用性吸引了具有不同技术专长的用户。1994年,Python引起了MichaelMcLay的注意。McLay当时在国家标准局(NBS)担任高级职位,现在在美国国家标准与技术研究院(NIST)工作。McLay正在考虑ONS科学家如何也可以从Python的易用性中受益。根据vanRossum的说法,英国国家统计局的科学家“必须处理大量数据,但他们不擅长编程”。为了在NBS推广Python,McLay邀请了当时还在荷兰CWI工作的vanRossum到NIST做为期两个月的访问研究员。此举成为Python未来的催化剂,也是vanRossum生活的重大转变。大约在这个时候,vanRossum和WarsawRogerMasse在国家统计局的办公室举办了他们的第一个Python研讨会。vanRossum、BarryWarsaw和其他早期的Python爱好者聚在一起分享他们使用Python所做的事情,以及对Python未来的期望。正是在这个办公室里,范罗森认识了鲍勃卡恩。Kahn是TCP/IP协议的作者。那次会议导致范罗森提出与卡恩一起在国家研究与创新联盟(CNRI)工作。CNRI是一家位于弗吉尼亚州的非营利性研究机构,专注于网络技术的战略开发和研究。自1991年Python公开发布以来,Python用户群有了显着增长。到90年代后期,Python吸引了来自世界各地的大量用户。在此期间,随着Python软件基金会(PSF,2001年正式成立)前身的成立,Python语言的管理开始规范化。随着社区的发展,两年一度的Python研讨会演变成一个更大的年度活动,最终成为PSF的年度PyCon,至今仍然很受欢迎。在21世纪,Python用户群不断壮大,早期的Python用户担心如果vanRossum出了什么事,Python会怎样。不管怎样,vanRossum继续在Python中扮演核心角色。他是Python核心的想法从未消失,有人称他为Python的“终生仁慈的独裁者”(BDFL)。这个半开玩笑的标题已经存在多年了。“在很长一段时间内,我承受了压力并培养了项目管理技能。我将很多事情委托给人们,让他们按照自己的方式做事,”vanRossum说。事实上,vanRossum建立的Python的开放性(社区核心开发者之间的公开讨论)一直是Python成功的决定性因素。Python的演变在此期间,Python实现了突飞猛进的发展。2008年,Python3.0发布,使Python成为现代编程语言。最近Python的管理方式也发生了重大变化。这些变化发生在去年,当时vanRossum由于对PEP572中引入的赋值表达式存在分歧而放弃了BDFL称号。虽然引入了赋值表达式来更有效地编写代码,但vanRossum在网上遭到了反对者的严厉批评,一些人认为该提案会降低代码的可读性和可维护性。VanRossum表示,虽然他习惯了围绕新功能争论不休,但这次他被诋毁,他们非常强硬,甚至有人对他进行人身攻击,所以他决定辞职。他说:“技术上持不同意见的人开始在社交媒体上抱怨我在Python中破坏了决策过程,或者说我犯了一个严重的错误。我非常失望,我感到有人在背后攻击。”。“过去,在决定是否对Python进行更改或改进时,一群核心开发人员会讨论这件事的利弊。他们会达成明确的共识,如果结果不明确,我”d在脑海里翻来覆去,然后做出决定。在PEP572提案上,尽管有争议,但我选择了“是的,我想做这个”,但人们并不买账。“这不是叛逆,但我觉得核心开发者社区对我的信任不够。”他认为,人们对Python的争论方式发生了变化,部分原因是现在使用Python的人太多了。“Python社区的规模不断扩大可能是原因之一。当然,很难达成任何一种共识,因为无论你做出什么决定,总会有人不同意。”Python核心开发人员MariattaWijaya今年早些时候,负责维护CPython解释器的核心开发人员组成了一个指导委员会,负责监督Python的未来发展。成员包括vanRossum、Warsaw以及其他核心开发人员BrettCannon、CarolWilling和NickCoghlan。Warsaw说,当一种编程语言的用户群以如此快的速度增长时,有必要以这种方式管理该语言的增长。“我认为范罗森真的把一切都扛在了肩上,”他说。“25年前,当Python还是一门小众编程语言,社区也小得多时,vanRossum或许可以独自扛起它,但即便如此,他一个人的工作量仍然很大。我认为,考虑到他的个人健康和社区参与,最好将负担分摊给五个人。”Warsaw表示,每次发布Python的新特性版本后,都会进行指导委员会选举,为下一代Python语言核心领导层的建立做准备。他说:“如果Python在25年后依然长青,那时候的掌舵人不应该是vanRossum和我”。指导委员会的成立也受到了核心Python开发者社区的欢迎。核心开发人员MariattaWijaya表示,此举感觉是朝着正确方向迈出的一步。她说:“对我来说,一个指导委员会比让一个人决定一切要好得多——这是一项巨大的责任和负担。这是一个好兆头,这意味着社区将会有更多的投入”。Python的未来虽然Python继续以惊人的速度吸引新用户,但社区中的一些人也看到了未来的挑战。如果Python想要保持常青,它就必须进化。在今年的Python语言峰会上,BeeWare联合创始人RussellKeith-Magee表示,如果对移动和Web平台的支持得不到改善,Python将面临“生存危机”。“手机和平板电脑已经渗透到台式机和笔记本电脑从未达到的程度,但整个社区都没有关于如何在这些设备上使用Python的案例,”他说。当Python成为小众设备时,它的困境是什么?”他指出了Python的一些问题,例如Python尚不支持在非x86硬件平台上编译代码,Python的测试套件在移动和Web上易于使用平台崩溃,Python应用体积过大,Android、Windows、Web上的GUI代码开发需要asyncio库,需要额外的工作,标准库中的很多模块不兼容其他解释器CPython.Keith-Magee提出了很多好的观点,Warsaw说,并认为Python跟上新平台的步伐很重要——手机、平板电脑和WebAssembly等Web技术。“Python在这一点上并没有真正发挥作用现在,”Warsaw说,他希望iPhone或Android手机能够下载用Python开发的应用程序,而用户甚至不知道“它们最初是用Python开发的。”现代处理器芯片的核心数量不断增加(Intel最新的服务器处理器有48个内核),而Warsaw希望Python能够更好地让任务在多个处理器内核上运行。Warsaw说:“这些特性不会出现在Python3.8中,但可能会在3.9中加入。我认为我们将在未来两到两年半内看到这些特性。我真的很高兴Eric可以继续做下去,这是一项非常重要的工作。”Python社区正在对标准库进行现代化改造。最近发布了一项从标准库中删除过时模块的提案。Python的标准库通常被认为是Python的强项,因为它被用来处理许多常见的任务,这就是为什么人们说Python有“内置电池”。但在今年的Python语言峰会上,有人提出了一个问题:如果人们可以从PyPI中选择自己的模块而不是使用内置的标准库,那不是更好吗?还有一个问题,2019年Python指导委员会的成员构成是否更好地反映了Python用户群的多样性?Warsaw说,虽然有一位“仁慈的独裁者”在掌权,但近年来关于Python开发的很多想法都来自社区。“这些想法实际上是来自社区,而不是自上而下推动的,”他说。简单的社区项目可以对Python产生巨大的影响。例如,Python3.5的一个特性类型提示,其灵感来自一名博士生在2012年启动的mypy项目。类型提示可以执行可选的类型检查,帮助开发人员在渗透程序之前发现某一类错误。当有一群人同时在大型代码库上工作时,这个额外的安全层会非常有用。Warsaw说,“在我看来,这让Python可以渗透到更大的组织中(比如Instagram基本上都在使用Python3)”。此外,asyncio是Python社区驱动开发的另一个示例。随着指导委员会的成立和用户群的空前增长,vanRossum乐观地认为“Python的社区驱动发展”将继续取得“无与伦比的成功”。“一个拥有坚实核心开发人员的社区,现在有了新的治理系统,我认为我们为Python语言的发展做好了更好的准备,”他说。Warsaw说,如果有人怀疑Python社区继续为Python寻找新应用的能力,让他们看看使用Python捕获的第一张黑洞图像。“我认为Python社区中总有人是疯狂的Python科学家。他们总是认为,如果你今天能做到这一点,明天你能走得更远吗?”
