#翻译# Python 3 正在毁灭 Python

对于 Python 社区来说,Python 3 是最糟糕的的一个东西了。我依旧记得,当我第一次使用Python的时候,我已经在C++的领域摸爬滚打了很长时间,Python对我来说就像是一本圣经。我可以随便打开一个文本编辑器,几秒钟或几分钟之后,一个可以正常工作的程序就诞生了,而不用去花费几小时或几天的时间。我仍记得,Python 2.5问世的时候添加了许多好用的新特性。我爱Python,但同时我也承认她有缺点,但是还都说得过去,所有的语言都有缺点。她的优势在于她很有趣。尽管Python 3相比Python 2来说有了一些小的提升,但是她丢掉了很多Python 2的优势。

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 2的另外一个优点是,用它写的程序几乎不用更改就可以运行在下一版本上。如果你的软件是基于Python 2的,那么就可能花费一大笔钱才能将其迁移至Python 3,因为你需要的工程可能相当地大,并且塞满了各种类库手册,而他们不能被迁移。这在商业策略上非常不明智,因为你不得不为此花费 大量的金钱和工程师的时间才能把工程迁移到Python 3。你不妨问问其他人将整个代码迁移到Ruby,或者,那还更划算。至此,要是你不得不重写你的软件,你还会选择Python 3吗?不。

大多数比较受欢迎并且支持兼容Python 2和Python3的库是通过运行在各自平台上的语言子集(subset)来写的。我最喜欢的Python库之一的SQLAlchemy做的很好,Django也是这样做的,但是稍有逊色。语言子集,我称之为Python X,并不那么好用,需要很怪异的hack,并且通常性能不如Python2 或 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的下场吧,人们会离开去别的地方。

时间: 2024-07-29 13:56:05

#翻译# Python 3 正在毁灭 Python的相关文章

Python网络01 原始Python服务器

原文:Python网络01 原始Python服务器 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   之前我的Python教程中有人留言,表示只学Python没有用,必须学会一个框架(比如Django和web.py)才能找到工作.而我的想法是,掌握一个类似于框架的高级工具是有用的,但是基础的东西可以让你永远不被淘汰.不要被工具限制了自己的发展.今天,我在这里想要展示的,就是不使用框架,甚至不使用Python标准库中的高级包,

Python 之父谈 Python 的未来

6月初,Python之父Guido van Rossum在今天的PyCon US大会上作了名为"Python Language"的演讲.近日,他又接受了IT媒体Infoworld的采访,大谈Python的未来.我们一起来看看Guido老爹对Python的 未来是怎么看的吧. Python在移动计算领域的应用 Guido:移动对Python来说仍是一个很难啃下来的平台,但是并没有浏览器平台的难度大,因为Python实际上是可以运行在所有品牌智能手机上的.你只需要找到懂得怎样构建移动版本P

Python应用01 原始Python服务器

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   之前我的Python教程中有人留言,表示只学Python没有用,必须学会一个框架(比如Django和web.py)才能找到工作.而我的想法是,掌握一个类似于框架的高级工具是有用的,但是基础的东西可以让你永远不被淘汰.不要被工具限制了自己的发展.今天,我在这里想要展示的,就是不使用框架,甚至不使用Python标准库中的高级包,只使用标准库中的socket接口(我不是很明白套接字

可爱的Python:JPython和Python for .NET内幕

David Mertz 采访了 JPython 和 Python for .NET 的开发者 Mark Hammond.Finn Bock 和 Barry Warsaw.他从 Mark 那里了解到一些有关微软开发的最新独家新闻内幕(当然所有内容都在保密合同限制内)并从 Finn 和 Barry 那里了解到有关 JPython 和他们将要发布的 Jython 项目的一些信息. 尽管 Python 通常等同于 CPython,但它的规范曾在其它地方实现过多次,包括在用于 Java 和 .NET 的应

可爱的Python:更新您的Python读物列表,第3部分

Python 书籍已经开始稳步占据着书店书架空间的更大份额.自从我开始发表这些综述以来,现可称为"废品"的有关 Python 的书籍数量可能已经是原来的四倍.而这还不包括许多在 Web 上发布的有关 Python 的出色的电子文档(包括一些未经删节的书籍).本文谈及的几本 Python 书籍已在前几个月就放到了我的书架上. 与 Web 相关的书籍 关于 Python 和 Web 的两本书 我最近看到两本书:Holden 和 Beazley 合著的 Python Web Programm

扩展-关于python的提问关于python的提问

问题描述 关于python的提问关于python的提问 我在cmd中运行扩展,是不是路径中带有中文文件名的原因而导致无法运行? 解决方案 提问 解决方案二: 可能中文路径支持不好

【Python爬虫9】Python网络爬虫实例实战

爬Google搜索引擎 爬Facebook和Linkein 1自动化登录Facebook 2提取Facebook的API数据 3自动化登录Linkedin 爬在线商店Gap 爬宝马官网 爬取Google真实的搜索表单 爬取依赖JavaScript的网站Facebook 爬取典型在线商店Gap 爬取拥有地图接口的宝马官网 1.爬Google搜索引擎 # -*- coding: utf-8 -*- import sys import urllib import urlparse import lxm

Python 入门教程 1 ---- Python Syntax

 1 第一节     1 Python介绍        1 Python是一个高效的语言,读和写的操作都是很简单的,就像普通的英语一样        2 Python是一个解释执行的语言,我们不需要去编译,我们只要写出代码即可运行        3 Python是一个面向对象的语言,在Python里面一切皆对象        4 Python是一门很有趣的语言     2 第二节     1 变量:一个变量就是一个单词,只有一个单一的值     2 练习:设置一个变量my_variable,值

《Python数据科学实践指南》——第1章 Python介绍 1.1 Python的版本之争

第1章 Python介绍 本书主要介绍数据科学所使用的工具,但因为每一种语言都有自己的生态系统,而笔者多用Python,所以本书主要会从Python的角度来介绍这些工具.阅读本书的读者,不管之前的基础如何,如果对Python这门编程语言有一定的了解,将能更好地掌握书中内容.可能有很多读者曾经在学校里学过C/C++或是VB,又或者听说过Java.PHP等这样广泛使用的编程语言,初闻Python的时候可能会对这个名字略感陌生,不过这一点并不能阻碍Python成为数据科学领域的"一等公民".