课程介绍

课程来自极客时间《编译原理实战课》

编译原理实战课,我们到底要学些什么?

在这门课程里,宫教员精选出了 Java、Java JIT、Python、JavaScript、Julia、Go、MySQL 这 7 种真实编程言语的编译器,带你阅读它们的源代码,跟踪它们的执行过程,弄懂它们的运转机制。在这个过程中,你会获得对编译器的第一手理解,并能够与自己理解的编译原理学问相互印证。

另外,宫教员还会带你分析和总结这些现代言语的编译器的结构、所采用的算法和设计思绪,帮你更好天文解和把握一门现代言语的特性,让你对新一代言语的设计思索有拨云见日的通透感。

有些言语我都没接触过,解析这些编译器,我能学得会吗?我学了又有什么用呢?

  1. 能学得会吗?

当然可以了。在课程中,宫教员会梳理出这些不同言语编译器的源代码的重点和中心逻辑,并且会分别易懂、易读、易动手操作的示例程序,来带你一步步理解它们是如何运转的。

另外,其实你并不需求担忧言语不熟习的问题,由于现代的高级言语,相似度是很高的,即使是你不熟习的言语,你也照样可以写一些基本的、实验性的程序,研讨它的完成机制。

而且,学习编译原理的人会练就一项基本功,那就是更容易控制一门言语的本质。我们这门课就是要帮你成为钻到铁扇公主肚子里的孙悟空,研讨某一种言语的编译器,当然有助于你经过“捷径”去深化天文解这门言语。

  1. 学了有什么用?

学好编译器前端技术,你能为软件增加各种自定义功用、能够完本钱人的 DSL,致使完成完好的前端解析器(比如 SQL 解析器); 学好编译器后端技术,你能写出更容易优化的代码,洞悉让代码性能更高的秘密,以及采用后端工具快速完成一门完好的言语。

不只如此,经过火析真实编译器的代码,你能洞悉完成一个完好编译器的各种细节。当你把编译技术用于一个项目时,你就会了然于胸,应该在什么中央运用什么样的技术。由于你曾经见识过了各种编译器的完成方式,因此能够权衡和取舍。对你而言,编译原理,不再仅仅是原理,而是随时可以出击的利剑!

这个课程和之前宫教员的《编译原理之美》专栏课有什么区别?

《编译原理之美》专栏课是从前端与后端两个层面来讲解编译原理的中心技术点,用细致的案例带你理解笼统的原理。宫教员说,这门课是带你在编译原理的世界里“读万卷书”,目的就是帮你一次性控制编译原理最中心的概念、理论和算法。经过这门课,你能真正抑止学习编译原理的畏难心情,可以真正运用编译技术处置报表设计等理论问题。

《编译原理实战课》是从实战的角度切入,是学习编译原理的“行万里路”,教员会用你最擅长的写代码、读代码的方式,来带你分析真实的编译器到底是怎样写出来的。经过研讨多种编译器,你可以多次迭代对编译器的认知过程。并经过火析对比,你能发现这些编译器之间的异同点,激起出更多的思索,从而能得到更全面的、更深化的认知。在解析编译器的过程中,你也能更深化地把编译原理学问与理论相分别。

课程模块设计

课程主体分为三个模块。

准备学问篇:长篇大论地梳理编译过程中各个阶段的主要工作,带你重温编译原理的学问体系,让你对这些关键概念的理解变得愈加明晰。在这个过程中,你也能更好地树立细致完成跟原理之间的关联,互相印证。

真实编译器解析篇:带你研讨 Java、Java JIT、Python 等 7 种言语编译器的源代码,跟踪它们的运转过程,分析编译过程的每一步是如何完成的,并会对有特性的编译技术点加以分析和点评,以此帮你吃透现代言语的中心特性,直接进步你的技术水平,让你更高效地学习编译原理学问。

现代言语设计篇:带你分析和总结前面研讨过的 7 种真实言语的编译器,进一步提升你对相关编译技术的认知高度,让你对如何设计编译器的前端、中端、后端、运转时,都有比较全面的了解,知道如何在不同的技术道路之间做取舍。

