You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
7.1 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 编译原理实战课
## 你将获得
* 编译原理的核心基础知识
* 7 大主流语言的编译器源码解读
* 真实编译器的实现机制与关键算法
* 从编程语言设计层面理解编译原理
## 讲师介绍
宫文学,[《编译原理之美》](https://time.geekbang.org/column/intro/219?utm_term=zeusJSBTL&utm_source=app&utm_medium=geektime&utm_campaign=219-end&utm_content=zhuanlanxiangqingye0601)课程作者北京原点代码CEO。他是国内最早做BPM流程管理平台和BI平台大数据平台的创业者之一之后也做过电子表单和快速开发平台这些经历都与编译技术密不可分。他非常熟悉各种语言编译器的实现机制专注于编译技术领域并且正在设计一门新语言在编译技术之路上具有丰富的实践经验。
## 课程介绍
**编译原理实战课,我们到底要学些什么?**
在这门课程里宫老师精选出了Java、Java JIT、Python、JavaScript、Julia、Go、MySQL这7种真实编程语言的编译器带你阅读它们的源代码跟踪它们的执行过程弄懂它们的运行机制。在这个过程中你会获得对编译器的第一手理解并能够与自己理解的编译原理知识相互印证。
另外,宫老师还会带你分析和总结这些现代语言的编译器的结构、所采用的算法和设计思路,帮你更好地理解和把握一门现代语言的特性,让你对新一代语言的设计思考有拨云见日的通透感。
**有些语言我都没接触过,解析这些编译器,我能学得会吗?我学了又有什么用呢?**
1. **能学得会吗?**
当然可以了。在课程中,宫老师会梳理出这些不同语言编译器的源代码的重点和核心逻辑,并且会结合易懂、易读、易动手操作的示例程序,来带你一步步理解它们是如何运行的。
另外,其实你并不需要担心语言不熟悉的问题,因为现代的高级语言,相似度是很高的,即使是你不熟悉的语言,你也照样可以写一些基本的、试验性的程序,研究它的实现机制。
而且,学习编译原理的人会练就一项基本功,那就是更容易掌握一门语言的本质。我们这门课就是要帮你成为钻到铁扇公主肚子里的孙悟空,研究某一种语言的编译器,当然有助于你通过“捷径”去深入地理解这门语言。
2. **学了有什么用?**
学好编译器前端技术你能为软件增加各种自定义功能、能够实现自己的DSL甚至实现完整的前端解析器比如SQL解析器 学好编译器后端技术,你能写出更容易优化的代码,洞悉让代码性能更高的秘密,以及采用后端工具快速实现一门完整的语言。
不仅如此,通过分析真实编译器的代码,你能洞悉实现一个完整编译器的各种细节。当你把编译技术用于一个项目时,你就会了然于胸,应该在什么地方使用什么样的技术。因为你已经见识过了各种编译器的实现方式,因此能够权衡和取舍。对你而言,编译原理,不再仅仅是原理,而是随时可以出击的利剑!
**这个课程和之前宫老师的《编译原理之美》专栏课有什么区别?**
《编译原理之美》专栏课是从前端与后端两个层面来讲解编译原理的核心技术点,用具体的案例带你理解抽象的原理。宫老师说,这门课是带你在编译原理的世界里“**读万卷书**”,目的就是帮你一次性掌握编译原理最核心的概念、理论和算法。通过这门课,你能真正克服学习编译原理的畏难情绪,可以真正运用编译技术解决报表设计等实际问题。
《编译原理实战课》是从实战的角度切入,是学习编译原理的“**行万里路**”,老师会用你最擅长的写代码、读代码的方式,来带你分析真实的编译器到底是怎么写出来的。通过研究多种编译器,你可以多次迭代对编译器的认知过程。并通过分析对比,你能发现这些编译器之间的异同点,激发出更多的思考,从而能得到更全面的、更深入的认知。在解析编译器的过程中,你也能更深入地把编译原理知识与实践相结合。
### 课程模块设计
课程主体分为三个模块。
**预备知识篇:**简明扼要地梳理编译过程中各个阶段的主要工作,带你重温编译原理的知识体系,让你对这些关键概念的理解变得更加清晰。在这个过程中,你也能更好地建立具体实现跟原理之间的关联,互相印证。
**真实编译器解析篇:**带你研究Java、Java JIT、Python等7种语言编译器的源代码跟踪它们的运行过程分析编译过程的每一步是如何实现的并会对有特点的编译技术点加以分析和点评以此帮你吃透现代语言的核心特性直接提高你的技术水平让你更高效地学习编译原理知识。
**现代语言设计篇:**带你分析和总结前面研究过的7种真实语言的编译器进一步提升你对相关编译技术的认知高度让你对如何设计编译器的前端、中端、后端、运行时都有比较全面的了解知道如何在不同的技术路线之间做取舍。
## 课程目录
[![](https://static001.geekbang.org/resource/image/7f/8f/7fce81d4f7f969yy7593972b6e6a048f.jpg)](https://shop18793264.m.youzan.com/wscgoods/detail/2ou1v6u4vq4k8rv?dc_ps=2899964955380117504.200001)
## 特别放送
#### 免费领取福利
[![](https://static001.geekbang.org/resource/image/69/dc/69c52d08278a2164dc5b061ba342a5dc.jpg?wh=960x301)](https://time.geekbang.org/article/427012)
#### 限时活动推荐
[![](https://static001.geekbang.org/resource/image/67/a0/6720f5d50b4b38abbf867facdef728a0.png?wh=1035x360)](https://shop18793264.m.youzan.com/wscgoods/detail/2fmoej9krasag5p?dc_ps=2913145716543073286.200001)
## 订阅须知
1. 订阅成功后推荐通过“极客时间”App端、Web端学习。
2. 本专栏为虚拟商品,交付形式为图文+音频,一经订阅,概不退款。
3. 订阅后分享海报,每邀一位好友订阅有现金返现。
4. 戳此[先充值再购课更划算](https://shop18793264.m.youzan.com/wscgoods/detail/2fmoej9krasag5p?scan=1&activity=none&from=kdt&qr=directgoods_1541158976&shopAutoEnter=1),还有最新课表、超值赠品福利。
5. 企业采购推荐使用“[极客时间企业版](https://b.geekbang.org/?utm_source=geektime&utm_medium=columnintro&utm_campaign=newregister&gk_source=2021020901_gkcolumnintro_newregister)”便捷安排员工学习计划,掌握团队学习仪表盘。
6. 戳此[申请学生认证](https://promo.geekbang.org/activity/student-certificate?utm_source=geektime&utm_medium=caidanlan1)订阅课程享受原价5折优惠。
7. 价格说明:划线价、订阅价为商品或服务的参考价,并非原价,该价格仅供参考。未划线价格为商品或服务的实时标价,具体成交价格根据商品或服务参加优惠活动,或使用优惠券、礼券、赠币等不同情形发生变化,最终实际成交价格以订单结算页价格为准。