极客时间出品的专栏课《手把手带你写一门编程语言》作者宫文学,价值59元现在免费分享。
课程介绍
想要挑战自己,亲手打造一门编程语言吗?你是否觉得这是顶尖高手才能触及的领域,遥不可及?其实不然!我们的课程将带你领略编译技术的奥秘,从零开始构建一门编程语言。通过宫文学老师的指引,你将逐步理解编译器的实现机制,掌握运行时技术的精髓。在这个过程中,你将接触到汇编语言、硬件架构和各种算法,深化对计算机底层原理的理解。
课程注重实战,以开发一个TypeScript的全新实现为目标,让你在实践中学习并应用理论知识。通过搭建超简洁语言的框架,你将快速入门编译器的构建;随后,我们逐步引入更多的数据类型、面向对象编程和函数式编程特性,让你的语言更加实用;在性能优化篇,你将学习前沿的优化技术,让你的程序运行更加高效;最后,我们展望更高级的语言特性,为你打开自主实现语言的大门。
无论你是编程新手还是资深开发者,这门课程都将为你带来全新的视角和成长。通过掌握编译技术、运行时技术和语言特性,你将全面提升自己的技术硬实力,为未来的职业发展奠定坚实基础。现在就加入我们,一起开启实现自主编程语言的精彩征程吧!
课程目录
│ ├── 开篇词|让我们来写一门计算机语言吧.html
│ ├── 开篇词|让我们来写一门计算机语言吧.m4a
│ ├── 开篇词|让我们来写一门计算机语言吧.pdf
│ ├── 课前热身|开始学习之前我们要准备什么?.html
│ ├── 课前热身|开始学习之前我们要准备什么?.m4a
│ └── 课前热身|开始学习之前我们要准备什么?.pdf
├── 02-起步篇:让一门超简单的语言跑起来(2讲)
│ ├── 01|实现一门超简单的语言最快需要多久?.html
│ ├── 01|实现一门超简单的语言最快需要多久?.m4a
│ ├── 01|实现一门超简单的语言最快需要多久?.pdf
│ ├── 02|词法分析:识别Token也可以很简单吗?.html
│ ├── 02|词法分析:识别Token也可以很简单吗?.m4a
│ ├── 02|词法分析:识别Token也可以很简单吗?.pdf
│ ├── 03|支持表达式:解析表达式和解析语句有什么不同?.html
│ ├── 03|支持表达式:解析表达式和解析语句有什么不同?.m4a
│ ├── 03|支持表达式:解析表达式和解析语句有什么不同?.pdf
│ ├── 04|如何让我们的语言支持变量和类型?.html
│ ├── 04|如何让我们的语言支持变量和类型?.m4a
│ ├── 04|如何让我们的语言支持变量和类型?.pdf
│ ├── 05|函数实现:是时候让我们的语言支持函数和返回值了.html
│ ├── 05|函数实现:是时候让我们的语言支持函数和返回值了.m4a
│ ├── 05|函数实现:是时候让我们的语言支持函数和返回值了.pdf
│ ├── 06|怎么支持条件语句和循环语句?.html
│ ├── 06|怎么支持条件语句和循环语句?.m4a
│ ├── 06|怎么支持条件语句和循环语句?.pdf
│ ├── 07|怎么设计属于我们自己的虚拟机和字节码?.html
│ ├── 07|怎么设计属于我们自己的虚拟机和字节码?.m4a
│ ├── 07|怎么设计属于我们自己的虚拟机和字节码?.pdf
│ ├── 08|基于TypeScript的虚拟机(一):实现一个简单的栈机.html
│ ├── 08|基于TypeScript的虚拟机(一):实现一个简单的栈机.m4a
│ ├── 08|基于TypeScript的虚拟机(一):实现一个简单的栈机.pdf
│ ├── 09|基于TypeScript的虚拟机(二):丰富特性,支持跳转语句.html
│ ├── 09|基于TypeScript的虚拟机(二):丰富特性,支持跳转语句.m4a
│ ├── 09|基于TypeScript的虚拟机(二):丰富特性,支持跳转语句.pdf
│ ├── 10丨基于C语言的虚拟机(一):实现一个简单的栈机.html
│ ├── 10丨基于C语言的虚拟机(一):实现一个简单的栈机.m4a
│ ├── 10丨基于C语言的虚拟机(一):实现一个简单的栈机.pdf
│ ├── 11丨基于C语言的虚拟机(二):性能增长10倍的秘密.html
│ ├── 11丨基于C语言的虚拟机(二):性能增长10倍的秘密.m4a
│ ├── 11丨基于C语言的虚拟机(二):性能增长10倍的秘密.pdf
│ ├── 12丨物理机上程序运行的硬件环境是怎么样的?.html
│ ├── 12丨物理机上程序运行的硬件环境是怎么样的?.m4a
│ ├── 12丨物理机上程序运行的硬件环境是怎么样的?.pdf
│ ├── 13丨物理机上程序运行的软件环境是怎么样的?.html
│ ├── 13丨物理机上程序运行的软件环境是怎么样的?.m4a
│ ├── 13丨物理机上程序运行的软件环境是怎么样的?.pdf
│ ├── 14丨汇编代码学习(一):熟悉CPU架构和指令集.html
│ ├── 14丨汇编代码学习(一):熟悉CPU架构和指令集.m4a
│ ├── 14丨汇编代码学习(一):熟悉CPU架构和指令集.pdf
│ ├── 15丨汇编语言学习(二):熟悉X86汇编代码.html
│ ├── 15丨汇编语言学习(二):熟悉X86汇编代码.m4a
│ ├── 15丨汇编语言学习(二):熟悉X86汇编代码.pdf
│ ├── 16丨生成本地代码第1关:先把基础搭好.html
│ ├── 16丨生成本地代码第1关:先把基础搭好.m4a
│ ├── 16丨生成本地代码第1关:先把基础搭好.pdf
│ ├── 17丨生成本地代码第2关:变量存储、函数调用和栈帧维护.html
│ ├── 17丨生成本地代码第2关:变量存储、函数调用和栈帧维护.m4a
│ ├── 17丨生成本地代码第2关:变量存储、函数调用和栈帧维护.pdf
│ ├── 18丨生成本地代码第3关:实现完整的功能.html
│ ├── 18丨生成本地代码第3关:实现完整的功能.m4a
│ ├── 18丨生成本地代码第3关:实现完整的功能.pdf
│ ├── 19丨怎么实现一个更好的寄存器算法:原理篇.html
│ ├── 19丨怎么实现一个更好的寄存器算法:原理篇.m4a
│ ├── 19丨怎么实现一个更好的寄存器算法:原理篇.pdf
│ ├── 20|怎么实现一个更好的寄存器分配算法:实现篇.html
│ ├── 20|怎么实现一个更好的寄存器分配算法:实现篇.m4a
│ ├── 20|怎么实现一个更好的寄存器分配算法:实现篇.pdf
│ ├── 21|加深对栈的理解:实现尾递归和尾调用优化.html
│ ├── 21|加深对栈的理解:实现尾递归和尾调用优化.m4a
│ └── 21|加深对栈的理解:实现尾递归和尾调用优化.pdf
├── 03-进阶篇:让我们的语言更实用 (2讲)
│ ├── 22丨增强编译器前端功能第1步:再识数据流分析技术.html
│ ├── 22丨增强编译器前端功能第1步:再识数据流分析技术.m4a
│ ├── 22丨增强编译器前端功能第1步:再识数据流分析技术.pdf
│ ├── 23丨增强编译器前端功能第2步:增强类型体系.html
│ ├── 23丨增强编译器前端功能第2步:增强类型体系.m4a
│ ├── 23丨增强编译器前端功能第2步:增强类型体系.pdf
│ ├── 24丨增强编译器前端功能第3步:全面的集合运算.html
│ ├── 24丨增强编译器前端功能第3步:全面的集合运算.m4a
│ ├── 24丨增强编译器前端功能第3步:全面的集合运算.pdf
│ ├── 25丨增强编译器前端功能第4步:综合运用多种语义分析技术.html
│ ├── 25丨增强编译器前端功能第4步:综合运用多种语义分析技术.m4a
│ ├── 25丨增强编译器前端功能第4步:综合运用多种语义分析技术.pdf
│ ├── 26丨增强更丰富的类型第1步:如何支持浮点数?.html
│ ├── 26丨增强更丰富的类型第1步:如何支持浮点数?.m4a
│ ├── 26丨增强更丰富的类型第1步:如何支持浮点数?.pdf
│ ├── 27丨增加更丰富的类型第2步:如何支持字符串?.html
│ ├── 27丨增加更丰富的类型第2步:如何支持字符串?.m4a
│ ├── 27丨增加更丰富的类型第2步:如何支持字符串?.pdf
│ ├── 28丨增加更丰富的类型第3步:支持数组.html
│ ├── 28丨增加更丰富的类型第3步:支持数组.m4a
│ ├── 28丨增加更丰富的类型第3步:支持数组.pdf
│ ├── 29|面向对象编程第1步:先把基础搭好.html
│ ├── 29|面向对象编程第1步:先把基础搭好.m4a
│ ├── 29|面向对象编程第1步:先把基础搭好.pdf
│ ├── 30|面向对象编程第2步:剖析一些技术细节.html
│ ├── 30|面向对象编程第2步:剖析一些技术细节.m4a
│ ├── 30|面向对象编程第2步:剖析一些技术细节.pdf
│ ├── 31|面向对象编程第2步:支持继承和多态.html
│ ├── 31|面向对象编程第2步:支持继承和多态.m4a
│ ├── 31|面向对象编程第2步:支持继承和多态.pdf
│ ├── 32丨函数式编程第1关:实现高阶函数.html
│ ├── 32丨函数式编程第1关:实现高阶函数.m4a
│ ├── 32丨函数式编程第1关:实现高阶函数.pdf
│ ├── 33丨函数式编程第2关:实现闭包特性.html
│ ├── 33丨函数式编程第2关:实现闭包特性.m4a
│ ├── 33丨函数式编程第2关:实现闭包特性.pdf
│ ├── 34丨内存管理第1关:Arena技术和元数据.html
│ ├── 34丨内存管理第1关:Arena技术和元数据.m4a
│ ├── 34丨内存管理第1关:Arena技术和元数据.pdf
│ ├── 35丨内存管理第2关:实现垃圾回收.html
│ ├── 35丨内存管理第2关:实现垃圾回收.m4a
│ └── 35丨内存管理第2关:实现垃圾回收.pdf
├── 04-期中测试 (1讲)
│ ├── 期中测试丨快来检验你在起步篇的学习成果吧.html
│ ├── 期中测试丨快来检验你在起步篇的学习成果吧.m4a
│ └── 期中测试丨快来检验你在起步篇的学习成果吧.pdf
├── 05-用户分享 (1讲)
│ ├── “它山之石”丨Sugar:这门课你可以试试这么学.html
│ ├── “它山之石”丨Sugar:这门课你可以试试这么学.m4a
│ └── “它山之石”丨Sugar:这门课你可以试试这么学.pdf
├── 06-不定时加餐 (1讲)
│ ├── “屠龙之秘”丨实现计算机语言这样的技术能用在哪里?(一).m4a
│ └── “屠龙之秘”丨实现计算机语言这样的技术能用在哪里?(一).pdf
├── 07-优化篇:让程序的性能更高(1讲)
│ ├── 36丨节点之海:怎么生成基于图的IR?.html
│ ├── 36丨节点之海:怎么生成基于图的IR?.m4a
│ ├── 36丨节点之海:怎么生成基于图的IR?.pdf
│ ├── 37丨从AST到IR:体会数据流和控制流思维.html
│ ├── 37丨从AST到IR:体会数据流和控制流思维.m4a
│ ├── 37丨从AST到IR:体会数据流和控制流思维.pdf
│ ├── 38丨中端优化第1关:实现多种本地优化.html
│ ├── 38丨中端优化第1关:实现多种本地优化.m4a
│ ├── 38丨中端优化第1关:实现多种本地优化.pdf
│ ├── 39丨中端优化第2关:全局优化要怎么搞?.html
│ ├── 39丨中端优化第2关:全局优化要怎么搞?.m4a
│ ├── 39丨中端优化第2关:全局优化要怎么搞?.pdf
│ ├── 40丨中端优化第3关:一起来挑战过程间优化.html
│ ├── 40丨中端优化第3关:一起来挑战过程间优化.m4a
│ ├── 40丨中端优化第3关:一起来挑战过程间优化.pdf
│ ├── 41丨后端优化:生成LIR和指令选择.html
│ ├── 41丨后端优化:生成LIR和指令选择.m4a
│ └── 41丨后端优化:生成LIR和指令选择.pdf
├── 08-展望篇:实现自主语言的征途(1讲)
│ ├── 42丨到这里,我们的收获和未尽的工作有哪些?.html
│ ├── 42丨到这里,我们的收获和未尽的工作有哪些?.m4a
│ └── 42丨到这里,我们的收获和未尽的工作有哪些?.pdf
└── 09-结束语
├── 结束语丨等待你大展身手的那些领域.html
├── 结束语丨等待你大展身手的那些领域.m4a
└── 结束语丨等待你大展身手的那些领域.pdf
10 directories, 143 files
以上就是极客时间宫文学老师的专栏课《手把手带你写一门编程语言》的详细介绍了。
本文由提供IT教程网提供,仅供学习交流使用,未经许可,禁止转载!
原课程地址:https://time.geekbang.org/column/intro/100085201,有能力的朋友请支持正版,谢谢!
评论(0)