时间:2019-07-28 15:38:03 作者:Dorise 浏览量:53
大家好!小编在大学的时候学过C语言,但感觉太难了,学的马马虎虎,我们经常说Python,那么Python是什么?其实Python就是一个编程语言,现在,全世界差不多有600多种编程语言,但流行的编程语言也就那么20来种,总的来说,这几种编程语言各有千秋。C语言是可以用来编写操作系统的贴近硬件的语言,所以,C语言适合开发那些追求运行速度、充分发挥硬件性能的程序。而Python是用来编写应用程序的高级编程语言。
PYTHON解说器将被重构?图1
在7 月 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 之前,下面这段代码都是能够正常运转的,而不像我们直观感触的第二行代码应该报错。
PYTHON解说器将被重构?图3
这就是 Python 解说器处理不了带来的后遗症。这也导致 Python 团队不得不在代码里添加一些不受欢迎的“特例”来处理这些边缘情况。
PYTHON解说器将被重构?图4
Guido 说,Python 刚呈现的时分,内存还很贵,运用 LL(1) Parser 是非常合理的。不过在现在这个内存以 G 为单位的时代,解说器多添加几百k甚至上兆的内存消耗,现已底子不算什么了。所以是时分运用更抱负的 PEG Parser 来重构 Python 解说器了。
PYTHON解说器将被重构?图5
最后,也是我们最关心的问题,这个重构会对 Python 言语的开发者形成什么影响呢?Guido 说,应该是没有影响的,底层重构不会影响 Python 的语法。
看来,不管是多么成功的项目,也存在着因为时代的约束而留传的一些令人不快的问题,完美的设计和完成,历来不是一蹴而就的呀~