Python 之父考虑重构 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 的语法。
看来,不管是多么成功的项目,也存在着因为时代的限制而遗留的一些令人不快的问题,完美的设计和实现,从来不是一蹴而就的呀~
英文原文地址:https://medium.com/@gvanrossum_83706/peg-parsers-7ed72462f97c
转载自:Python部落
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
苹果收购英特尔的智能手机调制解调器业务
昨天,英特尔和苹果签署了一项协议,关于苹果收购英特尔的大部分智能手机调制解调器业务(modem)。此次收购大约 2200 名英特尔员工将加入苹果,苹果也将从英特尔手中收购 IP 和设备。 英特尔表示,不会完全退出 modem 业务,仍然可以开发个人电脑调制解调器、物联网设备、自动车辆及任何不是智能手机的东西。英特尔首席执行官 Bob Swan 表示: 此次收购使我们能够专注于为 5G 网络开发技术,同时保留我们团队创造的关键知识产权和 modem 技术。 此次收购意味着,苹果正在为其智能手机生产自己的 5G 调制解调器,而不必依赖高通(Qualcomm)提供硬件,高通是智能手机调制解调器的主要供应商。现实表明,英特尔的 modem 技术在历史上一直落后于高通。有报告称,当苹果在 iphone X 上使用两家公司的调制解调器时,尽管高通的调制解调器有一些功能被禁用,但是高通的硬件提供了比英特尔的更高的速度。 过去,苹果曾指责高通在专利使用费中收取不成比例的高额费用。苹果的硬件技术副总裁 Johny Srouji 表示: 此次收购将有助于加快我们对未来产品的开发,并使苹果能够进一步区分未来...
- 下一篇
OSChina 周五乱弹 —— 源花?真土鳖,我要开源小仙女!
Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @for_ :#今日歌曲推荐# 鲁叔啥时能来深圳。分享Ludovico Einaudi的单曲《Drop》: (来自@网易云音乐) 《Drop》- Ludovico Einaudi 手机党少年们想听歌,请使劲儿戳(这里) @小鱼丁 :嘻嘻 “小仙女生日快乐。” 你听到的是我2天前给你(@小鱼丁)说话的回音。 该买个特别的蛋糕么。 比如? “我觉得吧,这生日蛋糕需要按字数收费。” 那该让红薯(@红薯)去付账去! 可是双喜临门呀, 红薯(@红薯)中奖了! @红薯 :以后请叫我“红科学家” 问题来了, @我不知道丶 :这是发给刘冬的,关你红薯什么事? 乱领奖! 趁着这个大喜的日子, 让我们评一下奖吧。 @二进制彭于晏 :谁是我们的源花呢,是粉色奶团团吗,我犹记得吕不懂大人 这个小小编辑有提名的! 小小编辑提名:大王(@罗马的王) @小小编辑 :@罗马的王 你问我为啥? 大王(@罗马的王)发过一个这个 @罗马的王 :发现一个女装共同爱好者 曾经大王(@罗马的王)张这样的, 后来买了女装以后…… 画风就不一样了, 后来? 后来娶了媳妇, 2姐妹...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Mario游戏-低调大师作品
- 2048小游戏-低调大师作品
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案