Python,吞噬世界:作为一个开发人员的附带项目,它已成为一种流行的编程语言

由于对现有编程语言的缺点感到失望,Guido Van Rossum创建了Python语言。 现在,这种语言已被数百万人使用,Nick Heath与van Rossum讨论了该语言的过去和未来。



Guido Van Rossum于2014年在Dropbox总部

1994年底,来自美国各地的一批精选程序员聚在一起讨论他们的新秘密武器。

Barry Worso是参加新的Python编程语言的第一次研讨会的数十名开发人员之一,并回想起其第一批用户的兴奋之情是多么明显。

“我特别记得一个人说:'不要告诉任何人我在这里,因为我们使用python的事实是一项竞争优势。” 这是他们的秘密武器。”

正如Warso所说,即使在马里兰州美国国家标准局的这次早期会议上,很明显python在简单代码编写和简单结果方面也提供了新的东西。

“当他们第一次向我展示python时,我知道这很特别。 他回忆说,这既是可读性又是用python编写代码的乐趣的结合。

如今,对python的热情已经远远超出了少数开发人员的范围,其中一些人预测它很快将成为世界上最受欢迎的语言,因为它比其他任何语言都更快地获得新用户。 每天都有数以百万计的人使用python,并且其用户的指数级增长没有丝毫放缓的迹象。

专业和新手开发人员都将Python用于各种大小的任务,并且在Web开发人员,数据科学专家和系统管理员中特别流行。 借助于python,今年获得了距我们5亿亿公里的黑洞的第一张图像,并且无数写在全世界台式计算机上的脚本都在工作。

Python在一些世界上最著名的组织中扮演着重要角色:它帮助Netflix将流视频发送到全球超过1亿个家庭,成为Instagram照片共享现象的基础,并帮助NASA探索太空。

python的早期


在某些方面,蟒蛇的流行与英国喜剧团体的流行一样,是超现实的,令人惊讶的,而英国喜剧团体以其名字而得名。在其利基市场中,该语言也同样出名和有影响力。

这种编程语言是来自荷兰的Guido Van Rossum程序员的第三方项目。 在1980年代后期,van Rossum在荷兰国家数学和计算机科学研究中心Centrum Wiskunde&Informatica(CWI)从事分布式系统的研究。 由于对现有编程语言的缺点感到沮丧,他决定制作一种新的语言-易于使用,但同时具有巨大的潜力。

对于局外人来说,创建自己的编程语言的任务类似于“我将自己制造飞机”这样的说法,但是当时30岁的van Rossum却有一定的障碍。 在CWI的三年中,他与创建ABC(一种解释性编程语言)的团队一起工作,因此他已经对如何制作执行程序员指令的解释器以及新语言需要什么样的语法构造块有了一个想法。

同样重要的是要了解用van Rossum当时可用的编程语言有限的能力来完成某件事是多么困难。 与他一起工作的分布式变形虫计算机系统要求他使用C或Unix命令行-这两个选项都有严重的局限性。 C要求开发人员不仅要面对手动管理内存和导航可能出现错误的雷区的难题-它没有用于开发人员日常任务的可重复使用的代码库,因此开发人员必须对每个新项目进行重新发明一辆自行车。 但是Unix命令行有其自身的问题-有许多用于执行常见任务的工具,但是它运行缓慢,以至于无法应付复杂的逻辑。

这些语言对开发人员的限制如此之大,以至于创建自己的解释语言-它将具有ABC的最佳功能-在Van Rossum看来确实是最好的选择。

“我通常认为:“好吧,我为什么不创造自己的语言呢?”,从ABC那里窃取了想法,但是将项目的规模从我们过去三年的工作缩减到我自己可以做的事情在三个月内,这就是蟒蛇的诞生方式,”他说。 范·罗瑟姆(Van Rossum)的确在1989年底开始着手这项工作,他从他最喜欢的喜剧团蒙蒂·蟒蛇的飞行马戏团借来了这个名字。

“那时我还没有过丰富的社交生活。 因此,我没有盯着电视机,而是写了代码,或者有时我马上做到了,”他承认。

