Python2的落幕:官方113天倒计时!
2019年09月10日 由 TGS 发表
760002
0
Python不仅是目前最为流行的编程语言,还是人工智能领域里最为常用的语言之一,它的出现让计算机编程不再是生僻的专业技能,而是常人都能学习和使用的万金油。
昨日,Python 官方宣布:对于 Python 2 的支持将会在 2020 年 1 月 1 日结束,在这之后即使是出现安全问题,旧版本的语言也不会得到任何改进,这意味着最广为人知的Python 2即将迎来落幕。
Python 的历史往事
Python源自20世纪80年代末,当时Python的创建者Guido van Rossum正在CWI(荷兰数学与计算机研究所)研究Amoeba分布式计算系统,使用C和Unix shell。在这个过程中,他逐渐对这些语言感到不爽——不仅运行速度太慢,无法处理复杂逻辑,还不得不重复造轮子,于是Guido就有了在业余时间创建Python的念头。
1991年,Python第一版问世,可以说是兼具各家之长。之后一路势如破竹,2003年以来,一直占据TIOBE排行榜前十位,可以说是广大用户最为喜欢的编程语言之一。
2007年,Python获得了TIOBE年度最佳编程语言奖——该奖项是根据TIOBE指数,授予全年受欢迎程度最高的编程语言。
Python 2当时也受到大公司青睐:包括Google、Facebook、亚马逊在内的诸多知名公司都在使用它,包括YouTube、Reddit在内的大型应用,都是出自Python。科研机构NASA还用Python来简化航天飞机的任务流程设计,去探索太空。
“人生苦短,我用Python”成为被大多数程序员熟知的“梗”,Python也成为了一门吞噬世界的语言。这中间,虽然有Python2的功劳,但也有Python基于时过境迁进行的“蜕变”。
为什么决定放弃Python 2,官方答疑
Python2有庞大的用户群体,为什么会被放弃?对此,官方给出的解释是:
Python2 是 2000 年发布的。一些年之后,我们意识到需要对 Python 进行一次大的更新升级。因此在 2006 年,我们开始了 Python3 的开发工作。因为很多人在当时没有更新,而我们也不希望这次更新给他们造成损害,因此,多年来我们一直在维护并公开新的 Python2 和 Python3 版本。
但是这样一来,维护 Python 的工作变得非常困难。Python2 中有一些改进和维护是很难进行下去的。这会挤占我们提升 Python3 速度和性能的精力。
而且,如果还有很多人继续使用 Python2,那些用 Python 开发程序的开源工作者工作起来会更困难。他们不能使用 Python3 中的新特性让开源工具变得更好用。
我们不想伤害使用 Python2 的开发者,因此在 2008 年,我们宣布 Python2 将在 2015 年终止,并希望大家能够更新。当时,一些人更新了,但是还有一些人留在了 Python2 上,因此我们将终止时间推后到了 2020 年。
为什么很多用户不愿意更新Python3
Python3早已发布,为何众多用户迟迟不肯更新?
总结起来,原因大概有三点:
1.工程稳定性相比软件的更新速度更为重要。
编程语言是构成软件的基石,编程语言如果发生了更新换代,软件的更新不是一件小事,需要全面地对所有代码进行更新。在这一过程中,如果出现新旧版本不兼容、代码稳定性变差等情况,可能会影响到用户的持续使用。因此,对于一些版本迭代,很多软件开发者选择不更新。宁可保证用户使用的稳定性,也不能急于更新到最新版本。
2.Python 官方「允许」Python2 持续存在。
Python 官方在文档中也提到,大版本的更新有可能会「伤害」开发者。具体而言,如果在 2006 年就迅速要求开发者放弃 Python2,则很多开发者可能因为开发成本问题,直接放弃 Python。繁荣的开发者社区是维持 Python 编程语言地位的重要条件,因此官方一直在更新维护 Python2,让更多的开发者留存在社区中。
3.Python2 确实也好用。
虽然相比 Python3,Python2 存在很多大的问题,但是 Python2 依然也是一个开发者友好的 Python 版本,在 Python2 时期就有很多开源库支持了。因此,一些开发者希望继续使用 Python2。
这些原因导致Python3 取代 Python2 的进程拖了十来年。不过随着机器学习的发展,机器学习领域对编程语言的性能的要求会越来越高,且大部分新的工具都支持 Python3。因此,使用性能更好,有更多工具支持的 Python3 成为了开发者的必然选择。
所以,Python2的落幕,是早已注定的结局。
Ps:倒计时时钟
https://pythonclock.org/
官方移植指南
https://docs.python.org/3/howto/pyporting.html