编译原理之美--极客时间课程推荐/优惠
版权声明
本站非极客时间官网,与官方无任何关系。我们不提供课程下载或详细内容,仅作为课程分享和推荐平台。我们鼓励大家支持正版,尊重创作者的劳动成果,这样不仅能帮助创作者持续产出优质内容,也能让自己获得更好的学习体验。请通过官方渠道购买和学习课程,感谢您的理解与支持。
课程详情
你将获得:
- 系统掌握编译器的核心技能;
- 手动实现解释型和编译型2门语言;
- 4大案例解读,深入剖析编译原理的实践应用;
- 编译技术的未来趋势解读。
课程介绍
编译原理是一门经过长期实践的,有着悠久历史的计算机经典课程。作为一名工程师,在实际工作中你经常会碰到需要编译技术的场景,比如:
- 编写界面模板引擎;
- 为项目编写各种各样的DSL;
- 深度理解甚至编写Spring、Hibernate、阿里巴巴Druid这样的工具。
那如何才能真正掌握编译原理呢?是搜集市面上的教材,埋头苦读吗?要知道,教材往往过于抽象和理论化,如果你没有系统化的学习体系,做不到学以致用,掌握再多的理论知识,也不会形成章法,事倍功半。因此,学习编译原理最关键在于掌握其关键知识点以及核心思维方法,即学即用。
在宫文学看来,优秀的工程师要保持长期的竞争力,需要提升自身的专业素养。而了解与学习基础技术理论并加以实践是一种行之有效的方式。
在这个课程里,他从前端与后端两个层面来讲解编译原理的核心技术点,用具体的案例带你理解抽象的原理,帮助你建立信心,克服畏难情绪,让你在这个过程中一步步趟过雷区,在工作中真正用到编译技术。
你能通过这门课,实现写出一个编译器的愿望,还能通过SQL解析器、报表工具、字节码生成等小练习锻炼自己的动手能力。当然了,你还可以解锁更多应用编译原理的业务场景,将知识活学活用。相信只要沉下心去学习研究,掌握编译技术指日可待!
实现一门脚本语言:通过具体实例,带你了解词法分析、语法分析、语义分析的原理,实现一门脚本语言,并用工具提升效率。
实现一门编译型语言:带你了解如何生成目标代码和对代码进行优化,并引入LLVM工具,最后生成可执行的文件能支持即时编译,并经过了多层优化。
面向未来的编程语言:人工智能与编译技术结合是否会出现人工智能编程?这部分是对编译技术发展趋势的一些分析,这些分析会帮助你更好地把握未来技术发展的脉搏。
课程目录
开篇词
- 开篇词 | 为什么你要学习编译原理?
实现一门脚本语言 · 原理篇
- 01 | 理解代码:编译器的前端技术
- 02 | 正则文法和有限自动机:纯手工打造词法分析器
- 03 | 语法分析(一):纯手工打造公式计算器
- 04 | 语法分析(二):解决二元表达式中的难点
- 05 | 语法分析(三):实现一门简单的脚本语言
- 06 | 编译器前端工具(一):用Antlr生成词法、语法分析器
- 07 | 编译器前端工具(二):用Antlr重构脚本语言
- 08 | 作用域和生存期:实现块作用域和函数
- 09 | 面向对象:实现数据和方法的封装
- 10 | 闭包: 理解了原理,它就不反直觉了
- 11 | 语义分析(上):如何建立一个完善的类型系统?
- 12 | 语义分析(下):如何做上下文相关情况的处理?
- 13 | 继承和多态:面向对象运行期的动态特性
实现一门脚本语言 · 应用篇
- 14 | 前端技术应用(一):如何透明地支持数据库分库分表?
- 15 | 前端技术应用(二):如何设计一个报表工具?
实现一门脚本语言 · 算法篇
- 16 | NFA和DFA:如何自己实现一个正则表达式工具?
- 17 | First和Follow集合:用LL算法推演一个实例
- 18 | 移进和规约:用LR算法推演一个实例
实现一门脚本语言 · 热点答疑与用户故事
- 19 | 案例总结与热点问题答疑:对于左递归的语法,为什么我的推导不是左递归的?
- 用户故事 | 因为热爱,所以坚持
编译原理 · 期中考试周
- 期中考试 | 来赴一场100分的约定吧!
实现一门编译型语言 · 原理篇
- 20 | 高效运行:编译器的后端技术
- 21 | 运行时机制:突破现象看本质,透过语法看运行时
- 22 | 生成汇编代码(一):汇编语言其实不难学
- 加餐 | 汇编代码编程与栈帧管理
- 23 | 生成汇编代码(二):把脚本编译成可执行文件
- 24 | 中间代码:兼容不同的语言和硬件
- 25 | 后端技术的重用:LLVM不仅仅让你高效
- 26 | 生成IR:实现静态编译的语言
- 27 | 代码优化:为什么你的代码比他的更高效?
- 28 | 数据流分析:你写的程序,它更懂
- 29 | 目标代码的生成和优化(一):如何适应各种硬件架构?
- 30 | 目标代码的生成和优化(二):如何适应各种硬件架构?
实现一门编译型语言 · 应用篇
- 31 | 内存计算:对海量数据做计算,到底可以有多快?
- 32 | 字节码生成:为什么Spring技术很强大?
实现一门编译型语言 · 扩展篇
- 33 | 垃圾收集:能否不停下整个世界?
- 34 | 运行时优化:即时编译的原理和作用
- 35 | 案例总结与热点问题答疑:后端部分真的比前端部分难吗?
面向未来的编程语言
- 36 | 当前技术的发展趋势以及其对编译技术的影响
- 37 | 云编程:云计算会如何改变编程模式?
- 38 | 元编程:一边写程序,一边写语言
结束语
- 结束语 | 用程序语言,推动这个世界的演化
- 第二季回归 | 这次,我们一起实战解析真实世界的编译器
结课测试
- 结课测试 | 编译原理的这些知识,你都掌握了吗?