首页 > 评论 > 关键词 > Python最新资讯 > 正文

Python正在吞噬世界

2019-08-29 09:21 · 稿源:InfoQ公众号

黑客攻击 安全 代码 安全漏洞 程序员

声明:本文来自于微信公众号 InfoQ(ID:infoqchina),授权站长之家转载发布。

作者丨Nick Heath

译者丨无明

策划丨小智

2018 到 2019 年,所有编程语言的流行度都在下滑,除了 Python。Python 为什么会变得越来越火?本文梳理了 Python 的发展史,试图揭示背后的秘密。

1994 年末,一群来自美国各地的程序员聚在一起,讨论他们的新式秘密武器。

这是 Python 有史以来的第一次研讨会,有 20 多名开发者参加,Barry Warsaw 是这些与会者当中的一员。他回忆起那些早期 Python 用户的兴奋之情:

“我记得有一个人说,‘你不要跟别人说我来参加这个研讨会,因为使用 Python 就像拥有了某种竞争优势’。在他们看来,Python 就是他们的秘密武器,不是吗?”

在早期的 Python 研讨会上,Warsaw 就曾说过,Python 提供了一些东西,让代码编写变得更加简单,更容易完成编程任务。

他回忆道:“当我第一次接触 Python 时,我就知道它有一些特别之处。Python 的可读性不错,编写 Python 代码变成了一种乐趣”。

如今,人们对 Python 的热情已经远远超出了最初的开发者圈子。一些人预测,随着 Python 用户群的快速增长,它很快会成为世界上最流行的编程语言。每天有数以百万计的人使用 Python,用户群呈现出指数级的增长,几乎没有出现下降的迹象。

不管是专业的还是业余的开发人员,他们都在使用 Python 处理大大小小的任务,特别是 Web 开发人员、数据科学家和系统管理员。今年出现的第一批黑洞图片就是用 Python 拼接出来的。

Python 在一些世界知名的组织中扮演着关键角色,比如,Netflix 用 Python 向全球 1 亿多户家庭提供流媒体视频,Instagram 用 Python 实现图片分享,NASA 借助 Python 来探索太空。

Python 的早年时期

从某些方面看,Python 的崛起就像那个英国喜剧团体(Python 因这个喜剧团体而得名)一样不寻常。在 Python 自己的领域,这门编程语言也变得越来越出名和越来越有影响力。

Python 原先是荷兰程序员 Guido van Rossum 的一个个人项目。20 世纪 80 年代末,van Rossum 在荷兰国家数学和计算机科学研究中心的 CWI 部门开发分布式系统。由于对已有的编程语言感到十分失望,他决定开发一门新的语言——一门既易于使用功能又强大的语言。

Python 之父 Guido van Rossum

对于外行来说,自己开发一门编程语言就像是“造飞机”一样,但当时 30 多岁的 van Rossum 在某些方面已经很有造诣。他花了三年时间与 CWI 的一个团队合作,一起开发了 ABC(一种解释型编程语言),他知道开发一个可以执行指令的解释器需要些什么,以及一门新的编程语言需要哪些语法构建块。

对于当时的 van Rossum 来说,使用仅有的几种编程语言完成任何一件事情都显得很困难。他正在开发的 Amoeba 分布式计算系统要求他使用 C 语言或 Unix shell,但这两种语言都有很大的局限性。C 语言要求开发人员自己手动管理内存,容易埋下潜在的 bug,而且还缺少可重用的代码库。开发人员想要完成日常任务,需要在每个新项目中重新发明轮子。Unix shell 存在另外一个问题——它虽然为日常任务提供了一些实用程序,但它们的运行速度太慢,无法处理复杂的逻辑。

这些语言对开发人员造成的限制如此之大,以至于在 van Rossum 看来,他自己创建的这门解释型语言——从 ABC 语言借用了一些特性——似乎是最好的选择。

van Rossum 回忆道:“我当时在想,为什么不自己开发一门语言呢?我完全可以借鉴 ABC 的一些想法,并将项目的规模缩小一些,把原先需要花三年时间完成的东西缩短至三个月内,让它变成我自己的个人项目。于是,Python 诞生了”。

1989 年末,van Rossum 开始认真地开发这门语言,并借用了他最喜欢的喜剧团体“Monty Python”的名字,又因为与蛇有关系,后来就有了那个盘绕的巨蟒的 logo。

