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


我是宫文学 , 北京物演科技 CEO 。 最近几年 , 我参与了一些微服务相关的项目 , 发现前几年大家普遍关注的技术问题 , 比如有状态的服务(Stateful Service) , 并没有随着新技术的出现 , 而得到很好地解决 , 反而更加恶化了 。
所以 , 我从去年开始设计 , 计划采用新的计算范式 , 发明一门新语言 。 这促使我更加关注编译技术的前沿动态 , 想把这些动态、理念和自己的实战经验都分享出来 。
与此同时 , 在我第一季专栏《编译原理之美》中 , 很多同学也反馈:想在理解编译原理的概念、理论和算法的基础上 , 更加深入地把知识与实践相结合 。 要做到这一点 , 无外乎是解决这么几个问题:

  1. 语法分析方法有自顶向下和自底向上两种 , 自己动手实现时 , 该选择哪一种?选择自己手写 , 还是工具生成?
  2. 语义分析中要做属性计算 , 但具体到自己熟悉的语言 , 到底计算了哪些属性?如何完成引用消解和类型检查?
  3. 【InfoQ|从编译原理出发,看看你和资深 coder 差在哪儿?| 极客时间】编译器中会使用 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 的编译器 。
之所以选择这些编译器 , 因为它们足够有代表性 , 都是我们平常会用到的 。 而且 , 它们各自采用了不同的编译技术 , 通过对比分析 , 你会发现其中的异同点 , 对编译技术有更全面的、深入的认知 。
基于以上 , 我将课程划分为以下三部分: