从编译原理出发,看看你和资深 coder 差在哪儿?| 极客时间

2020 年 6 月 2 日 InfoQ

我是宫文学,北京物演科技 CEO。最近几年,我参与了一些微服务相关的项目,发现前几年大家普遍关注的技术问题,比如有状态的服务(Stateful Service),并没有随着新技术的出现,而得到很好地解决,反而更加恶化了。

所以,我从去年开始设计,计划采用新的计算范式,发明一门新语言。这促使我更加关注编译技术的前沿动态,想把这些动态、理念和自己的实战经验都分享出来。

与此同时,在我第一季专栏《编译原理之美》中,很多同学也反馈:想在理解编译原理的概念、理论和算法的基础上,更加深入地把知识与实践相结合。要做到这一点,无外乎是解决这么几个问题:

  1. 语法分析方法有自顶向下和自底向上两种,自己动手实现时,该选择哪一种?选择自己手写,还是工具生成?

  2. 语义分析中要做属性计算,但具体到自己熟悉的语言,到底计算了哪些属性?如何完成引用消解和类型检查?

  3. 编译器中会使用 IR ,实际使用中的 IR 到底是什么样子?

  4. 编译器会优化我们写出的代码,但具体到各个语言,其背后的逻辑和优先级是怎样的?如何写出便于编译器优化的代码呢?

类似的问题还有很多,总结起来就是:我们用的编译器,到底是怎么写出来的。

现代语言的编译器,往往整合了最前沿的技术。掌握真实编译器的实现机制,有助于吃透语言的核心特性,更高效地运用它,进而提升我们的技术水平。而且,阅读语言编译器的源代码,跟踪它的执行过程,也会让你获得对编译器的第一手理解,是高效学习编译原理的重要途径

所以,我和极客时间联手打造了新一季专栏《编译原理实战课》。在专栏中,我会带你巩固编译原理的核心基础知识,深入解析 7 大主流语言的编译器源码,帮你掌握真实编译器的实现机制与关键算法,进而站在更加宏观的视角,从编程语言的设计层面理解编译原理。

👆扫描二维码,免费试读

早鸟 + 口令「bianyi666」立省 40

到手仅 ¥89,仅限「前 200 人」有效

我是谁?

我是宫文学,《编译原理之美》课程作者,在 IT 领域已经工作 20 余年,是国内最早做 BPM(流程管理平台)和 BI 平台(大数据平台)的创业者之一,而后做过电子表单和快速开发平台,这些经历都与编译技术密不可分。所以,我熟知各种语言编译器的实现机制,有丰富的实战经验。

我是如何讲解这门课程的?

通过学习这门课,你可以深入了解现代语言编译器的结构、采用的算法及设计上的权衡。这样,你在用编译技术完成一个项目时,不仅懂得其运行原理,还知道该在什么地方用什么技术——掌握更多编译器的设计和实现思路,作为项目的决策依据。

为此,我将带你深入解析 7 大主流语言的编译器,包括 Java 编译器(javac)、Java 的 JIT 编译器(Graal)、Python 编译器(CPython)、JavaScript 编译器(V8)、Go 语言的编译器(gc)以及 MySQL 的编译器。

之所以选择这些编译器,因为它们足够有代表性,都是我们平常会用到的。而且,它们各自采用了不同的编译技术,通过对比分析,你会发现其中的异同点,对编译技术有更全面的、深入的认知。

基于以上,我将课程划分为以下三部分:

  • 预备知识篇:系统梳理编译原理的核心知识体系,加深你对关键概念的理解。学完预备知识后,你再去看各种编译器的源代码和相关文档,可以更好地将实践与原理结合,并互相印证。

  • 真实编译器解析篇:研究 7 种主流语言的编译器源码,跟踪它们的运行过程,分析编译过程的每一步是如何实现的,并对一些针对性的编译技术点加以分析和点评。这样,我们在研究了 Java、Java JIT、Python、JavaScript、Julia、Go、MySQL 这 7 种编译器后,相当于把编译原理印证了 7 遍。

  • 现代语言设计篇:分析总结前面讲过的编译器,进一步提升你对编译技术的认知高度。学完这一模块,对于如何设计编译器的前端、中端、后端、运行时,你都会有比较全面的了解,知道如何在不同的技术路线之间做取舍。

课程中的大部分内容,都是我自己在阅读源码,跟踪源码执行过程的基础上梳理出来的。在课程设计上,我会以研究真实编译器的运行原理为主要手段,着力于扩大你的知识版图,增强实战能力,从而达到「行万里路」的目的。

 订阅福利


早鸟优惠 + 口令「bianyi666」 ,到手仅 ¥89

立省 ¥40,原价 ¥129,仅限「前 200 人」有效


订阅后生成海报发给好友,

每成功邀请 1 位好友,可得 ¥24 返现。

👆扫描二维码,免费试读


👇 点击「阅读原文」

输入优惠口令「bianyi666」

以 最低价 ¥89 入手,仅限 前 200 人。

登录查看更多
0

相关内容

编译器(Compiler),是一种计算机程序,它会将用某种编程语言写成的源代码(原始语言),转换成另一种编程语言(目标语言)。
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【干货书】R语言书: 编程和统计的第一课程,
专知会员服务
111+阅读 · 2020年5月9日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
如何快速入门TensorFlow ?丨极客时间
InfoQ
4+阅读 · 2019年1月8日
薪水你自己填-番外篇
待字闺中
4+阅读 · 2018年6月13日
帮助你开阔技术视野的几个公众号
机器学习算法与Python学习
5+阅读 · 2018年3月1日
2018,这9个优质技术公众号,你不能私藏!
码农翻身
9+阅读 · 2018年1月31日
手把手带你玩转机器学习和深度学习
大数据技术
8+阅读 · 2018年1月3日
荐号 | 如何快速成长为优秀工程师,这7个公号告诉你
机器学习算法与Python学习
3+阅读 · 2017年11月12日
Few-shot Adaptive Faster R-CNN
Arxiv
3+阅读 · 2019年3月22日
Music Transformer
Arxiv
5+阅读 · 2018年12月12日
VIP会员
相关资讯
如何快速入门TensorFlow ?丨极客时间
InfoQ
4+阅读 · 2019年1月8日
薪水你自己填-番外篇
待字闺中
4+阅读 · 2018年6月13日
帮助你开阔技术视野的几个公众号
机器学习算法与Python学习
5+阅读 · 2018年3月1日
2018,这9个优质技术公众号,你不能私藏!
码农翻身
9+阅读 · 2018年1月31日
手把手带你玩转机器学习和深度学习
大数据技术
8+阅读 · 2018年1月3日
荐号 | 如何快速成长为优秀工程师,这7个公号告诉你
机器学习算法与Python学习
3+阅读 · 2017年11月12日
Top
微信扫码咨询专知VIP会员