查看原文
其他

Python之路点燃编程圈:源于不爽C语言,单枪匹马搞副业,如今吞噬世界

点击上方 "码农真经" 关注公众号,星标或者置顶

00点准时推送,第一时间送达

乾明 鱼羊 边策 发自 凹非寺 | 编辑:真经君

量子位 报道 | 公众号 QbitAI

码农真经(ID:coder_experience)第 21 次推文 图片来自网络

上一篇:Python 小技巧 —— 用类写装饰器


正文


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/

--END--


往日热文:

你见过的最全面的 Python 重点

Python除了不会生孩子,什么都会?

学Python,从列表推导到zip()函数,这五种技巧应知应会

YouTube视频推荐系统为什么那么强?看了这篇文章你就知道了

你写的 Python 代码可以更“瘦”


喜欢本文的朋友们,欢迎长按下图关注订阅号码农真经

收看更多精彩内


你在看吗?一起成长

视频 小程序 ,轻点两下取消赞 在看 ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存