python 之父谈 Python 的未来与解释器重构 (非原创)

本贴最后更新于 654 天前,其中的信息可能已经水流花落

python 之父谈 Python 的未来与解释器重构

Python 的未来

2019 年 5 月初,Python 之父 Guido van Rossum 在今年的 PyCon US 大会上作了名为“Python Language”的演讲。近日,他又接受了 IT 媒体 Infoworld 的采访,大谈 Python 的未来,主要谈论了以下几个问题。

image.png

问题一:关于 Python 的性能提升

Guido:Python 3 的性能已经跟上来了,比 2012 年时要快的多。另外,还有像 PyPy 这样的 Python 实现。有一些新版本的 Python 解释器也在试图提升速度。

其实,Python 的性能并没有人们说的那样差,而且因为 Python 大部分是用 C 语言实现的,很多事情做起来可以和 C 语言一样快。我还是认为,Python 对于大部分事情来说已经足够快了。

尽管没有往 Python 3 中新增特性以改善速度,但是我们已经让语言的很多方面变快了:比如,引用计数比以前快了些。主要还是优化现有的代码,但是作为用户来说,很难注意到区别。

而且如果你急需提升某个 Python 程序的速度,可以尝试使用 PyPy。它已经足够成熟,值得尝试。

问题二:Python 为什么受欢迎?

Guido:主要是学习方便,使用方便,而且社区开放、乐于助人。

问题三: Python 的开发工作

Guido:目前,以及过去五年多时间里,主要是其他人在推动 Python 的发展。我偶尔进行一些指导,判断某个新想法是否值得接受,通常是设计是否要添加新语法时。在标准库开发方面,我很少干预。有时候,我也不得不让大家停止讨论,各自妥协。

问题四:Python 在移动计算领域的应用

Guido:移动对 Python 来说仍是一个很难啃下来的平台,但是并没有浏览器平台的难度大,因为 Python 实际上是可以运行在所有品牌智能手机上的。你只需要找到懂得怎样构建移动版本 Python 的人就行了。

标准的 CPython 源代码几乎可以编译成能在安卓和苹果手机上运行的二进制文件。有很多人在朝这方面努力,不断贡献着补丁包。不过进展的速度比我希望的要慢一些。不过话又说回来,我本人并不开发移动应用,所以我没有太多自己参与的动力。但是我很乐于见到这方面的进展。

Python 解释器重构

在本月的 22 日,Python 之父 Guido 在 Medium 上发表了他的第一篇博文《PEG Parser》。

在该文中,Guido 说他正在考虑使用 PEG Parser 代替现有的类 LL(1) Parser(名为 pgen),来重构 Python 解释器。原因是现在的 pgen 限制了 Python 语法的自由度,使得一些语法难以实现,也让当前的语法树不够整洁,一定程度上影响了语法树的表意,不能最好地体现设计者的意图。

那 PEG Parser 和现有的 LL(1) Parser 有什么区别呢?可以这样简单地理解,PEG 语法解释器在解析语法的时候,会一次性加载全部代码,所以解释器可以根据任意位置的符号来判断语法的语义。而目前的 LL(1) Parse 解析语法的时候只会向前检测一个符号,来猜测语义,导致部分语法有二义性的表现,进而限制了 Python 语言的语法定义方式。当然,一次性加载全部代码,也意味着 PEG Parser 需要更大的内存来运行。

说当前解释器限制了 Python 的语法实现,很多同学可能没有明显的感受,所以 Guido 又举了一个例子:在 Python3.8 之前,下面这段代码都是可以正常运行的,而不像大家直观感受的调用函数时应该报错。
image.png

这就是 Python 解释器处理不了带来的后遗症。这也导致 Python 团队不得不在代码里增加一些不受欢迎的“特例”来处理这些边缘情况。

Guido 说,Python 刚出现的时候,内存还很贵,使用 LL(1) Parser 是非常合理的。不过在现在这个内存以 G 为单位的时代,解释器多增加几百 k 甚至上兆的内存消耗,已经根本不算什么了。所以是时候使用更理想的 PEG Parser 来重构 Python 解释器了。

最后,也是大家最关心的问题,这个重构会对 Python 语言的开发者造成什么影响呢?

Guido 表示:底层重构不会影响 Python 的语法。

1 操作
nmb_musen 在 2020-08-06 17:54:47 更新了该帖
3 回帖
请输入回帖内容 ...
  • jomer3126

    点击开快乐的界面,编写下幸福的程序,好运就在你运算的脑海里,成功就在你敲击的双手中。程序员节,我把祝福编辑,愿你把吉祥安康永远保存!8491

  • 其他回帖
  • test123

    文章通俗易懂,内容很有用

  • jomer3126

    点击开快乐的界面,编写下幸福的程序,好运就在你运算的脑海里,成功就在你敲击的双手中。程序员节,我把祝福编辑,愿你把吉祥安康永远保存!4135