把手带你写一门编程语言,从0到1,实现自己的编程语言

你将获得什么?

  • 一套实用的现代计算机语言架构
  • 自顶向下搞懂计算机底层技术
  • 系统级软件开发的高维思考
  • 理解计算机语言的核心逻辑

课程介绍

每个程序员都或多或少掌握一门甚至多门编程语言,总是在用别人写的,你有没有在平平无奇的某一天里,突发奇想自己来写一门呢?

你可能没想过。毕竟能写一门计算机语言的都是顶级大牛,他们的脑袋和技术是我等普通程序员也能复现的吗?这也太难了!而且,也没啥用,投入产出比太低了。

你可能也想过。但面对编译技术、运行时技术、还有各种计算机语言特性这几座大山,真是“拔剑四顾心茫然”,太难爬了!更别提那些永远也赶不上新兴语言迭代速度的陈旧资料了。

停一下!其实这些问题根本就不是难以跨越的。当你砍掉凌乱的枝干,抓住主线,从原理出发专注语言的实现过程,会发现实现一门语言远比你想象要简单、有用。

这次,我们请来了跟我们极客时间合作过两季的宫文学老师,他长期专注于编译技术领域,熟悉各种语言编译器的实现机制,他会给你指明一条普通程序员也能实现一门编程语言的可行路径。

更重要的是,在这个过程中,宫文学老师会手把手地带着你洞穿编译技术、运行时技术、汇编语言、硬件架构和各种算法,帮助你自顶向下理解计算机技术的底层原理,全面提升自己的技术硬实力。

把手带你写一门编程语言,从0到1,实现自己的编程语言

我们这门课注重实践,宫文学老师会针对我们要开发的计算机语言,采取最合适的实现技术,并告诉你选择这个技术路线的原因和相关背景知识,兼顾原理与实战。

此外,我们这门课高度仿真一个真实的计算机语言开发项目,一门语言其实可以有多个具体实现,以适用不同的场景,宫老师要带你做的是TypeScript的一个全新的实现。它具有编译成原生应用的潜力,好上手,也顺应了鸿蒙的趋势,将来你也可以拿着它做更多的尝试。

课程模块设计

课程主体划分为以下4大模块。

  • 起步篇:让一门超简洁的语言跑起来。在这一模块,我们让你对编译器前端到后端、从编译到运行有一个全局式的理解,把这门语言最基本的框架搭起来。
  • 进阶篇:让我们的语言更实用。这一模块,我们会逐步支持更多的数据类型,你还会学到面向对象编程特性和函数式编程特性,丰富知识面以解决更多基础技术问题。
  • 优化篇:让程序的性能更高。这一模块,我们主要介绍一下优化技术,包括Java、JavaScript等语言所采用的前沿优化技术,让你洞悉它们最深处的奥秘,有能力去承担开发平台项目等攻坚性的任务。
  • 展望篇:实现自主语言的征途。这一模块,我们会展望一些更高级的语言特性,比如并发、自举等,让你理解更高阶的思路和实现方法。

课程目录

开篇词|让我们来设计一门计算机语言吧
课前热身|开始学习之前我们要准备什么?
起步篇:让一门超简洁的语言跑起来
实现编译器前端和AST解释器
01实现一门超简单的语言最快需要多久?
02词法分析:识别Token也可以很简单吗?
03支持表达式:解析表达式和解析语句有什么不同?
04如何让我们的语言支持变量和类型?
05函数实现:是时候让我们的语言支持函数和返回值了
06怎么支持条件语句和循环语句?
实现字节码虚拟机
07怎么设计属于我们自己的虚拟机和字节码?
08基于TypeScript的虚拟机(一):实现一个简单的栈机
09基于TypeScript的虚拟机(二):丰富特性,支持跳转语句
10基于C语言的虚拟机(一):实现一个简单的栈机
11基于C语言的虚拟机(二):性能增长10倍的秘密
编译成本地代码
12物理机上的运行机制也能设计吗?
13学好这门课,你要掌握的汇编语言要点
14生成本地代码第1关:先把基础搭好
15生成本地代码第2关:跳转指令和栈桢细节怎么办?
16加深对栈的理解:实现尾递归和尾调用优化
17怎么实现寄存器分配算法?
进阶篇:让我们的语言更实用
18增强前端功能:实现一个更健壮、更友好的编译器
19增加更丰富的类型第1步:如何支持浮点数?
20增加更丰富的类型第2步:如何支持数组?

讲师介绍

宫文学,《编译原理之美》和《编译原理实战》课程作者,北京原点代码CEO。

宫文学是国内最早做BPM(流程管理平台)和BI平台(大数据平台)的创业者之一,还研发过电子表单和低代码开发平台。

他专注于编译技术领域,熟悉各种语言编译器的实现机制,在编译技术之路上具有丰富的实践经验。近期也在参与OpenHarmony(开源版鸿蒙操作系统)的推广普及,以及担任工业操作系统项目的专家。

(0)
上一篇 2021年9月14日 下午10:17
下一篇 2021年9月14日 下午10:29

相关推荐

发表回复

登录后才能评论