人们为什么不使用Python3?


发布者 ourjs  发布时间 1388653857000
关键字 心得体会 

作者:Alex Gaynor 翻译:Tianyi_Ting

关于Python 3

Python 社区的朋友和开发者们,咱们一起聊聊Python3吧。Python3在2008年12月3日首次发布。当时广泛的说法是:程序员接受Python3将是一个漫长的过程,这个过程被预期为五年。现在,我们刚刚度过了这个标志性的5年。

在Python 3发布起初以及随后的几年里,我感到非常兴奋,像个传教士一样宣传它,把自己的项目移植到它上面去。在过去一两年里,我启动的每一个新项目从一开始就采用Python 3开发。

最近半年,我一直在反思Python3的地位,兴奋逐渐被失落取代。

人们通常的看法是:在Python3流行的头几年,一些开源项目将会跟随潮流,随之而来的Python3浪潮,将会像开闸的洪水一样一发而不可收。在用Python语言写的Web开源框架Django的世界里,这种看法意味着我们需要一个Web服务器网关接口(WSGI)规范,使数据库驱动用Python3编写,接着我们开发人员才可以向Python3转变,最后才能使我们的用户接受Python 3。

当下,所有必备的条件都有了:Django(以及很多Django上的第三方App)现在已经支持Python3了,NumPy以及其他很多科学计算库都支持Python3,Python本身的几个新版本也都已经发布了。但是,用户们仍旧不使用Python3。

看一看Python包的下载统计,我们可以发现:Python3包下载量占不到2%。更糟糕的是,几乎没有代码是为Python3而写的。当我说我所有的新代码支持Python3,但是我却用Python2编译器在本地运行,我测试时,也是用Python2编译器。 Trivis CI用Python3为我运行了这些代码,当然,我的代码不全是用Python 3写的。拥有大规模Python代码库的公司,我所了解的,没有一个公司写Python 3代码,并且基本上没有一个在考虑将他们的代码库向Python 3转变。

从Python3.1时代开始,人们经常说的是,Python3新的特性和标准库的新特性将会作为激励人们升级Python3的动力。不要误会!Python3.3中确实有一些很酷的东西,但事实上,99%的人却无法用到这些功能。所以,当给别人说:“Python3中有很多好功能”,我实际上在心里说:“去你妈的,骗你的!”,因为对用户来讲,状况根本没有改观,兼容性问题依然存在。

除了上面所提到的这些,有一点对Python自身的发展也有极其恶劣的影响,那就是“没有用户反馈”这一环节。Python 3仅仅在被较早接受它的人使用,这个事实意味着来自用户的对于新功能的反馈几乎没有,即使有,这一小部分人的意见也不能完全代表整个Python社区。当我们对Python3.X系列研究越深,它反而会变得越糟糕。如今,我们正在其他特性上开发新的功能,但是可惜的是,这些功能未能受到实际的广泛使用。

人们为什么不使用Python3?

首先,我认为是缺乏紧迫感。许多年前,在我还不知道如何编程的时候,使Python 3版本和Python 2版本并存的决议已经存在。回想起来,这是一个错误,这导致Python社区彻底缺乏进步的紧迫感,这种紧迫感的匮乏逐渐使进步意识荡然无存。

第二,我觉得Python 3从根本上来讲很无趣,这使得掌握它的人很少。它也没有人们想要的“big ticket items”,像移除GIL或追求更优良的性能(为了追求性能,多大会选择PyPy)。反而,它有许多新库和小的调整,很多有经验的Python开发者们总会习惯性避免这些不一致的地方。当然,不管需要付出多么长的时间去升级,人们的开发也不会停下来。即使Python 2看起来要在这里待一段时间,这也阻止不了他们开发的脚步。

我们现在身处何地?

总之,不是一个幸福的地方。首先,我认为,我们很多人需要切实认识到Python 3的现状。尤其是这样的事实:在过去的几年里,对于普通的Python开发人员而言,Python语言没有变得更好。对我们Python社区而言,使Python 2和Python 3走两条不同道路是错误的,我们需要把它们整合在一起。 我有一个想法:发布一款Python 2.8,修补Python 3的每个新特征。同时弃用所有向后兼容方式不能改变的东西,例如,str + unicode将产生一条警告,同样的,没有from _ _future_ _import unicode_literals的所有文件也会产生警告。用户需要能够赶上连续的升级过程,Python 3破坏了这个过程,我们来解决它。 这只是我的想法,我们需要更多的想法来建起Python 2和Python 3之间的桥梁,因为随着每个Python 3新版本的发布,它们间的鸿沟会越来越大。

感谢Maciej Fijalkowski和其他人的评论。不用说,剩下的是鄙人的拙见。





回复 (7)
  • #
  • #1 qq125434217 1388667443000
    [/鼓掌][/鼓掌]
  • #2 qq125434217 1388667459000
    赞一个
  • #3 qq126036143 1388759847000
    文章挺有意义的。。。
  • #4 木翎 1388763298000
    不错
  • #5 时半兴 1461234182646

    我觉得同一种语言为什么要有两个版本。。。。。

  • #6 云乏西 1461250653211

    asd

  • #7 韩产众 1490665337087

    我只是觉得作者把解释器叫成编译器了

微信扫码 立即评论