尽管名义上他是为了方便工作而创建了python,但van Rossum知道真正的动机可能是创建自己的语言的挑战。

“我不知道我有多认真地相信这会提高我的生产力。 我认为我在某种程度上很喜欢启动项目,编写所需代码并按照所需方式进行开发的想法。 我喜欢编程,”他说。

如果对于一个普通人来说,创建自己的YP的想法似乎不寻常,那么van Rossum会有很好的公司。 在1980年代后期,由于对现有工具功能的失望,出现了许多新的流行语言。 拉里·沃尔(Larry Wall)的一句名言说,解决问题的复杂性以及“懒惰,急躁和自大”的丰富性促使他创建了Perl语言。 寻找用于创建交互式集成电路设计工具的最佳语言促使John Osterhout创建了Tcl。

在仅仅三个月的时间里,Van Rossum创建了一个可解释的python的工作原型,据他说,其中没有现代功能,但是已经可以找到该语言的现代版本。

他说:“在当今的python中,当时不存在许多重要的抽象,但是语言却非常相似。”

“那时,我拥有口译员和语言的所有基本组成部分。 他说,为解释器的第一版编写的简单python程序可能今天就可以使用,”他补充说,以相同的方式定义函数,以相同的方式缩进,以相同的方式创建字典和元组,并且有一个熟悉的交互界输入,您可以在其中编写代码并立即获得结果。

但是,当他的两个同事采用这种语言并立即开始使用它时,范·罗瑟姆(van Rossum)对它的广泛分布并没有太大的期望-他已经知道在互联网出现之前的时代推广YP是多么困难。

今天,只需单击几下即可与全世界共享软件。 在1980年代,这项任务更加艰巨,范·罗瑟姆(van Rossum)回忆起尝试分发python的前身ABC的困难。

“我记得1985年,我第一次度假时带着背包里的磁带去了美国,”范·罗瑟姆(Van Rossum)说。


Guido van Rossum于2001年成立Python软件基金会

武装着那些当时通过电子邮件形式对ABC表示兴趣的人的地址和电话号码-不能发送任何大的东西,例如源代码-他从一个地址到另一个地址,分发了磁带。 但是,尽管付出了所有努力,ABC还是没有起飞。

他说:“尽管具有出色的质量,但我们仍然无法积极发行ABC,这并不奇怪。” 但是互联网革命正在蓬勃发展,并且分发python已经非常容易-不再需要带有电影的手提箱。

范·罗瑟姆(Van Rossum)于1991年通过alt.sources新闻组向世界发布了python,几乎遵循了开放源代码许可的条件-尽管这种概念仅在六年后才会出现。 尽管必须从Usenet网络中以第21部分的形式下载python解释器,然后将其组装成一个文件并解压缩,但这种传递机制仍然比几年前进行的物理副本传递更为有效。

他说:“我希望获得一些成功,但是我已经有发布另一个项目的经验,最终导致了惨败。”

有了这样的经验,Van Rossum并没有立即从不断增长的python用户群中得出任何结论。 逐渐地,他意识到受欢迎程度并没有停止,并且在与Python社区进行定期接触之后的某个时候,他意识到自己创造了一些可以成功的东西。

“我认为,理解非常缓慢。 首次发布开源代码后,我建立了发布以下版本并与新兴的python社区进行交互的节奏。 所有这一切都感觉很严肃。”

为什么Python赢了


在1990年代初和中期开始流行该语言之后,范·罗瑟姆(van Rossum)感到python是应运而生的语言。

Van Rossum认为,开发人员被使他创建这种语言的事物所吸引。 他们想找到一种高级脚本语言,该语言在易用性和丰富功能之间取得平衡,并且不具有使用复杂逻辑时Unix命令行所遭受的限制。 他们希望结束对C进行内存管理的混乱要求,并在每个项目开始时不断为相同的基本任务重新编写代码。

Worso说python在不牺牲功能的情况下达到了可用性的平衡-1990年代初存在的语言无法提供这种功能。 “我编写了很多Perl,Tcl和C,这不是很有趣。 然后有一条蟒蛇出现在现场,我想:“哇,现在再次编程很有趣,”他说。


