本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。
Python is eating the world.
这篇关于Python长文火了。
从Python的创建过程,到Python成为一个无所不在的语言,究竟经历了一个怎样的过程?
美国科技媒体ZDNet记者Nick Heath,详细呈现了Python作为一款风靡全球的编程语言的发展历程及其背后的故事。
真正体现了一个追求极致的程序员,单枪匹马变革世界的理想主义精神。
不到一天时间,这篇文章就在Hacker News上获得了800多热度以及800多评论。
从评论区中,也能看出人们对Python这一编程语言的态度,可以说是又爱又恨。
爱在于,其适用性极强,能够简单、快速地帮助自己完成任务。现在,无论是Web开发,操作系统、运维、数据开发、机器学习等等,都离不开Python。
恨在于,功能还有不完善之处,主要还是希望Python十全十美,真正成为最好的语言。
总之,从来没有一款编程语言,能像Python这样,引起程序员心底的爱恨纠缠。
但这一切归根溯源,还要从20世纪80年代末说起。
Python那些年
自创编程语言的念头,来源于Guido van Rossum对主流编程语言的不爽。当时,Guido正在CWI(荷兰数学与计算机研究所)研究Amoeba分布式计算系统,使用C和Unix shell。
C不仅要求开发人员努力对付手动管理内存的复杂性,时时注意潜在错误的雷区,还缺少用于日常开发任务的可重用代码库,开发人员不得不重复造轮子。
而Unix shell的问题在于,它的本质是调用命令,而不是真正的语言,运行速度太慢,无法处理复杂的逻辑。
1989年圣诞节期间,不想再忍受当时编程语言的不足,也为了打发假期时光,Guido下决心开展一个业余项目——开发一个新的脚本解释程序。
创建自己的编程语言就像是从零开始造火箭,好在早先Guido就参加设计了一种教学语言——ABC。
Guido认为ABC优美而强大,是专门为非专业程序员设计的。但ABC并没有成功,Guido将其没有成功的原因归结为互联网时代前的非开放。
在ABC诞生的年代,Guido和他的CWI同事们想要推广这一种新的解释型编程语言,得挨家挨户地分发磁带。
幸运的是,到80年代90年代之交,互联网已经蓬勃地发展了起来。Python有机会避开这个坑了。
我想,“好吧,为什么我不创造自己的语言”,从ABC“窃取”idea,就可以把项目规模从三年压缩到我自己一个人就可以完成的量,变成一个三个月的skunk works(臭鼬工程)。
就这样,Python诞生了。
Python这个英文单词的意思是蟒蛇,但编程语言Python名字的由来,并不是Guido对这种生物有什么特殊的偏爱。
之所以给自己的编程语言取名为Python,是因为Guido是BBC电视剧蒙提·派森的飞行马戏团(Monty Python’s Flying Circus) 的忠实爱好者。
Python从ABC发展而来,并结合了Modula-2,Unix shell和C语言的习惯。
1991年,Guido发布了第一版Python,从那时起,Python就奠定了开放的基调。
Guido认为,与新兴Python社区的互动,让他意识到自己创造了一些可以成功的东西。
Python杀出重围
不仅仅是Python,Perl、Tcl等编程语言也同样诞生于80年代后期,但是却只有Python缔造了时代神话。
Python为什么能杀出重围?
Guido认为,首先,Python天生能吸引开发人员,因为它就是为此而生的。在创造Python的过程中,Guido特意关注了语言易用性和能力之间的平衡,这种平衡正是开发者所期待的。
同时,Python十分易于阅读。它强调可读性和简洁的语法,倡导用更少的代码来表达清晰的想法,它让编程语言与开发人员的“思想交流”变得更加容易。
并且,从早期的版本开始,Python就提供了一系列内置功能,被称为“Battery Included(内置电池)”,拥有极其强大的标准库,这一下子就让它从众多编程语言中脱颖而出。
而这也正得益于Python开放易拓展的属性,整个社区的共同努力让Python越来越强大。
还有一点也非常重要,那就是Python的源代码是很容易维护的。
像Perl让人诟病的一点,就是它过于灵活,源代码常常难以阅读,甚至被称作write-only语言。当代码量达到成百上千行的规模,想在Perl中进行维护,就需要大量的纪律约束。
而在Python中就没有这个烦恼,显得尤为优美。
说起来,Python毕竟是把编程哲学嵌进灵魂的语言啊。
△Python之禅
管理的正式化
突出重围之后,Python的用户越来越多,社区用户显著增长。
随之而来的则是语言管理问题。
当时只有Guido一个人在管理Python,使用这一语言的开发者们一直担心,哪天他被车撞了怎么办,Python是不是就就完了?
这不是开玩笑,1994年的时候,真有人在社区发帖提出了这个问题。
之后,Python语言管理开始正式化:Python软件基金会(PSF)的前身建立;更多的人加入了管理团队,Python开发者放心了。
在1995年4月加入“美国国家研究推进机构”(CNRI)之后,Guido领导了一个小型开发团队,开发Knowbot程序,一个广泛分布式系统(如Internet)的移动代理。
当时业界知名的开发者如Jeremy Hylton、Roger Masse、Barry Warsaw、Ken Manheimer和Fred Drake等加入其中,这些人后来在Python社区中发挥了重要作用。
这一团队创建了python.org网站,包括管理核心代码库更改的CVS服务器,以及用于改进和维护Python语言的Python特殊兴趣组的邮件列表。
1994年开始的两年一度的Python研讨会,也逐渐演变成更大的年度活动,最终成为PSF的年度PyCon,如今仍然非常活跃。
在过去的几十年里,Guido一直在Python的改革过程中扮演着核心角色,被大家叫做“仁慈的独裁者”。
但是现在Python的管理方式已经发生了重大改变。去年,Guido辞去了领导职务,因为公众对分配表达式引入该语言有了分歧。
虽然Python管理者的目的是编写更有效的代码,但Guido在网上遭到了那些反对变革的人的严厉批评,有些人认为他们这样做会使代码的可读性降低,难以维护。
这件事让Guido认为,像改进Python功能这种事很难达成共识。他会选择某种做法,而不去管别人同意不同意。
之后,每次新的Python功能发布后,指导委员会都会进行新的选举。更多的Python核心开发人员社区也欢迎设立指导委员会。
一位核心开发人员认为此举意味着Python朝着正确的方向迈出了一步。她说:“让委员会做决定比一个人做决定更好。”
随着管理团队不断完善,Python的发展有了稳固的大本营。
随之而来的便是——
吞噬世界的“巨蟒”
2003年以来,Python一直在TIOBE排行榜重最受欢迎的编程语言的前十位。
截至2018年12月,它是第三种受欢迎的语言,仅次于Java和C。
Python在2007年、2010年和2018年分别3次获得了TIOBE年度最佳编程语言奖。该奖项是根据TIOBE指数,授予全年受欢迎程度最高的编程语言。
不仅是受个人开发者欢迎,Python也受到大公司青睐:包括Google、Facebook、亚马逊在内的诸多知名公司都在使用它,包括Instagram、YouTube在内的大型应用,都是出自Python。
科研机构NASA还用Python来简化航天飞机的任务流程设计,去探索太空。
Python的强大也离不开各种第三方软件库的支持,像NumPy、SciPy和Matplotlib这样的库允许用户在Python中进行科学计算。
Python本身并不是为数值计算而设计的,但是因为有了这些软件库加入,Python可以替代Matlab甚至做得更好,而且这些软件是完全开源免费的。
在科研领域,越来越多的人用Python来处理数据,最近发布的黑洞照片就是用Python编写的算法进行拼接合成的。
Python不仅赶上了90年代末期互联网崛起的第一波发展浪潮,近年来也是机器学习这一热门领域的宠儿。
谷歌的TensorFlow使用的就是Python。Facebook更直接,从PyTorch的名字来看就知道它和Python密不可分的联系。
此外还有Keras、Scikit-learn等机器学习框架也都是用Python。
这些框架的支持下,甚至只用6行代码,就能够写出一个机器学习程序。
目前主流的几种操作系统,比如Linux、macOS、FreeBSD等都在系统中包含了Python组件。
连一向封闭的微软态度也逐渐软化,今年他们在软件商店中加入了Python安装程序,并且给用户提供从命令行安装的快捷入口。
虽然Python越来越受欢迎,但也有不少隐忧。
Pythonの挑战
现在,Python已经成为开发者群体中最热门的语言,甚至出圈成为业余爱好者学习的首要编程语言。
但它吞噬世界,仍旧是正在进行时,它的覆盖空白区、其未能吞噬之处——移动计算领域——重要性越来越强。
2016年,Guido在接受媒体采访时,也承认了这一点。在他看来,移动仍是Python很难啃下来的平台。
但他也给出了解决方案:找到懂得构建移动版本Python的人就行了。
因为标准的CPython源代码,几乎可以编译成能在安卓和iOS系统中运行的二进制文件。
而且Python社区中,已经有很多人在朝这方面努力。但3年后,依旧不容乐观。
今年的Python语言峰会上,BeeWare联合创始人Russell Keith-Magee再次提出了警告,如果对移动和新Web平台的支持没有改善,那么Python将面临“存在风险”。
他设想了这样的一个场景:当iPad成为主流,笔记本电脑不过是细分设备时,Python会发生什么?
吞噬远未成功,大家仍需努力。
而且,时变境迁,起于20世纪80年代的Python,在新的运行环境中,逐渐变得力有不逮。
为了修复缺陷,更好地适应新环境,让Python更有生命力,Python社区做了一个非常有决断的动作:
推出Python 3,不向后兼容。
这背后长痛不如短痛的想法,轻装前行的理念等等, 大部分开发者都理解。
但版本割裂带来的阵痛,还是成为了Python被诟病的一大重点。
2008年Python 3问世之时,给Python 2.7定下的Deadline是2015年。
因为担心大量现有代码无法迁移到Python 3,这一时间又推迟到了2020年。
这12年中,Python也发布了程序,帮助开发者更好地将Python 2代码转换为Python 3。
但这也让不少人纠结与徘徊。
现在,Python 2大限将至,跃迁将要完成,可局势也变了。
遭遇强敌
在这期间,有不少新的编程语言出现,分食Python的领地。
比如谷歌2009年正式推出的Go,更是“明目张胆”地抢人——开发一款从Python 2.7到Go语言的编译器。
而且,这一语言因为其开发速度、更加便捷、部署简单、更好并行等方面的特性,赢得越来越多开发者青睐,在2016年被评为“TIOBE最佳语言”。
2019年,程序员社交平台HackerRank发起的一项调查结果显示,Go是程序员最想学习的编程语言,而Python只排第三。
不少公司,也开始用脚投票。比如知乎,就舍弃了Python而用Go重构推荐系统。
还有Julia。这一源自MIT的新编程语言,创建于Python 3发布第二年,2012年公开发布。
截止2018年底,已经有300多万下载量。
过去一年的时间中,Julia在GitHub上的标星在过去一年增长了一倍。也被Jeff Dean批注为“Julia +TPUs =快速且易于表达的机器学习计算”。
来势汹汹,可见一斑。
根据Julia最新发布的官方报告,其主要的应用领域为数据分析、机器学习、物理学、数学、人工智能、信号与图像处理等等。
而这些,当下都是Python发挥作用、面向未来的核心阵地。
不过,Python也没有停下来发展的脚步,也在不断推陈出新,面向未来编程。
比如PyPy的不断优化,SciPy和NumPy的不断完善等等,都在放大Python的能量。
这个起于20世纪80年代一个业余项目的语言,到现在仍旧具备超强生命力,兼容并包,成为开发者手中的利器,不断吞噬世界。
越来越多人开始认为:Python才是世界上最好的编程语言。
你同意吗?
ZDNet记者Nick Heath的英文原作很长,但披露了相当多的Python发展细节,我们仅引述了其中关键节点,建议大家前去拜读完整原文^_^
参考链接:
https://www.zdnet.com/article/python-is-eating-the-world-how-one-developers-side-project-became-the-hottest-programming-language-on-the-planet/