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 的编译器 。
之所以选择这些编译器 , 因为它们足够有代表性 , 都是我们平常会用到的 。 而且 , 它们各自采用了不同的编译技术 , 通过对比分析 , 你会发现其中的异同点 , 对编译技术有更全面的、深入的认知 。
基于以上 , 我将课程划分为以下三部分:
  • 预备知识篇:系统梳理编译原理的核心知识体系 , 加深你对关键概念的理解 。 学完预备知识后 , 你再去看各种编译器的源代码和相关文档 , 可以更好地将实践与原理结合 , 并互相印证 。
  • 真实编译器解析篇:研究 7 种主流语言的编译器源码 , 跟踪它们的运行过程 , 分析编译过程的每一步是如何实现的 , 并对一些针对性的编译技术点加以分析和点评 。 这样 , 我们在研究了 Java、Java JIT、Python、JavaScript、Julia、Go、MySQL 这 7 种编译器后 , 相当于把编译原理印证了 7 遍 。分页标题
  • 现代语言设计篇:分析总结前面讲过的编译器 , 进一步提升你对编译技术的认知高度 。 学完这一模块 , 对于如何设计编译器的前端、中端、后端、运行时 , 你都会有比较全面的了解 , 知道如何在不同的技术路线之间做取舍 。
课程中的大部分内容 , 都是我自己在阅读源码 , 跟踪源码执行过程的基础上梳理出来的 。 在课程设计上 , 我会以研究真实编译器的运行原理为主要手段 , 着力于扩大你的知识版图 , 增强实战能力 , 从而达到「行万里路」的目的 。

InfoQ|从编译原理出发,看看你和资深 coder 差在哪儿?| 极客时间
本文插图
订阅福利早鸟优惠 + 口令「bianyi666」, 到手仅¥89 ,
立省¥40 , 原价 ¥129 , 仅限「前 200 人」有效 。
订阅后生成海报发给好友 ,
每成功邀请1位好友 , 可得¥24返现 。
??扫描二维码 , 免费试读