课程目录

不定期加餐 (5讲)

  1. 不定期加餐1 _ 远程办公,需要你我具备什么样的素质?
  2. 不定期加餐2 _ 学习技术的过程,其实是训练心理素质的过程
  3. 不定期加餐3 _ 这几年,打动我的两本好书
  4. 不定期加餐4 _ 从身边的牛人身上,我学到的一些优秀品质
  5. 不定期加餐5 _ 借助实例,探究C++编译器的内部机制

期中复习周 (3讲)

  1. 划重点 _ 7种编译器的核心概念与算法
  2. 期中考试 _ 这些编译原理知识,你都掌握了吗?
  3. 用户故事 _ 易昊:程序员不止有Bug和加班,还有诗和远方

课前必读 (2讲)

  1. 开篇词 _ 在真实世界的编译器中游历
  2. 学习指南 _ 如何学习这门编译原理实战课?

预备知识篇 (9讲)

  1. 01 _ 编译的全过程都悄悄做了哪些事情?
  2. 02 _ 词法分析:用两种方式构造有限自动机
  3. 03 _ 语法分析:两个基本功和两种算法思路
  4. 04 _ 语义分析:让程序符合语义规则
  5. 05 _ 运行时机制:程序如何运行,你有发言权
  6. 06 _ 中间代码:不是只有一副面孔
  7. 07 _ 代码优化:跟编译器做朋友,让你的代码飞起来
  8. 08 _ 代码生成:如何实现机器相关的优化?
  9. 知识地图 _ 一起来复习编译技术核心概念与算法

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

  1. 09 _ Java编译器(一):手写的编译器有什么优势?
  2. 10 _ Java编译器(二):语法分析之后,还要做些什么?
  3. 11 _ Java编译器(三):属性分析和数据流分析
  4. 12 _ Java编译器(四):去除语法糖和生成字节码
  5. 13 _ Java JIT编译器(一):动手修改Graal编译器
  6. 14 _ Java JIT编译器(二):Sea of Nodes为何如此强大?
  7. 15 _ Java JIT编译器(三):探究内联和逃逸分析的算法原理
  8. 16 _ Java JIT编译器(四):Graal的后端是如何工作的?
  9. 17 _ Python编译器(一):如何用工具生成编译器?
  10. 18 _ Python编译器(二):从AST到字节码
  11. 19 _ Python编译器(三):运行时机制
  12. 20 _ JavaScript编译器(一):V8的解析和编译过程
  13. 21 _ JavaScript编译器(二):V8的解释器和优化编译器
  14. 22 _ Julia编译器(一):如何让动态语言性能很高?
  15. 23 _ Julia编译器(二):如何利用LLVM的优化和后端功能?
  16. 24 _ Go语言编译器:把它当作教科书吧
  17. 25 _ MySQL编译器(一):解析一条SQL语句的执行过程
  18. 26 _ MySQL编译器(二):编译技术如何帮你提升数据库性能?
  19. 热点问题答疑 _ 如何吃透7种真实的编译器?

现代语言设计篇 (15讲)

  1. 27 _ 课前导读:学习现代语言设计的正确姿势
  2. 28 _ 前端总结:语言设计也有人机工程学
  3. 29 _ 中端总结:不遗余力地进行代码优化
  4. 30 _ 后端总结:充分发挥硬件的能力
  5. 31 _ 运行时(一):从0到语言级的虚拟化
  6. 32 _ 运行时(二):垃圾收集与语言的特性有关吗?
  7. 33 _ 并发中的编译技术(一):如何从语言层面支持线程?
  8. 34 _ 并发中的编译技术(二):如何从语言层面支持协程?
  9. 35 _ 并发中的编译技术(三):Erlang语言厉害在哪里?
  10. 36 _ 高级特性(一):揭秘元编程的实现机制
  11. 37 _ 高级特性(二):揭秘泛型编程的实现机制
  12. 38 _ 综合实现(一):如何实现面向对象编程?
  13. 39 _ 综合实现(二):如何实现函数式编程?
  14. 40 _ 成果检验:方舟编译器的优势在哪里?
  15. 期末答疑与总结 _ 再次审视学习编译原理的作用

结束语 (2讲)

  1. 期末考试 _ “编译原理实战课”100分试卷等你来挑战!
  2. 结束语 _ 实战是唯一标准!