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

发表于:2019-8-19 09:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:乾明 鱼羊 边策    来源:量子位

#
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之路点燃编程圈:源于不爽C语言,单枪匹马如今吞噬世界
  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也受到大公司青睐:包括GoogleFacebook亚马逊在内的诸多知名公司都在使用它,包括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才是世界上最好的编程语言。
  你同意吗?
  
      上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号