极客时间出品的专栏课《编译原理之美》作者宫文学,新客首单到手价59元,现免费分享

编译原理之美

课程介绍

编译原理,作为计算机科学的经典课程,其历史悠久且实践性强。在实际工作中,工程师们经常需要运用到编译技术,如界面模板引擎的编写、DSL(领域特定语言)的设计,以及深度理解如Spring、Hibernate等工具的内部机制。但如何真正掌握这一技能?埋头苦读市面上的教材并非最有效的方法,因为这些教材往往过于理论化,难以让人做到学以致用。学习编译原理的关键在于掌握其核心知识点和思维方式,能立即应用于实践。

在这门课程中,宫文学老师从前端与后端两个角度深入剖析编译原理的核心技术点。他通过具体案例将抽象的原理变得通俗易懂,帮助学员建立信心,克服对编译原理的恐惧感。在学习的过程中,你将逐渐趟过雷区,掌握编译技术的实际应用。不仅如此,通过完成如SQL解析器、报表工具、字节码生成等小练习,你的动手能力也将得到极大的提升。最重要的是,你将学会如何灵活运用编译原理解决实际业务场景,将知识转化为实际的生产力。

本课程的高潮部分,你将亲自实现一门脚本语言,了解词法分析、语法分析、语义分析的原理,并通过工具提升效率。此外,你还将学习如何生成目标代码并进行优化,结合LLVM工具生成可执行文件,实现即时编译和多层优化。在课程的最后部分,老师还将展望未来,探讨人工智能与编译技术结合的可能性,为你揭示编译技术的发展趋势,帮助你把握未来技术发展的脉搏。

课程目录

