写点什么

Anders Hejlsberg 讲解现代编译器结构

  • 2016-06-28
  • 本文字数:873 字

    阅读完需:约 3 分钟

《编译原理》又名龙书,是编译器结构的主要参考书,首次出版于 1986 年。 Anders Hejlsberg,以从事 Turbo Pascal,Delphi,C#和 TypeScript 的开发而闻名,在 Channel 9 的采访中讲解当前的编译器结构和 30 年前的不同。

经典编译器的主要特征是顺序处理输入,各个阶段都可以看作是管道的组件。

复制代码
词法分析 -> 语法分析 -> 类型检查 -> 代码生成 -> Emitter

在过去的十年里,需要 IDE 和工具来提供诸如自动完成,重构,代码导航和静态分析等等功能的需求逐渐增强。微软的用户研究表明这些特性必须低于 100ms 的延迟,否则的话就会被认为太慢。这和编译一个中型解决方案的项目时间可能会花费超过 1 分钟不一样。

为了在 IDE 里提供快速的反馈,编译器必须尽可能的限制实时处理的量。这意味着在每次键入的时候编译整个程序是不可行的。相反,编辑器仅仅构建足够给用户提供答案的信息量。

快速响应不仅仅是通过限制处理内容,还通过尽可能的重用老的数据结构。每当用户键入一个新的字符,内存中的所有数据结构可以认为是抹去的。然后,为了提高响应时间,所有没有修改的东西都可以重用。诸如抽象语法树(AST),如果其所代表的源文件没有被修改就可以被重用。

即使数据结构被修改了,重用也是可以的。持久化的数据结构是不可变的,通过创建和返回新的实例来实现修改,从而保持底层的部分不被修改。以抽象语法树为例,意味着修改当前的节点和该节点对应的父节点直到根节点为止。树的其他部分,保持原状并在创建新的实例的时候被重用。

回到几年前,IDE 中的实时特性需求导致C#编译器和IDE 特性实现中的代码重复。这也是创建Roslyn 背后的主要原因之一。Roslyn 的设计出发点就是能在IDE 和命令行中同样使用。

Roslyn 和 Seth 在最后讨论了学习现代编译器结构的资源, Roslyn TypeScript 项目是很好的实例,且都在 Github 上开源。

查看英文原文: Anders Hejlsberg Explains Modern Compiler Construction


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-06-28 19:002549

评论

发布
暂无评论
发现更多内容

大模型做时序预测也很强!华人团队激活LLM新能力,超越一众传统模型实现SOTA

Openlab_cosmoplat

一文读懂传统服务器与云服务器的区别

Finovy Cloud

并发编程-ExecutorCompletionService解析

京东科技开发者

实现“代码可视化”需要了解的前置知识-编译器前端

京东科技开发者

Amazon Bedrock 实践系列 | Claude 3 深度探秘

亚马逊云科技 (Amazon Web Services)

生成式AI

出海企业如何从海外云手机中受益?

Ogcloud

企业出海 云手机 海外云手机 云手机海外版 电商云手机

【论文速读】| CovRL:基于覆盖引导的强化学习对LLM基础变异进行JavaScript引擎模糊测试

云起无垠

欧伟杰博士:不做追随者 “内核”的厚度决定“产品”的高度

YashanDB

数据库 国产数据库 yashandb 根技术 共享集群

苹果Mac电脑CHM阅读器推荐:CHM Viewer Star for mac破解下载

iMac小白

明天!龙蜥邀您参加第二届 eBPF 开发者大会,探索 eBPF 技术的无限可能

OpenAnolis小助手

开发者 ebpf 龙蜥社区 龙蜥操作系统

云手机可以用来进行Temu电商测评吗?

Ogcloud

云手机 海外云手机 云手机海外版 电商云手机 跨境云手机

从零开始到将应用程序成功发布到应用商店

雪奈椰子

参与 PenPad Season 2 获得勋章,还有海量 Scroll 生态稀缺权益

威廉META

Mac电脑必备蓝光多媒体播放器 Blu-ray Player Pro 破解版 完美支持M1

iMac小白

今天你对齐了吗,浅析中后台表单的设计艺术

inBuilder低代码平台

对号入座,快看看你的应用系统用了哪些高并发技术?

京东科技开发者

和鲸协办2024GAIIC算法挑战赛,基于ModelWhale平台实现模型自动评审,加速结果出分

ModelWhale

人工智能 大数据 全球人工智能技术创新大赛

安卓屏幕锁万能钥匙:UnlockGo (Android) for Mac 7.6.0 激活版

iMac小白

崖山数据库系统YashanDB YCP认证培训,重磅上线!

YashanDB

数据库 国产数据库 yashandb YCP

【PolarDB-X从入门到精通】课程随堂互动获奖公告

阿里云数据库开源

数据库 阿里云 分布式数据库 教程分享 PolarDB-X

监控系统泛滥:CTO 面临的隐形成本危机

观测云

监控

Performance analysis of IPQ9554 chip motherboard with QCN6274 5G & 6G card

wifi6-yiyi

5G 6G ipq9554 qcn6274

意难平!面试小米,一步之遥...

王磊

Java 面试题

参与 PenPad Season 2 获得勋章,还有海量 Scroll 生态稀缺权益

西柚子

Anders Hejlsberg讲解现代编译器结构_.NET_Pierre-Luc Maheu_InfoQ精选文章