Python 3 正在毁灭 Python编程
小职 2017-11-10 来源 :网络 阅读 627 评论 0

摘要:Python 3 毫不费力地成为发生在 Python编程 社区里最糟糕的事。我还记得第一次使用 Python编程 的时候,我还在花大量时间在 C++ 这块上,而 Python 就像是我的一次开光。

    Python 3 毫不费力地成为发生在 Python编程 社区里最糟糕的事。我还记得第一次使用 Python编程 的时候,我还在花大量时间在 C++ 这块上,而 Python 就像是我的一次开光。我可以打开文本编辑器用几秒钟或者几分钟写出一个可以工作的程序,而不是用几小时或几天。我记得 Python 2.5 出来的时候,带来了一大堆崭新的简洁的语言特性。我爱 Python,但是我承认它有弱点,但是没关系,所有编程语言都有。它强大的地方使其变得有趣。Python 3 相比 Python 2 拥有一些小小的增量的改进,但同时却失去了很多 Python 2 强大的东西。

  Python 2 强大的一个地方是它身后巨大的第三方库,恩,可以做任何事。Python 3 没有这个。是的,很多库已经移植了,但是仍然有数以十倍的库没有移植过去,而且也不太容易。举个例子,你需要解析X格式,而X解析起来并不简单,它不是常见的像 YAML 或 JSON 的格式。很有可能这个为X的解析器在 Python 2 里已经写好了,但是还没有移植到 Python 3。另外,考虑到 Python 2 的字节字符串(str)和 Python 3 的字节字符串(bytes)之间的根本不同,移植起来将不会那么容易。事实上会很难移植,并且需要一点移植技巧,像维护 Python 2 和 Python 3 的兼容性那样。因此,你有一些选择,可以用 Python 2(一个被弃用的语言)快速写你的 app,导入一些库(还有它们所有的依赖),可能会有十倍之长;或者可以用另外的编程语言,它也有很多第三方库,但是不会面临 Python 2/3 的问题。第二个选择显然不是很流行,因为不然,我们就有大量 Python 3 写的 app 产品,然后 Python 2 的一大批库会被移植过来。(译者注:这个逻辑貌似有点问题?)这两种都没有发生。人们要么继续用 Python 2 写软件,要么选择另一个不自己打脸的语言。

  另外一个 Python 2 的强大之处是用它写的程序几乎总是能够不用大量修改而运行在 Python 的下一个版本上。如果你的公司运营在用 Python 2 写的软件上(就像很多公司那样),移植到 Python 3 将会消耗大量资金,因为你的 requirements 文件可能十分大,并且充斥着各种还没有移植到 Python 3 的库。没有哪个理智的商业理由会花成百上千甚至百万美元价值的开发时间来移植到 Python 3。如果相比更便宜的话,你都可能会要求某某把他们整个代码库移植到 Ruby。现在如果你必须要重写你的软件的话,你会选择 Python 3 吗?不。

  那些支持 Python 2 和 3 的比较流行的库几乎都只用该语言的子集,这样在两个平台上就都能运行。SQLAlchemy,我喜爱的 Python 库之一,它这样做的很好。Django 也如此,但是做得不那么好。这个语言子集,我会称之为 Python X,使用起来很没意思,需要一些奇淫技巧,并且通常没有 Python 2 或者 Python 3 强大。把 Python 2 的库移植到 Python X 有意思吗?很可悲的是一点意思都没有,因为令 Python 伟大的就是这些乐趣。

  Python 2,很可悲,已经被弃用了。Python 3 颓废得没人用。Python 3 的改动不大。没有带来多少好处,但缺失去了很多。在过去的几个月,我用 Python 3 构建了一些项目和服务。我没有被它打败。这很像用 Python 2 写软件,除了只能获得很少的一些库。这里没有什么令人惊叹的事情。Python 社区在过去的几年本应该转移到 Python 3 了,但是结果就是越来越明显看到人们转移到新的语言(或者重新发现的旧语言)上。这些语言有些也有很好的特性,像强大的输入系统,模式匹配,更出色的性能,更好的多线程和并发,更简单的外部函数接口(FFI),更漂亮的 lambda 语句等等。

  一个方案是 fork Python 2.7,然后继续发展这门语言,加入一些尽量向后兼容的特性,这样那些不能移植(由于一些财政方面的约束)的 Python 2 应用程序可以继续演进和改善,进而给那些投入如此多时间开发他们的公司或个人带来价值。这才是需要去做的正确的事(事实上,如果 Guido 和 Python 社区里其他主导人能够官方地做这件事,而不是强迫大家 fork,那会是最好的)。Python 3 里的特性可以向后移植到 Python 2,然后发布 Python 2.8。那些已经花时间用纯 Python 3 写新的软件的人可以使用例如 3to2 的工具变成与 Python 2.8 兼容。Python 3 然后就可以为了 Python 库维护者们能够用 Python 2 代替 Python X 而安静地离去。

  还有一些其他的方案,但是拯救 Python 2 显然是要做的正确的事,所以也不值一提了。Python 2 的拯救不会来自官方,因为负责这类事的人表现出了对 Python 2 使用者极大的鄙视。如果社区的人不团结起来拯救 Python 2,Python 3 数年之后会成为 Python 的标准,然后很多库将要被移植(尽管很多肯定不会),然后很多的投入也将会白费。社区那时候会大量的萎缩,并失去往日的光芒。参考 Perl。人们将把它遗忘。

    以上,关于Pyhton的全部内容讲解完毕啦,欢迎大家继续关注!更多关于Python的干货请关注职坐标Python频道!

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程