您好,欢迎访问一九零五行业门户网

Python 3 正在毁灭 Python 吗?

... python 2最重要的一个优势在于拥有众多的第三方库,可以用来做任何事情,但是python 3没有这个优势。诚然,有很多的库已经移植到python 3了,但是有更多的库没有移植,也不容易移植。例如,你需要解析 x,但是x不像yaml和json那样容易解析。很可能有一个第三方的解析器可供选择,但是只可以用python 2,而没有针对python 3的移植版本。此外,加之python 2中的字节字符串(str)和python 3 中的字节字符串(bytes)之间有着功能上的差异,使得这更难移植。而事实上,移植它非常困难,并且需要很多的小技巧(trick)来兼容python 2和python 3。所以,你有两种选择,要么使用python 2 (已经不建议使用的语言)快速的开发你的程序,但这会花费你十倍以上的时间去移植相关的库(以及所有的依赖)。要么,使用另一门同样拥有很多库的编程语言,但是不用再困扰于python 2 / 3之间的问题。第二种选择显然不受欢迎,因为如果我们这样做了,在我们的生产环境中已经有很多python 3的程序了并且大部分python 2的库需要被移植。不管这些情况是否存在,人们要么继续使用python 2开发程序,要么选择另一门不会打自己脸的语言...
文章链接:python 3 正在毁灭 python回复内容:谢邀。先总结一下该文观点
python 2.x的优势在于拥有众多的第三方库,虽然有很多库已经移植到python 3.x,但也有很多没有移植,而且有很多库很难移植。已有的python 2.x项目可以无缝移植到python 2.x的新版本上,而移植到python 3.x上将更难,需要花费更多的人力物力。大多数比较受欢迎并且支持兼容python 2和python3的库是通过运行在各自平台上的语言子集(subset)来写的。
最好的办法是fork 2.7制作2.8,但官方却不支持这种做法。该文作者说得很有道理,但我觉得python 3.x并不会毁灭python,会令python社区变得更好。
第三方库现在越来越多库已经转向兼容python 3.x,看pypi上的列表https://pypi.python.org/pypi?:action=browse&c=533&show=all。是有些库使用了所谓语言子集来实现兼容python 2 & 3,或者是使用six这个module来帮助处理跨py2和py3的兼容问题,这些有可能会影响效率,但是,对于整个程序而言,相信核心模块的算法优化带来的性能提升会远大于这些损失。而且有2to3.py这个脚本可以帮助转换生成py3 only的脚本来发布,完全可以做到自动化。如果是现有的项目,相信很多都还处理py 2.4-2.6的阶段吧,相信连py 2.7都不会到,何况更新的库。这些老旧代码,相信有一些库的升级版也不一定能支持到python 3把bytes和str的行为分开,是一件好事,终于把一个历史遗留下来的错误fix了,居然有人说不好?python 3每次升级都会带来新的stdlib,会fix掉一些错误,还可能会加入新的语法。比如python 3.4.x里面新的asyncio库,最爱!旧的项目,stays in python 2。若你要开启一个新的项目,why not choose python 3?新生代py程序员可能更愿意用py3,各种教辅资料也会慢慢转向py3。py2到3就是进步,c语言还几十年几乎不变呢。向下兼容可能成为发展的阻碍,看看windows。python依然是主流语言,随着py2停滞开发,py3必然会慢慢替代py2,不断加入新特性和修复以前的设计错误,使之成为更好用的工具。不能因为你习惯2,不想接受新东西就排斥3,没好处的,就像winxp与win7,新软硬件很多已不再支持xp如果python3改名叫python++可能就没争议了。。。不会,python3只会毁灭python2,因为这本就是它出现的意义python3 开发了6年,毫无建树。python3没有革命性的创新,又不向下兼容。
照这样折腾下去python真的要灭亡了。
反观php这几年一直在蓬勃发展,命名空间,包管理,hhvm,phpng,还有异步并行的swoole。曾经python说自己是下一个php。结果呢。。。
其他语言如golang,node.js也逐渐火起来了。python还是那样不温不火。可以说python3这6年真的是致命错误。1 c++是一个和c完全不同的语言,但是它向下兼容c
2 看不出python3有任何理由不兼容python2的语法。因此,唯一可以解释的,就是python官方希望像一个独裁者一样领导社区,“反对我的都去死”。 那么社区的回应就是“独裁者去死”。
3 python3对于python2的语言特性优势,根本不足以打动python2社区。
4 既然python开源,而且版权限制比gpl还弱, 那么一旦python官方停止对2.x的支持,一定会有社区自发维护的版本,不会比官方做得差。
5 既然得罪了社区,那么得到的回应就会有很多开发者抵制python3,坚决不会将他们开发的库升级到3新手学,干下哪个版本啊?因为我在c++界混了那么多年所以我很吊,所以你们该听我说说话:
python的优势就是库多,我能快速抄袭别人的库,从而瞬间开发。
然而python3不兼容我用的库。
什么,你说移植?那种脏活累活怎么能让我这么有经验,这么高贵优雅的人去干!!!
我建议你们赶紧fork出来一个我能继续用的版本,最好啥也不改,以便于我即能什么都不用改我的码,又能声称我用的是最新版本,以便装逼
其他人的建议都不值一提,你们要是不听我的,就会死的跟perl社区一样惨。
——作者精神概要python 3的原罪就在于break了back compatibility,并且没有成功的说服开发者为什么他们需要迁移到python 3上来。
但要说python 3会杀死python我觉得实在是言过其实,python的生态系统摆在那里,可能在一些方面被其他语言和技术超过,但是总体而言地位依然是稳固的,毕竟在大多数应用场景下,它的性能并不是一个大的问题。
不过负面影响总是存在的。python 2.x于3.x这个胶着的状态,在社区造成了很大的分歧。而这个分歧拖下去的时间越长,对于python未来的发展就越不利。为什么呢?因为其他竞争对手都在快速的演进。例如在最重要的web开发领域,node.js和go正在吸引越来越多的注意力。特别是go,syntax和python差别不大,out-of-box的性能却高了不止一个数量级。这促使不少的开发者,尤其是那种愿意尝试新技术并且广为传播的(所谓的evangelist),在面对2to3这个选择的时候,索性直接将整个技术栈换成go。
个人而言,为什么不愿意迁移到python 3呢?一句话:python 2 just works。python 3缺乏让人眼前一亮,想要跃跃欲试的feature upgrade。
其它类似信息

推荐信息