编译原理核心基础知识课-带你吃透编译技术核心概念与算法

 

学好编译器前端技术,你能为软件增加各种自定义功能、能够实现自己的DSL,甚至实现完整的前端解析器(比如SQL解析器); 学好编译器后端技术,你能写出更容易优化的代码,洞悉让代码性能更高的秘密,以及采用后端工具快速实现一门完整的语言。

《编译原理实战课》是从实战的角度切入,是学习编译原理的“行万里路”,老师会用你最擅长的写代码、读代码的方式,来带你分析真实的编译器到底是怎么写出来的。

通过研究多种编译器,你可以多次迭代对编译器的认知过程。并通过分析对比,你能发现这些编译器之间的异同点,激发出更多的思考,从而能得到更全面的、更深入的认知。在解析编译器的过程中,你也能更深入地把编译原理知识与实践相结合。

资源目录

课前必读 (2讲)

开篇词 | 在真实世界的编译器中游历

学习指南 | 如何学习这门编译原理实战课?

预备知识篇 (9讲)

01 | 编译的全过程都悄悄做了哪些事情?

02 | 词法分析:用两种方式构造有限自动机

03 | 语法分析:两个基本功和两种算法思路

04 | 语义分析:让程序符合语义规则

05 | 运行时机制:程序如何运行,你有发言权

06 | 中间代码:不是只有一副面孔

07 | 代码优化:跟编译器做朋友,让你的代码飞起来

08 | 代码生成:如何实现机器相关的优化?

知识地图 | 一起来复习编译技术核心概念与算法

真实编译器解析篇 (19讲)

09 | Java编译器(一):手写的编译器有什么优势?

10 | Java编译器(二):语法分析之后,还要做些什么?

11 | Java编译器(三):属性分析和数据流分析

12 | Java编译器(四):去除语法糖和生成字节码

13 | Java JIT编译器(一):动手修改Graal编译器

14 | Java JIT编译器(二):Sea of Nodes为何如此强大?

15 | Java JIT编译器(三):探究内联和逃逸分析的算法原理

16 | Java JIT编译器(四):Graal的后端是如何工作的?

17 | Python编译器(一):如何用工具生成编译器?

18 | Python编译器(二):从AST到字节码

19 | Python编译器(三):运行时机制

20 | JavaScript编译器(一):V8的解析和编译过程

21 | JavaScript编译器(二):V8的解释器和优化编译器

22 | Julia编译器(一):如何让动态语言性能很高?

23 | Julia编译器(二):如何利用LLVM的优化和后端功能?

24 | Go语言编译器:把它当作教科书吧

25 | MySQL编译器(一):解析一条SQL语句的执行过程

26 | MySQL编译器(二):编译技术如何帮你提升数据库性能?

热点问题答疑 | 如何吃透7种真实的编译器?

期中复习周 (3讲)

划重点 | 7种编译器的核心概念与算法

期中考试 | 这些编译原理知识,你都掌握了吗?

用户故事 | 易昊:程序员不止有Bug和加班,还有诗和远方

现代语言设计篇 (15讲)

27 | 课前导读:学习现代语言设计的正确姿势

28 | 前端总结:语言设计也有人机工程学

29 | 中端总结:不遗余力地进行代码优化

30 | 后端总结:充分发挥硬件的能力

31 | 运行时(一):从0到语言级的虚拟化

32 | 运行时(二):垃圾收集与语言的特性有关吗?

33 | 并发中的编译技术(一):如何从语言层面支持线程?

34 | 并发中的编译技术(二):如何从语言层面支持协程?

35 | 并发中的编译技术(三):Erlang语言厉害在哪里?

36 | 高级特性(一):揭秘元编程的实现机制

37 | 高级特性(二):揭秘泛型编程的实现机制

38 | 综合实现(一):如何实现面向对象编程?

39 | 综合实现(二):如何实现函数式编程?

40 | 成果检验:方舟编译器的优势在哪里?

期末答疑与总结 | 再次审视学习编译原理的作用

结束语 (2讲)

结束语 | 实战是唯一标准!

期末考试 | “编译原理实战课”100分试卷等你来挑战!

不定期加餐 (5讲)

不定期加餐1 | 远程办公,需要你我具备什么样的素质?

不定期加餐2 | 学习技术的过程,其实是训练心理素质的过程

不定期加餐3 | 这几年,打动我的两本好书

不定期加餐4 | 从身边的牛人身上,我学到的一些优秀品质

不定期加餐5 | 借助实例,探究C++编译器的内部机制

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注