作者:佚名来源:Python部落

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

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

最后,也是大家最关心的问题,这个重构会对Python语言的开发者造成什么影响呢?Guido说,应该是没有影响的,底层重构不会影响Python的语法。

看来,不管是多么成功的项目,也存在着因为时代的限制而遗留的一些令人不快的问题,完美的设计和实现,从来不是一蹴而就的呀~

python部落稿酬_Python之父考虑重构Python解释器相关推荐

  1. python 编译器重构_Python之父考虑重构Python解释器

    7月22日,Python之父Guido在Medium上发表了他的第一篇博文<PEG Parser>. 在该文中,Guido说他正在考虑使用PEG Parser代替现有的类LL(1) Par ...

  2. python核心理念_Python 之父谈放弃 Python:我对核心成员们失望至极!

    Python 之父讲述退位原因,以及 Python 的未来将何去何从. 在 Python 社区,Python 的发明者 Guido Van Rossum 被称为 "仁慈的终生独裁者" ...

  3. python之父考虑重构python解释器_Python之父考虑重构Python解释器

    同时,父重构杜卡迪也将会从哈雷那里获得更多的资金支持来维持品牌发展. 凡本网注明来源非中国证券报·中证网的作品,考虑均转载自其它媒体,考虑转载目的在于更好服务读者.传递信息之需,并不代表本网赞同其观点 ...

  4. Python之父考虑重构Python解释器

    7月22日,Python之父Guido在Medium上发表了他的第一篇博文<PEG Parser>. 在该文中,Guido说他正在考虑使用PEG Parser代替现有的类LL(1) Par ...

  5. python核心编程第三版_Python之父:自学python,这3本书能节约你一大半时间编程...

    今天给大家推荐三本书,有两本是属于一个系列,即<Python核心编程>第二版和第三版,一本讲基础和一本讲进阶,非常适合Python的初学者和有一定基础的学习者.还有一本书适合所有想学Pyt ...

  6. python模拟按键_python 模拟按键放在模拟器Python初学者的17个技巧

    Python初学者的17个技巧,有需要的朋友可以参考下. W WW.002pc .COM认为此文章对<python 模拟按键放在模拟器Python初学者的17个技巧>说的很在理. 交换变量 ...

  7. python编写异常处理_Python 简明教程 --- 23,Python 异常处理

    要么做第一个,要么做最好的一个. 目录 我们在编写程序时,总会不自觉的出现一些错误,比如逻辑错误,语法错误和一些其它的运行时错误等. 逻辑错误: 这种错误不会导致程序崩溃,它不容易被发现,只有在执行结 ...

  8. python爬虫机器_Python常用的机器学习库|python爬虫|python入门|python教程

    https://www.xin3721.com/eschool/pythonxin3721/ Python在科学计算中用途广泛:计算机视觉.人工智能.数学.天文等.它同样适用于机器学习也是意料之中的事 ...

  9. python的输出函数_Python输出函数print()总结(python print())

    Python 思想: "一切都是对象!" python版本:python3.5.1 ; IDE:pycharm2017.2 一.print()函数概述 print() 方法用于打印 ...

最新文章

  1. CSS:超出部分省略号
  2. 51. N-Queens N 皇后
  3. VBA_Excel_教程:过程,函数
  4. IOS学习:常用第三方库(GDataXMLNode:xml解析库)
  5. ssm中使用slf4g
  6. Mac OS X 显示和隐藏文件
  7. Google Zxing 生成二维码
  8. 一文弄懂特征缩放(归一化/正则化)
  9. 我靠ppt做兼职副业,1月还清2W贷款成功上岸!
  10. python网页制作web_python web麻瓜编程
  11. 也致第一次安装Rime的你
  12. 计算机桌面工作提醒,如何实现在电脑桌面上添加文字提醒
  13. Linux 中断(IRQ/softirq)基础:原理及内核实现
  14. 网络安全风险评估原理
  15. wince 触摸屏 学习
  16. 找规律+菊花图 - hdu6090
  17. unity 获取多个坐标点的中心点
  18. 蜜罐cowrie搭建和部分问题处理
  19. 华三s5000配置镜像接口_H3C S5000交换机简单配置
  20. 吉林大学计算机科学杨凤杰,吉林大学计算机科学与技术学院 [2005-04] 总第36期...

热门文章

  1. Dynamipsgui入门教程
  2. easypoi导出excel 效率_Spring Boot 入门(十二):报表导出,对比poi、jxl和esayExcel的效率...
  3. 深度学习之卷积神经网络 LeNet
  4. 机器学习算法之 logistic、Softmax 回归
  5. ImageJ Nikon_科研论文作图之ImageJ
  6. jQuery中的元素操作
  7. C语言里if语句变量作为判断条件,C语言教学(九-上)if else判断语句
  8. w3wp oracle,w3wp.exe占用CPU超过50%的处理
  9. 网络:常见的端口号及分类
  10. mysql类 php100_php mysql 类