Barry Warso在1994年的第一次python用户工作会议上

Python提出并提供了一种清晰,明确的语法,其中通过缩进将代码分组为块,这使开发人员更容易理解代码。

Gartner应用平台战略团队的研究主管Fintan Ryan表示,尽管如此,缩进的重要性已使整个社区分裂,但无论是现在还是1990年代,代码清晰度在赢得开发人员的同情中都发挥了重要作用。 “它提出了非常清晰的语法。 在其他语言中,也可以编写这样的代码,但是python自动强制这样做。 他说,有些程序员喜欢它,而另一些则讨厌它。

python首先放置清晰易读的代码并不是一个偶然的事实-van Rossum说,不仅需要编程语言来告诉计算机该怎么做,而且还需要将思想从一个开发人员转移到另一个开发人员。

Ryan说,除了可读性之外,Python几乎立即提供了内置功能,这使其与其他语言有所不同。 “具有诸如类和异常处理之类的功能。 Python还支持lambda,map和filter等功能,这些功能在许多情况下非常有用,”他说。

如果1980年代流行的YP具有更好的质量,则可能不会出现Python。 Van Rossum创建python的动机之一是Perl脚本语言和Amoeba分布式计算系统(他在CWI上从事的工作)不兼容。 他说:“ Python很幸运,无法将Perl移植到Amoeba。” “如果Perl设法移植到了Amoeba,我永远也不会想到要创建自己的语言。”

尽管python在发布后建立了真正的依附基础,但在1990年代,他还是YaP的局外人。 Van Rossum表示Tcl / Tk和Perl争夺第一名,并且两者都具有与python相同的目标-易于使用和丰富的功能。

他说:“在90年代,Perl无疑在前三名中排名第一-大约是400公斤大猩猩-然后是Tcl / Tk,而python则仅排名第三。”

活跃的开发人员表示,如今python的增长速度比所有其他PL都要快-这是对Stack Overflow开发人员进行的年度调查(这是对PL的最全面的评论之一)得出的结论,而Perl缩小到上一次报告中不再提到的程度。

下图显示了这种爆炸性的增长,其中指出了Stack Overflow网站上与python有关的问题的视图数量如何比其他语言的问题的视图数量增长更快。



那么python如何击败他的长期竞争对手,又如何解释两个YP如此不同的命运? 范·罗瑟姆(Van Rossum)认为,尤其是这是由于在超出特定框架时维护代码库非常容易。 他说:“人们认为Perl非常适合编写10行脚本。” “但是当您有500行主代码和库中有几千行时,为了将来支持该代码,需要严格的规程。” 在python中,即使您没有这样的纪律,代码也将很容易阅读和维护。”

python的这一特性,是针对初学者的一种简单语言的组合,同时可靠地可以在其上编写大型应用程序,van Rossum将其归功于其1990年代的最初成功。

“互联网上有几位开发人员-这个故事大部分与互联网开发的早期阶段有关-他们需要编写越来越多的大型应用程序,并且他们喜欢与使用C,C ++相比,您可以在python上花费更少的精力或Java。”

随着python在1990年代的日益流行,仍在CWI工作的van Rossum发现他的创意越来越多地将他与世界各地的人们联系起来。 “我做了一些事情,它使我与来自世界各地的人们(澳大利亚,美国,其他欧洲国家的人们)建立了联系。 我真的很喜欢它,”他说。

Python和网络


到1990年代中期,他们开始以新的方式使用python,从脚本到录制和播放音频,再到网络开发语言的首次突袭,最终这将成为python的主要据点。

Van Rossum说:“语言使用的最大领域之一是Web开发,这对我个人而言也非常有趣,”他补充说,他们开始使用python在Web服务器上创建后端脚本以及Perl和命令行脚本。 “您可以创建动态网页,这已成为我最喜欢的python使用之一。”