他说:“当时我的社交生活并不丰富。除了看电视就是写代码,有时候也会同时做这两件事”。

虽然名义上 van Rossum 是为了更好地完成日常工作而开发 Python,但他承认他的动力更多的是来自于自己开发一门语言所要面临的挑战。

他说:“当时我也不知道 Python 是否真的会让我的工作变得更有效率。在某种程度上,我真的很喜欢这种可以自己完成一个大项目的想法,并且可以按照我想要的方式来设计和实现。在我看来,编程是件有趣的事情”。

对于一般人而言,自己开发一门编程语言可能是件很不寻常的事情,但像 van Rossum 这样的例子并非独有。在 20 世纪 80 年代末,各种主要编程语言的出现都是因为当时有限的工具无法满足开发者的需求。Larry Wall 曾经说过,他之所以创建 Perl,是因为其他语言很难解决他的问题,而且他是一个“懒惰、不耐烦和狂妄自大”的人。类似地,为了找到可用于构建集成电路交互工具的语言才,John Ousterhout 设计了 Tcl。

三个月之后,van Rossum 做出了可运行的 Python 原型。

他说:“虽然现在的 Python 有很多在当时并不存在的抽象特性,但语言本身仍然始终如一”。

“那时,Python 已经具备了解析器和运行语言所需的基本组件。第一个可运行的 Python 程序放到现在仍然可以运行”。它们的函数定义是一样的,缩进是一样的,字典和元组的创建语法是一样的,交互式提示符也是一样的。

当他的两个同事开始使用这门语言处理日常任务时,van Rossum 并没有指望它会流行起来。因为他知道,在互联网时代到来之前,让一门编程语言流行起来有多么困难。

在今天,只需要点击几下鼠标就可以把一款软件分享给全世界,但在上世纪 80 年代,这是一件非常费力的事情。van Rossum 回忆起当时推广 ABC 遇到的困难:

“我记得大约在 1985 年,我第一次去美国度假。那是我第一次去美国,我的行李箱里装了一沓磁带”。

当时可用的通信方式只有电子邮件,而电子邮件并不适合用来传播源代码。他从电子邮件里拿到了对 ABC 感兴趣的人的地址和电话号码,然后挨家挨户送磁带。尽管他很卖力地给用户送磁带,都没能让 ABC 真正流行起来。

他说:“尽管 ABC 提供了很多优秀的特性,但我们在 ABC 的推广方面并没有取得很大进展”。不过,随着互联网革命进程的演进,Python 的推广工作变得容易得多,他不用再拖着装满磁带的行李箱到处跑了。

1991 年,van Rossum 通过 alt.sources 新闻组向全世界发布了 Python。这在当时基本上算是一种开源许可协议,比”开源许可协议“这个术语本身早了六年出现。虽然当时的 Python 解释器仍然需要将 21 个单独的部分连接成一个压缩文件,并需要连夜从 Usenet 网络上下载下来,但与几年前线下送磁带的方式相比,它仍然要高效得多。

他说:“我希望 Python 可以取得成功,毕竟之前我做的另一个东西基本上以失败告终”。

van Rossum 说,在很长一段时间之后,他才知道 Python 的用户群在增长。渐渐地,他意识到 Python 的发展势头正在形成,在与 Python 社区进行了一段时间的交流之后,他知道,Python 成功了。

“这个发现来得非常缓慢。在发布了第一个开源版本之后,我制定了一个新的发布周期,并与 Python 社区频繁交流。我们感觉这是一件很了不起的事情”。

Python 为什么会赢

Python 在 20 世纪 90 年代初期到中期开始受到关注,Python 的时代到来了,这让 van Rossum 感到震惊。

van Rossum 相信,被 Python 吸引过来的开发者,他们转向 Python 的原因与他当初创建 Python 的原因是一样的。他们需要一门高级的脚本语言,能够在易用性和功能之间取得平衡。他们希望能够结束在 C 语言中手动管理内存、在开始新项目时需要为重复任务重新实现代码的日子。

Warsaw 说,Python 在可用性和功能之间取得了平衡——在 20 世纪 90 年代早期,任何一门主流编程语言都没能提供这种平衡。”我写过很多 Perl、Tcl 和 C 代码,感觉它们一点都不好玩。Python 一出现,我就想,‘哇,它让编程变得更有趣了’”。

