程序员是不是一定要懂编译原理? | 极客时间

2022 年 5 月 28 日 InfoQ

不知道什么时候开始,编译原理总被人说成是用来炫耀的“屠龙技”,对此我不敢苟同,编译原理实打实的是一门对你我工作大有裨益的技术。

编译技术简单点说,就是把高级语言的代码翻译成为计算机可以理解和运行的二进制代码的技术。我们经常会碰到需要编译技术的场景,比如编写界面模板引擎,为项目编写各种各样的 DSL,深度理解甚至开发出 Spring、Hibernate、阿里巴巴 Druid 这样的工具。

除此之外,解析用户输入,防止代码注入,为前端工程师提供像 React 那样的 DSL,像 TypeScript 那样把一门语言翻译成另一门语言,像 CMake 和 Maven 那样通过配置文件来灵活工作,运维工程师分析日志文件等等高级别的需求,都会用到编译技术。

除了实践性强,编译技术在求职中也同样重要。不少大厂在招聘时,都会出一些涉及底层机制、有难度的面试题。

说起来,我很早就被编译器种了草,当时下定决心学,还是因为想加入 tvm 的社区,发现自己这个短板必须得补上。结果跟大部分朋友一样,遇到了俩最常见的问题:没人教、怕看不懂。

如何深入理解并实践编译原理?

如今的快餐式学习,虽然会帮助个人在短期内迅速了解一门技术,但程序员想要保持长期的竞争力,学习底层知识并进行实践,提升专业素养必不可少。

直到后来,我发现了下面这张宫哥做的脑图,图上系统梳理了关于编译技术最核心的概念、理论和算法,收藏价值挺大,我已经存了好几年了:

这张图来自极客时间的专栏《编译原理之美》,它在极客时间上订阅量已经超过 3W 了,口碑相当不错。

专栏作者是宫文学,他是北京物演科技 CEO,也是国内最早做 BPM(流程管理平台)和 BI 平台(大数据平台)的创业者之一,第一个公司卖给了上市公司,第二个在新三板上市,后来还做过电子表单和快速开发平台,这些经历与成果都跟编译技术密不可分。当然,他还熟知各种语言编译器的实现机制,实战经验非常丰富。

我当时还顺藤摸瓜找到了他在极客时间的另外一个专栏《编译原理实战》专栏,马上入手了!跟着学下来,收获真的很大,毕竟把知识与实践相结合,才让编译技术真正变成自己手中的高阶技能!

最近马上要 618 了,两个编译原理专栏有联合活动,订阅价 ¥258(129+129),现在到手只要 6 折 ¥155 ,非常划算(不会再低了),推荐给你们!

👆 点击立即 6 折入手
优惠仅 50 份,卖完恢复原价

他是如何讲编译原理与实战的?

不用担心看不懂,不论你是什么语言的背景,都能学,宫哥的《编译原理之美》就是为了带着大家去了解各门语言背后的知识,所以课程里选了 C 语言、java、javascript 等几门语法看上去都很像的语言来做例子,保证你不会有陌生感,也不会因为掌握的具体语言而卡壳。

宫哥主要从前端与后端两个层面来讲解编译原理的核心技术点,用具体的案例带你理解抽象的原理,帮你建立信心,克服畏难情绪,让你在这个过程中一步步趟过雷区,在工作中真正用到编译技术。

宫哥将编译原理专栏内容分成三部分:

第一部分:实现一门脚本语言

主要聚焦编译器前端技术,通过具体实例,带你了解词法分析、语法分析、语义分析的原理,实现一门脚本语言,并用工具提升效率。

第二部分:实现一门编译型语言

主要聚焦编译器后端技术,带你了解如何生成目标代码和对代码进行优化,并引入 LLVM 工具,最后生成可执行的文件能支持即时编译,并经过了多层优化。

第三部分:面向未来的编程语言

人工智能与编译技术结合是否会出现人工智能编程?这个模块将对编译技术的发展趋势进行分析,帮你更好地把握未来技术发展的脉搏。

有很多朋友,尽管理解了编译原理的理论和概念,但难以做到知行合一,其实,要做到这一点,无非要是搞清楚我们用的编译器,到底是怎么写出来的。

只有深入了解现代语言编译器的结构、采用的算法和设计上的权衡,在用编译技术完成一个项目时,你才知道在什么地方该用什么技术——掌握更多编译器的设计和实现思路,作为项目的决策依据。

在专栏《编译原理实战》中,宫哥系统梳理了编译原理的核心基础知识,解析 7 大主流语言的编译器源码(Java、Java JIT、Python、JavaScript、Julia、Go、MySQL )。通过大量实战案例讲解,带你掌握真实编译器的实现机制与关键算法,进而站在更加宏观的视角,从编程语言的设计层面理解编译原理。

看完后对我的提升确实有不小的影响,后来社区也成功进了,而且我现在知道如何在不同的技术路线之间做取舍了。最近因为项目需要在回看复习,还收获了一些新的见解和看法。

在学习这三类模块中的语言外,实战中的大部分内容,都是他在读源码,跟踪源码执行过程的基础上梳理出来的。在课程设计上,他会以研究真实编译器的运行原理为主要手段,着力于扩大知识版图,增强实战能力,从而达到「行万里路」的目的。

说了那么多,来看看目录吧:

别光我说,来看看两个专栏的留言,质量都很高,不仅宫哥会解答大家的问题,读者自己也会相互切磋,光看评论区都能学到不少,口碑很不错,截了一些供你参考:

众所周知,编译技术是计算机科学史上的明珠之一。如果说整个互联网的发展是构建在编译技术和编程语言之上也毫不为过。也许你以后不会成为编译器开发者,但学好编译原理,一定会让你终生受益。

现在订阅,真的超值!

6 折到手,立省 ¥103
优惠仅 50 份,售完即恢复原价

👆 点击 6 折入手

点击「阅读原文」
6 折到手,订阅价 ¥258
,售完即恢复原价!

点个在看少个 bug 👇

登录查看更多
1

相关内容

【经典书】贝叶斯统计学Python实战,第二版
专知会员服务
86+阅读 · 2022年5月10日
算法通关手册(LeetCode)
专知会员服务
156+阅读 · 2022年1月13日
【干货书】《Pydon'ts:编写优雅的Python代码》,263页pdf
专知会员服务
91+阅读 · 2021年11月2日
【硬核书】Linux核心编程|Linux Kernel Programming,741页pdf
专知会员服务
76+阅读 · 2021年3月26日
专知会员服务
90+阅读 · 2020年12月26日
【干货书】Python 编程,480页pdf
专知会员服务
228+阅读 · 2020年8月14日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
Arxiv
0+阅读 · 2022年7月27日
Arxiv
0+阅读 · 2022年7月26日
已删除
Arxiv
31+阅读 · 2020年3月23日
Arxiv
25+阅读 · 2018年8月19日
Arxiv
25+阅读 · 2017年12月6日
VIP会员
相关VIP内容
【经典书】贝叶斯统计学Python实战,第二版
专知会员服务
86+阅读 · 2022年5月10日
算法通关手册(LeetCode)
专知会员服务
156+阅读 · 2022年1月13日
【干货书】《Pydon'ts:编写优雅的Python代码》,263页pdf
专知会员服务
91+阅读 · 2021年11月2日
【硬核书】Linux核心编程|Linux Kernel Programming,741页pdf
专知会员服务
76+阅读 · 2021年3月26日
专知会员服务
90+阅读 · 2020年12月26日
【干货书】Python 编程,480页pdf
专知会员服务
228+阅读 · 2020年8月14日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
相关基金
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
Top
微信扫码咨询专知VIP会员