Python 之父谈论 Python 的未来

448 查看

作为一门已经开源25年、面向对象的动态语言,毫无疑问,Python近年来已经成为软件开发者主要的工具。大家喜欢它对程序员的友好性以及其框架和库丰富的生态系统。

InfoWorld:为了促进Python在移动计算领域出现,有什么事正在进行当中?当你想到移动计算,你通常想到的是用于Android开发的Java、JavaScript、Swift以及Objective-C。

Van Rossum:移动计算对我们来说仍然是一个很难攻克的平台。但是并不像浏览器平台那么糟糕,因为Python实际上能够运行在所有品牌的智能手机上。你只需要找到知道如何创建Python的版本的人就行了。

不幸的是,标准的CPython源码只能差不多,但是不完全,编译成一个能够正确地运行在一台Android或者iPhone手机上的二进制文件。有很多人对于推动Python在移动计算领域出现、贡献补丁和诸如一些你如何确认你是在一个Android平台的小事感兴趣。它正在前进,虽然并不如我所期望的那么快。但话又说回来,我并不开发移动应用,因此我并不是很有动力去让自己深入了解这些。但是我很高兴看到正在发生的事。

InfoWorld:Python将来会在浏览器中扮演类似JavaScript的角色吗,或者说这件事并不可能?

Van Rossum:这并不是我们的目标。

由于浏览器领域自身的结构,这真的很难有效地和JavaScript竞争。最好的方法就是将Python翻译成JavaScript。但是通常由此产生的程序的运行速度比用原生的Python写的程序慢,同时它的运行速度也将比用JavaScript写的类似的程序慢。不过,仍然有一些关于将Python翻译成JavaScript并且将它运行在浏览器中的令人激动的实验。

InfoWorld:当我们谈论JavaScript的时候,你对WebAssembly的印象如何?

Van Rossum: 这实际上或许会提高让Python运行在浏览器上的可能。如果它是asm.js的替代品,那么它基本上消除了JavaScript作为唯一一种在网络上使用的语言的局限,同时它将JavaScript变成类似汇编的东西。就像当你写Python代码,然而底层的Python解析器是用C语言写的。而当你编译C语言的代码、将它翻译成机器码,同时在这之间也涉及到一些汇编语言。

如果我们不能在浏览器中消灭JavaScript,我们也许能让JavaScript成为任何想要在浏览器中运行的事物的唯一的翻译目标。那么Python和其他语言,如Ruby或者PHP,能有效的被翻译成底层的东西。

InfoWorld:你的意思是说WebAssembly给Python开发者提供了机会?

Van Rossum: 我认为是的。但那之前不得不经历一个实验阶段,而那些觉得开发工具比制作应用程序更有趣的人获得了一个弄清楚让Python运行在WebAssembly上最好的方法是什么的机会。

InfoWorld:当我在2012年采访你的时候,Python因为它的性能而被指责。你那时告诉我它已经足够快了。自从那时起,Python的性能提升的怎么样?

Van Rossum:Python3性能已经赶上来了。Python3比2012年的时候快了不少。另外,有特定的Python版本,如PyPy,仍然存在。有一些新版的Python解释器旨在提高速度。

事实证明,有关Python性能的故事并不像人们讲的那么糟糕。因为Python大多数都是由C语言实现的,所以在做很多事情的时候,Python能够和C语言运行的一样快。对于大多数打算用Python来实现的事,我仍然坚信Python已经足够快了。

InfoWorld:开发人员为了让Python运行的更快,在Python3.x中有添加具体的特性吗?

Van Rossum:我们没有在Python3.x中添加新的特性。但在幕后,我们已经让语言的各个方面得到了提升,像引用计数,我认为快了一些。所有的这些只是一些微调,但是用户并不会注意到差异。并没有像“用一个不同的方式写你的代码,然后它变得更快”这类建议。那没有必要。

InfoWorld: 你刚才提到过PyPy。你对像PyPy或者Futhark这样的项目的印象是怎样的?Futhark自动生成Python代码和其他语言的代码作为GPU代码的封装。

Van Rossum: 后者我甚至都没听说过。类似那样的事物通常是相当深奥的。它们是为那些正在做酷炫的、疯狂的东西的人而存在,因此可能并不能被典型的Python程序员直接使用。

但是PyPy是相当成熟的。如果在一个有多种用途的Python程序中你对它的速度有迫切的需求,观察用PyPy能否使得应用运行的更快是值得一试的。你可能遇到它运行的更慢的情况,因为你正在使用拓展模块,在拓展模块和你的Python代码之间来回切换时会略慢。

如果你正在做的大部分事依赖于拓展模块,CPython可能仍然是你该选择使用的。

InfoWorld:你对所有这些涌现在Python生态系统中的Python框架和类似Futhark这样的事物的发展感到吃惊吗?

Van Rossum: 每个人都想成为胜利队伍的一员。如果你了解下关于Python每年有多少个会议,有多少人来到像PyCon和EuroPython这样的大型会议,你会发现Python似乎是在通往成功的道路上。它无处不在,这令人感到兴奋。对于那些能够为了他们专门的项目而寻找场地的人,无论他们使用Python作为一个起点、一门支持语言还是一种灵感,我都不感到吃惊。

InfoWorld:为什么Python如今如此受欢迎?在语言人气指数上,像Tiobe, PyPL, GitHub, and RedMonk这类平台,它都做得很好。

Van Rossum:因为Python是容易学习,容易使用,社区是如此开放和乐于助人。

InfoWorld: 你说过你是负责Python的人,但是有很多贡献者。你和贡献者分别占多少?

Van Rossum:关于这一点,在最近的5年或者更久之前,大多数来自于其他人。我偶尔给些我认为一个具体的想法能不能被接受的建议,通常是有关某些可能新添的语法。当涉及到库的时候,我很少刻意去干涉。有时候,我不得不告诉人们停止争论,通过一些妥协设法找到一个方法。

对于社区,我的目标是它能够自我维持,那么我能够完全退休或者休一趟长假。我希望并期望Python能够从其它语言或者某些活动领域吸收新的想法来演变自身。

我想要指出的一件事是关于SciPy and NumPy的举动。这些人正在介绍Python作为Matlab的替代物。它是开源的,它是更好的,他们能够改变它。他们正在将Python带到一个我从来没有预料到的领域。他们也创建了像Jupiter Notebooks这样能够在浏览器中显示交互式的Python界面的事物。在那个领域有许多难以置信的酷炫的作品正在诞生。