极客时间《编译原理实战课》插图

 

课程大纲

| ├──01 编译的全过程都悄悄做了哪些事情?.pdf 5.28M
| ├──01 编译的全过程都悄悄做了哪些事情?mp3 8.57M
| ├──02 词法分析:用两种方式构造有限自动机.pdf 4.61M
| ├──02 词法分析:用两种方式构造有限自动机mp3 6.46M
| ├──03 语法分析:两个基本功和两种算法思路.pdf 6.07M
| ├──03 语法分析:两个基本功和两种算法思路mp3 9.39M
| ├──04 语义分析:让程序符合语义规则.pdf 4.71M
| ├──04 语义分析:让程序符合语义规则mp3 7.05M
| ├──05 运行时机制:程序如何运行,你有发言权.pdf 5.93M
| ├──05 运行时机制:程序如何运行,你有发言权mp3 10.17M
| ├──06 中间代码:不是只有一副面孔.pdf 5.82M
| ├──06 中间代码:不是只有一副面孔mp3 7.86M
| ├──07 代码优化:跟编译器做朋友,让你的代码飞起来.pdf 5.88M
| ├──07mp3 11.48M
| ├──08 代码生成:如何实现机器相关的优化?.pdf 5.68M
| ├──08mp3 7.64M
| ├──09 Java编译器(一):手写的编译器有什么优势?.pdf 4.81M
| ├──09 Java编译器(一):手写的编译器有什么优势?mp3 10.56M
| ├──10 Java编译器(二):语法分析之后,还要做些什么?.pdf 6.59M
| ├──10 Java编译器(二):语法分析之后,还要做些什么?mp3 8.36M
| ├──11 Java编译器(三):属性分析和数据流分析.pdf 5.34M
| ├──11 Java编译器(三):属性分析和数据流分析mp3 9.80M
| ├──12 Java编译器(四):去除语法糖和生成字节码.pdf 5.64M
| ├──12 Java编译器(四):去除语法糖和生成字节码mp3 8.97M
| ├──13 Java JIT编译器(一):动手修改Graal编译器.pdf 5.81M
| ├──13 Java JIT编译器(一):动手修改Graal编译器mp3 9.10M
| ├──14 Java JIT编译器(二):Sea of Nodes为何如此强大?.pdf 5.86M
| ├──14 Java JIT编译器(二):Sea of Nodes为何如此强大?mp3 8.18M
| ├──15 Java JIT编译器(三):探究内联和逃逸分析的算法原理.pdf 4.64M
| ├──15 Java JIT编译器(三):探究内联和逃逸分析的算法原理mp3 9.23M
| ├──16 Java JIT编译器(四):Graal的后端是如何工作的?.pdf 6.12M
| ├──16 Java JIT编译器(四):Graal的后端是如何工作的?mp3 8.58M
| ├──17 Python编译器(一):如何用工具生成编译器?.pdf 6.93M
| ├──17 Python编译器(一):如何用工具生成编译器?mp3 10.21M
| ├──18 Python编译器(二):从AST到字节码.pdf 7.38M
| ├──18 Python编译器(二):从AST到字节码mp3 8.48M
| ├──19 Python编译器(三):运行时机制.pdf 8.59M
| ├──19mp3 11.92M
| ├──20 JavaScript编译器(一):V8的解析和编译过程.pdf 5.74M
| ├──20mp3 7.98M
| ├──21 JavaScript编译器(二):V8的解释器和优化编译器.pdf 6.81M
| ├──21mp3 10.03M
| ├──22 Julia编译器(一):如何让动态语言性能很高?.pdf 6.77M
| ├──22mp3 9.50M
| ├──23 Julia编译器(二):如何利用LLVM的优化和后端功能?.pdf 5.32M
| ├──23mp3 6.83M
| ├──24 Go语言编译器:把它当作教科书吧.pdf 6.46M
| ├──24mp3 9.08M
| ├──25 MySQL编译器(一):解析一条SQL语句的执行过程.pdf 7.03M
| ├──25mp3 8.42M
| ├──26 MySQL编译器(二):编译技术如何帮你提升数据库性能?.pdf 5.71M
| ├──26mp3 9.23M
| ├──27 课前导读:学习现代语言设计的正确姿势.pdf 3.68M
| ├──27 课前导读:学习现代语言设计的正确姿势mp3 12.73M
| ├──28 前端总结:语言设计也有人机工程学.pdf 4.65M
| ├──28 前端总结:语言设计也有人机工程学mp3 16.31M
| ├──29 中端总结:不遗余力地进行代码优化.pdf 8.05M
| ├──29 中端总结:不遗余力地进行代码优化mp3 18.55M
| ├──30 后端总结:充分发挥硬件的能力.pdf 7.50M
| ├──30 后端总结:充分发挥硬件的能力mp3 21.40M
| ├──31 运行时(一):从0到语言级的虚拟化.pdf 7.62M
| ├──31 运行时(一):从0到语言级的虚拟化mp3 18.73M
| ├──32 运行时(二):垃圾收集与语言的特性有关吗?.pdf 7.25M
| ├──32 运行时(二):垃圾收集与语言的特性有关吗?mp3 23.22M
| ├──33 并发中的编译技术(一):如何从语言层面支持线程?.pdf 10.00M
| ├──33 并发中的编译技术(一):如何从语言层面支持线程?mp3 20.48M
| ├──34 并发中的编译技术(二):如何从语言层面支持协程?.pdf 8.82M
| ├──34 并发中的编译技术(二):如何从语言层面支持协程?mp3 26.09M
| ├──35 - 并发中的编译技术(三):Erlang语言厉害在哪里?mp3 5.01M
| ├──35 并发中的编译技术(三):Erlang语言厉害在哪里?.pdf 2.17M
| ├──36 高级特性(一):揭秘元编程的实现机制.pdf 2.36M
| ├──36 - 高级特性(一):揭秘元编程的实现机制mp3 5.67M
| ├──37 高级特性(二):揭秘泛型编程的实现机制.pdf 2.50M
| ├──37 高级特性(二):揭秘泛型编程的实现机制mp3 5.49M
| ├──38 综合实现(一):如何实现面向对象编程?.pdf 2.43M
| ├──38 综合实现(一):如何实现面向对象编程?mp3 6.22M
| ├──39 综合实现(二):如何实现函数式编程?.pdf 2.94M
| ├──39 综合实现(二):如何实现函数式编程?mp3 6.68M
| ├──40 成果检验:方舟编译器的优势在哪里?.pdf 2.56M
| ├──40 成果检验:方舟编译器的优势在哪里?mp3 6.40M
| ├──不定期加餐1.pdf 4.63M
| ├──不定期加餐1mp3 7.25M
| ├──不定期加餐2 学习技术的过程,其实是训练心理素质的过程mp3 4.71M
| ├──不定期加餐2 学习技术的过程,其实是训练心理素质的过程.pdf 1.98M
| ├──不定期加餐3 这几年,打动我的两本好书.pdf 1.72M
| ├──不定期加餐3 这几年,打动我的两本好书mp3 4.08M
| ├──不定期加餐4 从身边的牛人身上,我学到的一些优秀品质.pdf 1.68M
| ├──不定期加餐4 从身边的牛人身上,我学到的一些优秀品质mp3 3.83M
| ├──结束语 - 实战是*标准!mp3 2.72M
| ├──开篇词.pdf 3.46M
| ├──开篇词mp3 6.43M
| ├──期末答疑与总结 再次审视学习编译原理的作用.pdf 1.59M
| ├──期末答疑与总结 - 再次审视学习编译原理的作用mp3 3.41M
| ├──热点问题答疑.pdf 4.24M
| ├──热点问题答疑mp3 6.78M
| ├──学习指南.pdf 2.68M
| ├──学习指南mp3 5.12M
| ├──知识地图 一起来复习编译技术核心概念与算法.pdf 7.32M
| └──知识地图mp3 1.19M

本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用,未经站长允许禁止转载、转售本站资源。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络站长QQ:502212423。

如果您已经成功付款但是无法显示下载地址,下载地址失效,请联系站长提供付款信息为您处理

教程资源、源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好是您所需要的资源