Gartner ryan表示,蟒蛇在1990年代非常流行,因此成为快速创建功能强大的脚本的首选。 他说:“事实上,它是一种具有广泛功能的脚本语言,为许多用户减少了入门门槛。”

此外,Ryan说,YP足够灵活,而且易于学习,以至于具有不同技术背景的非常不同的用户喜欢它。 “系统管理员和其他人开始使用这种语言来自动化系统和编程,开发人员,因为诸如功能性编程和带有继承的类之类的东西; 他说,以Perl为例,这种功能要少得多。 “在人们熟悉该语言之后,学习曲线相当平缓,他们很快就开始达到很高的生产力。”

到1994年,python吸引了Michael McLay的注意,Michael McLay是美国标准局(NBS)的一位高管,如今该局已转变为国家标准技术研究院(NIST)。 MacLay预期研究人员和科学家会喜欢python,因此对NBS科学家是否可以使用python感兴趣,据van Rossum称,他“收集了大量数据,但没有好的程序员”。

为了帮助将使用python的想法推销给该局的其他成员,Maclay邀请了仍在荷兰CWI工作的Van Rossum在NIST担任访问研究员几个月。 这是python未来发展的催化剂,并严重改变了van Rossum的生活。

当时是在国家统计局办公室举行的第一次python用户工作会议,van Rossum,Barry Warso和其他最初的python爱好者开会,讨论了他们如何使用python以及他们对它的未来发展有什么希望。


Van Rossum在python用户的第一次工作会议上,与Uorso和Roger Masset一起在CNRI与Uorso一起工作。

在国家统计局办公室,范·罗瑟姆(Van Rossum)与鲍勃·卡恩(Bob Kahn)会面,鲍勃·卡恩以其在开发主要互联网技术之一TCP / IP协议中的作用而闻名。

(CNRI), , .

, , , , CWI.

«CWI , , , - », — .

« 35 . , , , . , , – ».

CNRI , , . CNRI 1995 , , Knowbot Programs, , .

, , , , – -.

« 4-10 , CNRI, », — .

CNRI, python.org, CVS- , Python Special Interest Groups – , .

1991 , . , Python Software Foundation (PSF), 2001. , 1994 , , – PyCon PSF, .

XXI , – 1994 , , , « ».

, – " " (BDFL), .

« , , , », — .

Gartner , , , Perl Node.js, , . « , », — .

, , .


, 2008 Python 3.0, . , BDFL, , , Python Enhancement Proposal PEP572 .

, , – , .

, , .

« , , , . , », — .

« , - , . , , , . PEP572, , , , , . , , , , ».

, , , - , .

«, , . - , , ».

– CPython – , . , , . , , .

«, , , — . – 25 , , , , ? , , », — .

, , , . « 25 , , ?» – .

. , , , . « , – , — . – , ».


,


尽管python继续吸引着大量的新用户,但是社区中的一些成员看到了未来的困难,并认为该语言需要发展才能保持相关性。

在今年的python用户会议上,BeeWare共同创始人Russell Kit-Maggie警告所有人,如果python无法改善对移动和新Web平台的支持,它将面临“存在的风险”。 他说:“手机和平板电脑已经渗透到市场上,以至于台式机和笔记本电脑从未梦想过,而且社区也不知道如何在这些设备上使用python。”在学校使用iPad。 “当笔记本电脑成为利基设备时,Python会发生什么?”

Kit-Maggi的BeeWare项目旨在在任何地方使用python运行一次程序,并推出了python现在在支持标准x86 PC以外的平台方面存在的一系列问题。

他指出了以下缺点:需要改进对与x86不兼容的新平台的编译代码支持; python测试套件在移动和网络平台上崩溃; python应用程序的安装大小过大,无法减少为一小部分依赖项; 需要花费精力最终确定asyncio库以与Android,Windows和Web的GUI配合使用; 与CPython以外的Python解释器不兼容的标准库中的模块数。

Worso说Kit-Maggie说的是对的,并考虑了与为新平台-手机,平板电脑和WebAssembly等新网络技术更新python相关的重要问题。