不管是过去还是现在,Python 提供的都是清晰而明确的语法,它使用缩进将代码分组成块,让开发人员更容易阅读和理解代码。

Gartner 公司的研发总监 Fintan Ryan 说,无论是现在还是在上世纪 90 年代,Python 清晰明了的风格都在吸引开发者方面起到了重要作用,尽管通过缩进来达到这种效果在开发者当中存在分歧。”Python 的语法非常简洁。你也可以在其他语言中实现缩进,但 Python 已经自动实现了。有些程序员喜欢这种缩进方式,有些则不喜欢”。

Python 强调代码的简洁和可读性,这并非偶然。van Rossum 曾公开表示,编程语言不仅要告诉计算机该做什么,还要便于在开发者之间传递思想。

Ryan 说,除了可读性之外,Python 很早就内置了一些通用的功能,这让 Python 从其他语言中脱颖而出。“你从一开始就可以使用某些功能,比如类和异常处理。Python 还提供了对 lambda、map 和 filter 等函数的支持,这些东西在很多情况下都非常有用”。

如果 80 年代末的主流编程语言能够再好一点,或许就不会给 Python 留有机会。van Rossum 开发 Python 的动机之一就是因为 Perl 与他在 CWI 工作时使用的 Amoeba 分布式计算系统不兼容。他说:“Python 的幸运之处在于 Perl 不能被移植到 Amoeba。如果 Perl 可以被移植到 Amoeba,我就不会想要自己去开发一门语言”。

尽管 Python 在发布后吸引了一批铁杆粉丝,但在 20 世纪 90 年代,Python 在编程语言方面仍然处于劣势。van Rossum 说,Python 的竞争对手是 Tcl/Tk 和 Perl,这两种语言的目标与 Python 是一样的,即简单易用且功能强大。

他说:“上世纪 90 年代,在前三大编程语言中,Perl 无疑是第一名,Tcl/Tk 是第二名,而 Python 则是第三”。

Stack Overflow 开发者报告显示,从开发者活跃度方面看,Python 是增长最快的编程语言,而 Perl 在缩水,它甚至都没有出现在最新的 Stack Overflow 开发者报告中。

下图显示了这种爆炸式的增长。近年来,Stack Overflow 网站上与 Python 相关的问题的增长速度远远快于其他编程语言。

那么,Python 是如何超越昔日的竞争对手的呢?又如何解释这两门语言之间截然不同的命运呢?van Rossum 认为,这与代码库在达到一定规模后的维护难易程度有关。他说,“从人们的经验来看,Perl 适合用来编写行数较少的脚本,但如果你的主干代码超过了 500 行,除此之外还有数千行分支代码,那么在 Perl 中维护这些代码就需要遵循很多原则。而在 Python 中,你不需要遵循那么多原则,代码仍然具有很好的可读性和可维护性”。

Python 一方面简单易用,一方面又健壮到可以用来开发大型的应用程序,这两个因素的组合正是 Python 在上世纪 90 年代取得成功的原因。

“一些互联网开发者想要开发越来越大型的应用程序,而且他们意识到用 Python 开发应用程序要比用 C 语言、C++ 或 Java 容易得多”。

随着 Python 在 20 世纪 90 年代逐渐流行起来,当时还在 CWI 工作的 van Rossum 发现他创造的这门编程语言越来越多地把他与来自世界各地的人联系在一起。