│   ├── 00开篇词丨为什么你要学习编译原理?.mp3
│   └── 00开篇词丨为什么你要学习编译原理?.pdf
├── 01丨实现一门脚本语言 · 原理篇 (13讲)
│   ├── 01丨理解代码:编译器的前端技术.html
│   ├── 01丨理解代码:编译器的前端技术.mp3
│   ├── 01丨理解代码:编译器的前端技术.pdf
│   ├── 02丨正则文法和有限自动机:纯手工打造词法分析器.html
│   ├── 02丨正则文法和有限自动机:纯手工打造词法分析器.mp3
│   ├── 02丨正则文法和有限自动机:纯手工打造词法分析器.pdf
│   ├── 03丨语法分析(一):纯手工打造公式计算器.html
│   ├── 03丨语法分析(一):纯手工打造公式计算器.mp3
│   ├── 03丨语法分析(一):纯手工打造公式计算器.pdf
│   ├── 04丨语法分析(二):解决二元表达式中的难点.html
│   ├── 04丨语法分析(二):解决二元表达式中的难点.mp3
│   ├── 04丨语法分析(二):解决二元表达式中的难点.pdf
│   ├── 05丨语法分析(三):实现一门简单的脚本语言.html
│   ├── 05丨语法分析(三):实现一门简单的脚本语言.mp3
│   ├── 05丨语法分析(三):实现一门简单的脚本语言.pdf
│   ├── 06丨编译器前端工具(一):用Antlr生成词法、语法分析器.html
│   ├── 06丨编译器前端工具(一):用Antlr生成词法、语法分析器.mp3
│   ├── 06丨编译器前端工具(一):用Antlr生成词法、语法分析器.pdf
│   ├── 07丨编译器前端工具(二):用Antlr重构脚本语言.html
│   ├── 07丨编译器前端工具(二):用Antlr重构脚本语言.mp3
│   ├── 07丨编译器前端工具(二):用Antlr重构脚本语言.pdf
│   ├── 08丨作用域和生存期:实现块作用域和函数.html
│   ├── 08丨作用域和生存期:实现块作用域和函数.mp3
│   ├── 08丨作用域和生存期:实现块作用域和函数.pdf
│   ├── 09丨面向对象:实现数据和方法的封装.html
│   ├── 09丨面向对象:实现数据和方法的封装.mp3
│   ├── 09丨面向对象:实现数据和方法的封装.pdf
│   ├── 10丨闭包:理解了原理,它就不反直觉了.html
│   ├── 10丨闭包:理解了原理,它就不反直觉了.m4a
│   ├── 10丨闭包:理解了原理,它就不反直觉了.pdf
│   ├── 11丨语义分析(上):如何建立一个完善的类型系统?.html
│   ├── 11丨语义分析(上):如何建立一个完善的类型系统?.m4a
│   ├── 11丨语义分析(上):如何建立一个完善的类型系统?.pdf
│   ├── 12丨语义分析(下):如何做上下文相关情况的处理?.html
│   ├── 12丨语义分析(下):如何做上下文相关情况的处理?.m4a
│   ├── 12丨语义分析(下):如何做上下文相关情况的处理?.pdf
│   ├── 13丨继承和多态:面向对象运行期的动态特性.html
│   ├── 13丨继承和多态:面向对象运行期的动态特性.m4a
│   └── 13丨继承和多态:面向对象运行期的动态特性.pdf
├── 02丨实现一门脚本语言 · 应用篇 (2讲)
│   ├── 14丨前端技术应用(一):如何透明地支持数据库分库分表?.html
│   ├── 14丨前端技术应用(一):如何透明地支持数据库分库分表?.m4a
│   ├── 14丨前端技术应用(一):如何透明地支持数据库分库分表?.pdf
│   ├── 15丨前端技术应用(二):如何设计一个报表工具?.html
│   ├── 15丨前端技术应用(二):如何设计一个报表工具?.m4a
│   └── 15丨前端技术应用(二):如何设计一个报表工具?.pdf
├── 03丨实现一门脚本语言 · 算法篇 (3讲)
│   ├── 16丨NFA和DFA:如何自己实现一个正则表达式工具?.html
│   ├── 16丨NFA和DFA:如何自己实现一个正则表达式工具?.m4a
│   ├── 16丨NFA和DFA:如何自己实现一个正则表达式工具?.pdf
│   ├── 17丨First和Follow集合:用LL算法推演一个实例.html
│   ├── 17丨First和Follow集合:用LL算法推演一个实例.m4a
│   ├── 17丨First和Follow集合:用LL算法推演一个实例.pdf
│   ├── 18丨移进和规约:用LR算法推演一个实例.html
│   ├── 18丨移进和规约:用LR算法推演一个实例.m4a
│   └── 18丨移进和规约:用LR算法推演一个实例.pdf
├── 04丨实现一门脚本语言 · 热点答疑与用户故事 (2讲)
│   ├── 19丨案例总结与热点问题答疑:对于左递归的语法,为什么我的推导不是左递归的?.html
│   ├── 19丨案例总结与热点问题答疑:对于左递归的语法,为什么我的推导不是左递归的?.m4a
│   ├── 19丨案例总结与热点问题答疑:对于左递归的语法,为什么我的推导不是左递归的?.pdf
│   ├── 用户故事丨因为热爱,所以坚持.html
│   └── 用户故事丨因为热爱,所以坚持.pdf
├── 05丨编译原理 · 期中考试周 (1讲)
│   ├── 期中考试丨来赴一场100分的约定吧!.html
│   ├── 期中考试丨来赴一场100分的约定吧!.m4a
│   └── 期中考试丨来赴一场100分的约定吧!.pdf
├── 06丨实现一门编译型语言 · 原理篇 (12讲)
│   ├── 20丨高效运行:编译器的后端技术.html
│   ├── 20丨高效运行:编译器的后端技术.m4a
│   ├── 20丨高效运行:编译器的后端技术.pdf
│   ├── 21丨运行时机制:突破现象看本质,透过语法看运行时.html
│   ├── 21丨运行时机制:突破现象看本质,透过语法看运行时.m4a
│   ├── 21丨运行时机制:突破现象看本质,透过语法看运行时.pdf
│   ├── 22丨生成汇编代码(一):汇编语言其实不难学.html
│   ├── 22丨生成汇编代码(一):汇编语言其实不难学.m4a
│   ├── 22丨生成汇编代码(一):汇编语言其实不难学.pdf
│   ├── 23丨生成汇编代码(二):把脚本编译成可执行文件.html
│   ├── 23丨生成汇编代码(二):把脚本编译成可执行文件.m4a
│   ├── 23丨生成汇编代码(二):把脚本编译成可执行文件.pdf
│   ├── 24丨中间代码:兼容不同的语言和硬件.html
│   ├── 24丨中间代码:兼容不同的语言和硬件.m4a
│   ├── 24丨中间代码:兼容不同的语言和硬件.pdf
│   ├── 25丨后端技术的重用:LLVM不仅仅让你高效.html
│   ├── 25丨后端技术的重用:LLVM不仅仅让你高效.m4a
│   ├── 25丨后端技术的重用:LLVM不仅仅让你高效.pdf
│   ├── 26丨生成IR:实现静态编译的语言.html
│   ├── 26丨生成IR:实现静态编译的语言.m4a
│   ├── 26丨生成IR:实现静态编译的语言.pdf
│   ├── 27丨代码优化:为什么你的代码比他的更高效?.html
│   ├── 27丨代码优化:为什么你的代码比他的更高效?.m4a
│   ├── 27丨代码优化:为什么你的代码比他的更高效?.pdf
│   ├── 28丨数据流分析:你写的程序,它更懂.html
│   ├── 28丨数据流分析:你写的程序,它更懂.m4a
│   ├── 28丨数据流分析:你写的程序,它更懂.pdf
│   ├── 29丨目标代码的生成和优化(一):如何适应各种硬件架构?.html
│   ├── 29丨目标代码的生成和优化(一):如何适应各种硬件架构?.m4a
│   ├── 29丨目标代码的生成和优化(一):如何适应各种硬件架构?.pdf
│   ├── 30丨目标代码的生成和优化(二):如何适应各种硬件架构?.html
│   ├── 30丨目标代码的生成和优化(二):如何适应各种硬件架构?.m4a
│   ├── 30丨目标代码的生成和优化(二):如何适应各种硬件架构?.pdf
│   ├── 加餐丨汇编代码编程与栈帧管理.html
│   ├── 加餐丨汇编代码编程与栈帧管理.m4a
│   └── 加餐丨汇编代码编程与栈帧管理.pdf
├── 07丨实现一门编译型语言 · 应用篇 (2讲)
│   ├── 31丨内存计算:对海量数据做计算,到底可以有多快?.html
│   ├── 31丨内存计算:对海量数据做计算,到底可以有多快?.m4a
│   ├── 31丨内存计算:对海量数据做计算,到底可以有多快?.pdf
│   ├── 32丨字节码生成:为什么Spring技术很强大?.html
│   ├── 32丨字节码生成:为什么Spring技术很强大?.m4a
│   └── 32丨字节码生成:为什么Spring技术很强大?.pdf
├── 08丨实现一门编译型语言 · 扩展篇 (3讲)
│   ├── 33丨垃圾收集:能否不停下整个世界?.html
│   ├── 33丨垃圾收集:能否不停下整个世界?.m4a
│   ├── 33丨垃圾收集:能否不停下整个世界?.pdf
│   ├── 34丨运行时优化:即时编译的原理和作用.html
│   ├── 34丨运行时优化:即时编译的原理和作用.m4a
│   ├── 34丨运行时优化:即时编译的原理和作用.pdf
│   ├── 35丨案例总结与热点问题答疑:后端部分真的比前端部分难吗?.html
│   ├── 35丨案例总结与热点问题答疑:后端部分真的比前端部分难吗?.m4a
│   └── 35丨案例总结与热点问题答疑:后端部分真的比前端部分难吗?.pdf
├── 09丨面向未来的编程语言 (3讲)
│   ├── 36丨当前技术的发展趋势以及其对编译技术的影响.html
│   ├── 36丨当前技术的发展趋势以及其对编译技术的影响.m4a
│   ├── 36丨当前技术的发展趋势以及其对编译技术的影响.pdf
│   ├── 37丨云编程:云计算会如何改变编程模式?.html
│   ├── 37丨云编程:云计算会如何改变编程模式?.m4a
│   ├── 37丨云编程:云计算会如何改变编程模式?.pdf
│   ├── 38丨元编程:一边写程序,一边写语言.html
│   ├── 38丨元编程:一边写程序,一边写语言.m4a
│   └── 38丨元编程:一边写程序,一边写语言.pdf
└── 10丨结束语 (1讲)
├── 结束语丨用程序语言,推动这个世界的演化.html
├── 结束语丨用程序语言,推动这个世界的演化.m4a
└── 结束语丨用程序语言,推动这个世界的演化.pdf

12 directories, 128 files

以上就是极客时间宫文学老师的专栏课《编译原理之美》的详细介绍了。
本文由提供IT教程网提供,仅供学习交流使用,未经许可,禁止转载!
原课程地址:https://time.geekbang.org/column/intro/100034101,有能力的朋友请支持正版,谢谢!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。