Python3 能振兴 Python的原因分析


Posted in Python onNovember 28, 2014

我从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那个时候也没有那么流行。YouTube还没有诞生。那可是很久以前的事了。

现如今像合适的包络,不可变性,好的异步性等等可是犀利的黑客们考虑的重点。

 

话不多说,下面列举了一些可能让Python 3变得有趣的建议。至少对于我来说这会引起我的兴趣:

  1. 移除全局解释器锁(GIL,Global Interpreter Lock)。或者提供一个好的异步处理机制。Guido的PEP 3156说不准可以解决这个问题。能拥有类似诸如Go的通道(channels)的原语也是挺好的。
  2. 让Python更快。如果Javascript能变快,CPython也能变得很快。或者PyPy可以足够成熟以替代CPython(应该只能有一个存在才对)。如果需要像Lars Bak这样的大咖来做,去Kickstarter——我会出钱的。让大公司也不好意思得也贡献一点。不是说Dropbox也花钱开发他们基于Python的LLVM么?
  3. 增加类型。嗯,是opt-in类型。这样你能用来加快你的代码速度(对CPython来说),或者确保以有助于类型检查(对Dart来说)。在标准库中加入类型注解。
  4. 改进标准库。找一个团队去过一下这些标准库,修正那些长期存在的烦人的问题,提高速度并且修正bug。改进这些库的API,并为通用的东西提供更加简便的接口(对比一下requests和urllib)和现有的标准库一起提供一个名字域不一样的新的改进后的标准库。并且,让他们的转换能很方便的进行(也许可以通过某种自动化的工具完成)。
  5. 改进“读取-求值-输出循环”(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更加诱人的点子么?什么样的新功能能激发你的兴趣呢?

Python 相关文章推荐
Python Tkinter简单布局实例教程
Sep 03 Python
Python实现数通设备端口使用情况监控实例
Jul 15 Python
python函数形参用法实例分析
Aug 04 Python
tensorflow 获取变量&打印权值的实例讲解
Jun 14 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
Feb 27 Python
Python 调用 Windows API COM 新法
Aug 22 Python
pycharm快捷键汇总
Feb 14 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
Jun 05 Python
基于python实现ROC曲线绘制广场解析
Jun 28 Python
PyTorch: Softmax多分类实战操作
Jul 07 Python
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
Apr 27 Python
Python开发工具Pycharm的安装以及使用步骤总结
Jun 24 Python
Python3 正在毁灭 Python的原因分析
Nov 28 #Python
关于你不想知道的所有Python3 unicode特性
Nov 28 #Python
Python 2.7.x 和 3.x 版本的重要区别小结
Nov 28 #Python
用Python编写一个国际象棋AI程序
Nov 28 #Python
Python中给List添加元素的4种方法分享
Nov 28 #Python
Python列表(list)、字典(dict)、字符串(string)基本操作小结
Nov 28 #Python
跟老齐学Python之使用Python查询更新数据库
Nov 25 #Python
You might like
解析isset与is_null的区别
2013/08/09 PHP
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
ExtJS Ext.MessageBox.alert()弹出对话框详解
2010/04/02 Javascript
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
Node.js中对通用模块的封装方法
2014/06/06 Javascript
JavaScript中的cacheStorage使用详解
2015/07/29 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
怎么限制input的text里输入的值只能是数字(正则、js)
2016/05/16 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
深入浅出讲解ES6的解构
2016/08/03 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
Javascript中call,apply,bind方法的详解与总结
2016/12/12 Javascript
创建一般js对象的几种方式
2017/01/19 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
JavaScript变量声明var,let.const及区别浅析
2018/04/23 Javascript
npm的lock机制解析
2019/06/20 Javascript
微信小程序实现点击生成随机验证码
2020/09/09 Javascript
python中的列表推导浅析
2014/04/26 Python
windows下python连接oracle数据库
2017/06/07 Python
python ddt实现数据驱动
2018/03/14 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
荷兰家电销售网站:Welhof
2020/12/08 全球购物
一套C++笔试题面试题
2012/06/06 面试题
Java面试题:为什么要用Java
2012/05/11 面试题
聚美优品恶搞广告词
2014/03/14 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
考察邀请函范文
2015/01/31 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书