网友热搜:

  • 相关推荐
  • 大家在看
  • 报告:JavaScript为最常用整体编程语言 Python超过Java

    在过去的 12 个月中,Python在使用的编程语言列表中已经超过了Java,它也是被研究最多的语言。报告称,在过去的 12 个月里,30%的受访者开始或继续学习Python,甚至比去年还要多。

  • Python取代Excel?风变编程带你了解如何更好地学Python!

    当前最简单、最流行的编程语言是什么?是Python。最近,谷歌公布的编程语言流行指数显示,Python目前仍然是全球范围内最受欢迎的技术语言。而得益于简洁、易读、易维护等特点,Python可广泛运用于数据分析、人工智能、爬虫、运维、测试、图像识别、机器学习等领域,在日常数据分析方面,甚至已有“Python取代Excel”的说法。那么,Python是否真的有这么牛?接下来,风变编程就带你了解一波。“Python已经取代了Excel”今年3月,日?

  • Java已被超越?Python当道,风变编程带你化身编程高手

    在程序员中,一直流传着“Python除了不会生孩子,什么都会”的传说。作为人工智能时代最重要的脚本语言之一,Python现在已经逐步占领统计学、机器学习、爬虫、图形处理、软件和游戏开发、人工智能等多个领域,且都有突出表现。可以说,在众多编程语言中,python如今已经杀出重围,从容超越Java和Javascript,化身程序员必备的编程利器之一。目前,国内外许多公司都已使用Python,如:YouTube、豆瓣、知乎、Google、百度、腾讯、美?

  • Python 和 Go 成为年度最受欢迎的黑客工具榜首

    网络安全公司 Imperva Cloud WAF 近期分享了其在 2019 年一年内针对网络安全事件的观察。对数据进行聚类分析后,他们得到了如下结论:

  • 编程语言最新排名:Java最受欢迎、JS用户最多

    IDE工具开发商JetBrains基于2万名开发者,对编程语言的最新情况进行了统计描摹。就受欢迎程度而言,Java高居第一位,但在使用人数上,JavaScript则名列榜首。欢迎程度的统计方法是,让参与的

  • 云计算开发学习笔记:Python3注释

    <p>大家在学习各种编程语言的时候都会在代码里面添加一些注释,这个也是为了方便日后对代码的查找和修改,各种编程语言的注释方式略有不同,Python3语言也一样有自己的注释方式,下面我们来了解一下都有哪几种。</p><p>确保对模块

  • 云计算开发学习笔记:Python3运算符

    首先我们来了解下什么是Python的运算符? 举个简单的例子 3+6=9 。例子中,3和6被称为操作数,"+" 称为运算符。Python中的运算符大部分与C语言的类似,但也有很多不同的地方。这里就大概地罗列一下Python3中的运算符。Python语言支持的运算符类型有以下几种:算术运算符,比较运算符,赋值运算符,逻辑运算符,位运算符,成员运算符,身份运算符,运算符优先级。Python算术运算符以下假设变量a为10,变量b为21:Python比

  • 做客李晨nic淘宝直播 胡海泉胡彦斌带货开课吧Python

    自李佳琦、薇娅掀起直播带货浪潮后,当红明星、商界巨头等各路大咖纷纷走进直播间做“带货网红”。2020年是直播电商全面崛起之年,越来越多的企业踏入了直播营销这个新阵营,今年本就发展迅猛的在线教育行业自然也紧跟趋势。5月30日,开课吧Python小课陈列在李晨nic淘宝直播间中,与Vipkid、元气森林、御泥坊等品牌产品一起展出供售。当晚,慧科集团董事长、开课吧总裁方业昌博士做客李晨直播间,二胡组合胡彦斌和胡海泉也前来助阵,力推职

  • 周鸿祎调侃潘石屹学python:他写的估计一百行里有十个漏洞

    在 6 月 20 日极客公园联合bilibili举办的Rebuild2020的对话中,360董事长周鸿祎谈到漏洞不可避免的原因称,一是人写代码的技术漏洞,二是违背安全规则的人性漏洞。

  • 云计算开发学习笔记:Python3身份运算符实例

    身份运算符用于比较两个对象的内存地址是否一致,是否是对同一个对象的引用。注: id() 函数用于获取对象内存地址。以下实例演示了Python所有身份运算符的操作:以上实例输出结果:解析:身份运算符is 用于判断两个变量引用对象是否为同一个(同一块内存空间),比较运算符的 == 用于判断引用变量的值是否相等。以上内容为Python3身份运算符实例。

  • 云计算开发学习笔记:Python3位运算符实例

    在Python中,位运算符包括位与(&)、位或(|)、位求反(~)、位异或(^)、左移位()。Python中的按位运算法则如下:下表中变量 a 为 60,b 为 13二进制格式如下:在了解了位运算符后,再来看看实例演示中Python所有位运算符的操作:输出结果如下图:了解更多可以查看Python3全部的运算符《Python3运算符》。解析:位运算符只能适用于整数,其总体运算规则为:首先把整数转换为二进制表示形式,按最低位对齐,短的高位补0,然?

  • “Python之窗”百家号有什么作用?企业品牌必须知道的推广渠道

    备注:本文数据来自站长之家移动传媒平台,文章涉及的数据依托平台大数据计算所得,非百度官方数据,仅供参考。Python之窗是当前百家号中的普通号,目前账号百家号权重为2,综合排名位列784779名,科技分类排名位列36763名,领先了29.7%的百家号。 Python之窗百家号概况 Python之窗的简介为专注于Python相关知识分享,是一家主旨明确、领域专注的自媒体作者,截止目前为止他们已经在百家号上发布了超过7篇的游戏内容,最近该作者创

  • 云计算开发学习笔记:Python3逻辑运算符实例

    Python逻辑运算符由and or not组成,按照优先级依次为:() not and or。首先假设变量 a 为 10,b为 20,看下表:在了解了逻辑运算符后,再来看看实例演示中Python所有逻辑运算符的操作:输出结果如下图:了解更多可以查看Python3全部的运算符《Python3运算符》。解析:按照从左向由,优先级高的先执行优先级高的规则,首先因为比较运算符优先级高于逻辑运算符,很简单,如果运算符低于了逻辑运算符优先级那还如何运算呢。and 优先

  • TypeScript 热度超 C 与 Python、Go 开发收入高、运维吃香,调查了 65000 名开发者有这些发现!

    近十年来,Stack Overflow的年度开发者调查问卷被誉为全球范围内最大的开发者调查。为了寻求多样化的代表,Stack Overflow的官方将调查问卷从技术和行为等方面提出了各类问题,希望收集的信息能够帮助改善Stack Overflow开发者的社区。

  • TheShy正式入驻快手 theshy快手账号是多少

    6月10日,IG战队正式宣布上单选手TheShy入驻快手,同时也公布了theshy在快手平台的账号ID,对于喜欢theshy的选手,可以前往快手来关注他的动态啦。

  • 读懂生命的“语言” 有孚专有云为基因行业提速

    基因图谱被称为"上帝用以创造生命的语言"。世界各国的科学家们都在倾尽全力读懂“生命的语言”,破解每一个未知基因的奥秘。读懂“生命的语言”,对于提高公众健康水平,降低沉重的医疗费用具有非常重要的意义。读懂生命的"语言",实现科学的价值基因技术听起来很神秘,但其实早已经在多个领域中得到应用。例如基因测序技术能够用于疾病的预防、疾病的诊断、指导个体化用药,还能够帮助病毒基因研究所研发病毒诊断试剂,监控病毒疫

  • GitHub将替换master、slave等术语 反对种族歧视

    DoNews 6月15日消息(记者 刘文轩)GitHub CEO Nat Friedman在Twitter表示,GitHub将使用中性词如“main”去替换“master”这个让人联想到奴隶制的术语。GitHub 成为最新一个支持移除可能冒犯部分群体的术语的公司。包括“master”和“slave”将被替换为“main/default/primary”和“secondary”,“whitelist”和“blacklist”将被替换为“allow list”和“deny/exclude list”。最近几周,由于“Black Lives Matter”的抗议活动?

  • 华为全球最大旗舰店上海开业 可提供近10门语言服务

    今日上午10点8分,上海南京东路华为全球最大旗舰店开业,有粉丝表示自己8点多就已过来排队。据悉,该旗舰店坐落于 “中华商业第一街”南京东路的南京大楼,具体位置为上海市南京东路 233 号,占地面积超过了 5000 平方米。

  • 欧科云链OKLink行业观察:ETH矿工或将开启大迁徙

    6 月 23 日,以太坊官方博客更新其开发进度,Altona v0.12 测试网预计将在下周启动。这也就意味着,在经过探讨和不断的改进后,以太坊开发团队终于将启动第一个公开的、多客户端测试网络。 与目前的多客户端测试网类似,Altona更像是一个开发者网络,而不是一个以终端用户为中心的测试网。也就是说,Altona首先是让客户端团队在产品设置中检查v0. 12 软件,同时让ETH2. 0 开发者作为一个整体来解决可能只在多客户端设置中出现的bu

  • GitHub将替换掉 master 等术语 以避免联想到奴隶制

    近日代码托管平台GitHub CEO Nat Friedman公开表示,该公司将使用中性词如“main”替换“master”一词,避免让人联想到奴隶制的术语。

  • 参与评论
文明上网理性发言,请遵守新闻评论服务协议