让Python3来拯救Python
我从 Stephen A. Goss 那读到关于了《Python 3 正在毁灭 Python》。这篇文章有不少精彩的论点,但我却并不认为 Python 3 是在毁灭 Python,也不认为整个局面对 Python 一点也不利。
但是正如那些比较俗气的格言所说,也许每一次危机也意味着一次机遇。
也许 Python 3 能拯救 Python。
显然,麻烦的不仅仅是 Python 2 到 Python 3 的移植。时间不再是 2005 年了,年轻的程序员不再对 Python 的哪一个版本如此的激动了。不错,现在市场上有很多 Python 的职位,但与此同时有更多的 Java 的职位。并且话说在从前市场上还有很多 Perl 的职位呢——据说现在不怎么样了。我的重点不是说职位的个数或者 GitHub 上面的仓库的个数,我的重点是思想和热情。我知道这有一点主观,但我感觉 Python 最近在这两方面有所缺失。
举个例子来说我们看到人们正在从 Python 转向 Go。
尽管并不多,但是这个现象却很值得注意(包括整个新建的开发小组发博客声称要移植他们的代码库),也足以产生一些舆论了(也能让 Rob Pike 大吃一惊了,他最初希望人们从C/C++转向 Go)。
Python 所面临的挑战来自西面八方。有的挑战在某一领域蚕食 Python 的份额(例如新的不同步的项目会更加喜欢 Node 或者 Go 而不是 Twisted,Rails 仍然在 web 框架中占有主导地位),某一专业的直接竞争(例如科学计算的 Julia),以及普遍的竞争(Clojure,Groovy,Javascript,Dart 等)。
所以这儿是我对于 Python 3 的想法,很简单的想法:
让 Python 变得诱人
Python 3 已经和 Python 2 不兼容了,并且人们也并没有成群结队的向 Python 3 移植,因此增加一些不兼容的改变不仅没有坏处,反而对这门语言更有好处了。
老实讲,如果 Python 3 有足够多的诱人的新特色,更多的人会愿意移植到到 Python 3 的(至少他们新的项目会),并且越来越多的人会去移植他们 Python 2 的库和项目。更甚,在下愚见,这会吸引更多的现在没有在用 Python 的人们。
大家已经看到,Python 3 是一个乏味的更新。
诚然,Python 3 让 Python 更加的清晰明了,并且也修正了一些长久的问题和令人头疼的地方。但是它却没有带来那么大的改变。话说回来,在 Python 3 在构思的时候它的思路被设定得很宽松。Javascript 那个时候也没有那么流行。油Tube 还没有诞生。那可是很久以前的事了。
现如今像合适的包络,不可变性,好的异步性等等可是犀利的黑客们考虑的重点。
话不多说,下面列举了一些可能让 Python 3 变得有趣的建议。至少对于我来说这会引起我的兴趣:
- 移除全局解释器锁(GIL,Global Interpreter Lock)。或者提供一个好的异步处理机制。Guido 的 PEP 3156说不准可以解决这个问题。能拥有类似诸如 Go 的通道(channels)的原语也是挺好的。
- 让 Python 更快。如果 Javascript 能变快,CPython 也能变得很快。或者 PyPy 可以足够成熟以替代 CPython(应该只能有一个存在才对)。如果需要像 Lars Bak 这样的大咖来做,去 Kickstarter——我会出钱的。让大公司也不好意思得也贡献一点。不是说 Dropbox 也花钱开发他们基于 Python 的 LLVM 么?
- 增加类型。嗯,是 opt-in 类型。这样你能用来加快你的代码速度(对 CPython 来说),或者确保以有助于类型检查(对 Dart 来说)。在标准库中加入类型注解。
- 改进标准库。找一个团队去过一下这些标准库,修正那些长期存在的烦人的问题,提高速度并且修正 bug。改进这些库的 API,并为通用的东西提供更加简便的接口(对比一下 requests 和 urllib)和现有的标准库一起提供一个名字域不一样的新的改进后的标准库。并且,让他们的转换能很方便的进行(也许可以通过某种自动化的工具完成)。
- 改进“读取-求值-输出循环”(REPL,Read-Eval-Print Loop)。拜托现在已经是 2014 年了。用现代的方法重新做做 REPL 吧。加点颜色什么的。参考下 IPython 好了。把它弄成个 Client/server 的东西,这样 IDE 和编辑器可以嵌入它。
所以说 Python 3 的开发人员,慢慢来。嗯,但也不要太慢了。大概3、4 年的样子吧。我们等 ES6 等了 10 年吧,3、4 年我们还是能等的。
看起来也不是所有人都在用 Python 3,那么冒一点险好了。打破常规。更早更频繁的发布吧。多和社区打交道。
各位,Python 3 其实也没有真的在杀死 Python。但是它也许能从正在杀死它的东西中拯救它。
后记:你怎么看?你能想到更多的让 Python 3 更加诱人的点子么?什么样的新功能能激发你的兴趣呢?