众所周知,编译技术是计算机科学史上的明珠之一。如果说整个互联网的发展是构建在编译技术和编程语言之上也毫不为过。
但可能有的程序员会觉得,我也不会去设计一门新的编程语言,有必要学习编译原理吗?学了有什么用呢?
实际上,编译原理不是用于炫耀的屠龙技,程序员在工作中经常会碰到需要编译技术的场景,比如:
编写界面模板引擎;
为项目编写各种各样的 DSL;
深度理解甚至开发出 Spring、Hibernate、阿里巴巴 Druid 这样的工具。
除此之外,解析用户输入,防止代码注入,为前端工程师提供像 React 那样的 DSL,像 TypeScript 那样把一门语言翻译成另一门语言,像 CMake 和 Maven 那样通过配置文件来灵活工作,运维工程师分析日志文件等等高级别的需求,都会用到编译技术。
编译技术,就是把高级语言的代码翻译成为计算机可以理解和运行的二进制代码的技术。掌握了编译技术,你可以获得什么能力呢?简直太多了:
让你的软件支持公式和脚本,从而具有更强的灵活性;
有能力参与基础软件的研发,因为它们很多都会用到编译技术,比如 Hibernate、Spring、大数据系统等等;
编写特定领域语言,解决领域问题;
写出高效、高质的代码,成为更优秀的开发者;
更好地理解和学习新的语言,降低学习成本,快速跟进技术潮流。
除了实践性强,学习编译技术对于提升程序员的职场竞争力也很重要。
比如,你会发现一些大公司招聘程序员时,有难度的面试题都是涉及底层机制的。理解了底层机制,才能更深入的思考问题和解决问题。学习编译原理,能让你从前端的语法、代码优化、与硬件结合等维度,加深对计算机的理解,提升工作中解决疑难杂症的能力。
如今的快餐式学习,虽然会帮助个人在短期内迅速了解一门技术,但程序员想要保持长期的竞争力,学习底层知识并进行实践,提升专业素养必不可少。也许你以后不会成为编译器开发者,但学好编译原理,一定会让你终生受益。
如何深入理解并实践编译原理?
很多同学说,知道编译技术的重要性,也很希望能啃下来,但总是会遇到许多问题:
作为底层技术,编译原理出了名的晦涩难懂,学习完全没有头绪;
网络上的资料过于抽象和理论化,篇幅长,讲解枯燥;
畏难情绪严重,学习编译原理简直成了心魔。
在这里帮大家找到一个非常全面的编译原理知识框架图资料,能帮你更好的理解和实践编译原理,克服畏难情绪,这张图出自极客时间专栏《编译原理之美》,作者是宫文学。
宫文学是谁?
宫文学,北京物演科技 CEO。本科毕业于北京大学,硕士毕业于中科院。是国内最早做 BPM(流程管理平台)和 BI 平台(大数据平台)的创业者之一,2016年入选了厦门市第九批“双百计划”领军型创业人才。
在编译技术上的实战经验非常丰富,曾经以3个人的团队,用编译技术做了一些硬核的产品原型,然后就跟联想集团签订了战略级合作协议,也做过电子表单和快速开发平台。
这个课程上线8天,已经有近5000人加入学习,看了开篇词,作者实践经验非常丰富,讲的透彻又清晰,评论里不少同学都立下了flag。
?扫描上图,免费试读
如何讲解编译原理?
我看了看目录和内容,主要是从编译器的前端与后端两个层面来讲解编译原理的核心技术点,会举很多案例来帮你理解抽象的内容,并且教你在工作中真正用到编译技术。
具体分为三个部分:
第一部分:实现一门脚本语言
主要聚焦编译器前端技术,通过具体实例讲解词法分析、语法分析、语义分析的原理,实现一门脚本语言,并用工具提升效率。
第二部分:实现一门编译型语言
主要聚焦编译器后端技术,讲解如何生成目标代码和对代码进行优化,并引入 LLVM 工具,最后生成可执行的文件能支持即时编译,并经过了多层优化。
第三部分:面向未来的编程语言
人工智能与编译技术结合是否会出现人工智能编程?这个模块将对编译技术的发展趋势进行分析,帮你更好地把握未来技术发展的脉搏。
学习完课程,你能收获什么?
1.系统掌握编译器核心技术
2.手动实现解释型和编译型2门语言
3.4大案例剖析编译技术的实际应用
4.编译技术的趋势解读
1分钟看看目录,跟市面上复杂的资料不同,内容精简到30多节,但涵盖的重点难点却一点都不少,就是为了能让你更高效、清晰的学懂、落地实践编译原理。
限时订阅福利
1.早鸟优惠¥68,原价¥99。
2.订阅课程后,可获得作者亲自整理的高清版「编译原理核心知识框架图」,获取方式:公众号后台回复「编译」。
?扫描上图,早鸟价¥68入手
学好编译原理,不一定非要自己写语言,但却能把很多其他程序员觉得很酷的东西看得透彻一点,不会只看到程序语言的设计表象,这也是十分重要的。
?点击「阅读原文」,一起攻克编译原理。