Warso说:“到目前为止,Python不能提供任何有用的东西,”梦到能够下载适用于iPhone或Android的应用程序的梦想,“甚至都不知道它是用python编写的。”

随着现代芯片中处理器内核数量的增加(在英特尔最新的服务器处理器中多达48个内核),Uorso还期待python何时能够更好地跨多个内核分配任务。

他对Eric Snow在子解释器方面的工作潜力以及它们如何在进程的同时操作中扩展python的功能非常感兴趣。 他说:“我真的很希望看到更多有关充分利用多核系统的工作。”

Snow正在从事一个长期项目,该项目使python轻松在多个处理器内核之间有效地分割任务。 同时,他专注于使用诸如子解释器之类的有趣python功能的修订版,并更改每个子解释器与全局解释器阻止程序(GIL)交互的方式。

“对于Python 3.8,它没有时间准备,也许它将在3.9版本中,” Worso说。 “我认为我们将在未来两到两年半内看到这种情况。” 我很乐观 我很高兴Eric继续努力,因为我认为这很重要。”

他说,即使从支持多线程python的失败项目(例如The Gilectomy)中,您也可以通过在内核之间分配工作来学习与python如何变得更好有关的有趣课程。

Python社区也正在采取措施,用嵌入式代码升级标准语言库,并且最近发布了一项建议,从中删除过时的模块。 这是对最近对python标准库状态的批评的回应。 它通常被认为是该语言的优势之一,可用于解决各种普通任务,因此人们常说python具有“电池组”。 但是,在今年的python开发人员会议上,有人提出了一个问题,那就是让人们从PyPI存储库中选择库是否比将所有功能与语言作为标准库一起交付会更好。

还有人质疑管理语言开发的人员-主要开发人员和理事会-能否更好地反映2019年多样化的python用户基础。 Vijaya说:“我希望看到各种指标的最佳显示,不仅在性别平衡方面,而且在种族方面,以及其他所有方面。”

“我在PyCon上与来自印度和非洲的PyLadies乐队的女孩们交谈。 他们说:“当人们听到有关python或PyLadies的信息时,他们会想象来自北美或加拿大的人们,但实际上,在世界其他地区,也有广泛的用户群。 为什么他们这么少见? 在我看来,这是合理的。 因此,我希望看到这一点,并且我认为我们所有人都应该参与其中。”

因此,Worso说,尽管幽默的想法由负责所有问题的“慷慨的独裁者”主持,但近年来,所有改变python的想法都来自社区,这要归功于人们最大限度地使用python并为新用户打开了大门。 他说:“实际上,一切都是自下而上,从社区的角度发生的,反之亦然。”

作为简单的社区项目如何严重影响python的一个示例,Type Hints是Python 3.5的一项功能,其灵感来自于该研究生于2012年启动的mypy项目。 这些“提示”允许进行可选的类型检查,这使开发人员可以捕获特殊类型的错误,否则这些错误就可以避免。


今年,python帮助整理了碎片中第一个黑洞的图像

如果您有一个很多人都在大型代码库上工作的项目,那么这种额外的安全级别不仅是一个有趣的机会。 对应该做什么代码不应该做什么代码的额外了解可能至关重要。

Worso表示:“这允许python满足大型公司的需求,例如Instagram,它实际上运行在Python 3上,这对我来说是无价的,” Asyncio 引用了该想法的另一个示例。一个会严重影响语言能力的社区。

Van Rossum拥有董事会和有史以来最大的用户基础,他对“通过社区的语言发展”将继续取得“令人难以置信的成功”感到乐观。

他说:“我们有一个非常密集的关键开发人员社区,他们拥有一个新的政府系统,我认为我们为python及其发展所带来的要求做好了充分的准备。”在社区中。

Warso说,如果有人怀疑社区是否有能力找到意想不到的新方法来使用该语言,那么您需要做的就是探索python在获取黑洞的第一张图片中的作用。

“这真让我震惊。 我认为python社区中有一些人是我们的疯狂科学家。 他们一直在努力突破语言的局限。”

Source: https://habr.com/ru/post/zh-CN466807/


All Articles