我是宫文学,北京物演科技 CEO。最近几年,我参与了一些微服务相关的项目,发现前几年大家普遍关注的技术问题,比如有状态的服务(Stateful Service),并没有随着新技术的出现,而得到很好地解决,反而更加恶化了。
所以,我从去年开始设计,计划采用新的计算范式,发明一门新语言。这促使我更加关注编译技术的前沿动态,想把这些动态、理念和自己的实战经验都分享出来。
与此同时,在我第一季专栏《编译原理之美》中,很多同学也反馈:想在理解编译原理的概念、理论和算法的基础上,更加深入地把知识与实践相结合。要做到这一点,无外乎是解决这么几个问题:
语法分析方法有自顶向下和自底向上两种,自己动手实现时,该选择哪一种?选择自己手写,还是工具生成?
语义分析中要做属性计算,但具体到自己熟悉的语言,到底计算了哪些属性?如何完成引用消解和类型检查?
编译器中会使用 IR ,实际使用中的 IR 到底是什么样子?
编译器会优化我们写出的代码,但具体到各个语言,其背后的逻辑和优先级是怎样的?如何写出便于编译器优化的代码呢?
类似的问题还有很多,总结起来就是:我们用的编译器,到底是怎么写出来的。
现代语言的编译器,往往整合了最前沿的技术。掌握真实编译器的实现机制,有助于吃透语言的核心特性,更高效地运用它,进而提升我们的技术水平。而且,阅读语言编译器的源代码,跟踪它的执行过程,也会让你获得对编译器的第一手理解,是高效学习编译原理的重要途径。
所以,我和极客时间联手打造了新一季专栏《编译原理实战课》。在专栏中,我会带你巩固编译原理的核心基础知识,深入解析 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 人。