写了5年代码,还没搞懂编译原理 - Go语言中文社区

写了5年代码,还没搞懂编译原理


众所周知,编译技术是计算机科学史上的明珠之一。如果说整个互联网的发展是构建在编译技术和编程语言之上也毫不为过。

 

但可能有的程序员会觉得,我也不会去设计一门新的编程语言,有必要学习编译原理吗?学了有什么用呢?

 

实际上,编译原理不是用于炫耀的屠龙技,程序员在工作中经常会碰到需要编译技术的场景,比如:


  • 编写界面模板引擎;

  • 为项目编写各种各样的 DSL;

  • 深度理解甚至开发出 Spring、Hibernate、阿里巴巴 Druid 这样的工具。


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

 

编译技术,就是把高级语言的代码翻译成为计算机可以理解和运行的二进制代码的技术。掌握了编译技术,你可以获得什么能力呢?简直太多了:

 

  • 让你的软件支持公式和脚本,从而具有更强的灵活性;

  • 有能力参与基础软件的研发,因为它们很多都会用到编译技术,比如 Hibernate、Spring、大数据系统等等;

  • 编写特定领域语言,解决领域问题;

  • 写出高效、高质的代码,成为更优秀的开发者;

  • 更好地理解和学习新的语言,降低学习成本,快速跟进技术潮流。

 

除了实践性强,学习编译技术对于提升程序员的职场竞争力也很重要。

 

比如,你会发现一些大公司招聘程序员时,有难度的面试题都是涉及底层机制的。理解了底层机制,才能更深入的思考问题和解决问题。学习编译原理,能让你从前端的语法、代码优化、与硬件结合等维度,加深对计算机的理解,提升工作中解决疑难杂症的能力。

 

如今的快餐式学习,虽然会帮助个人在短期内迅速了解一门技术,但程序员想要保持长期的竞争力,学习底层知识并进行实践,提升专业素养必不可少。也许你以后不会成为编译器开发者,但学好编译原理,一定会让你终生受益。


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


很多同学说,知道编译技术的重要性,也很希望能啃下来,但总是会遇到许多问题:


  • 作为底层技术,编译原理出了名的晦涩难懂,学习完全没有头绪;

  • 网络上的资料过于抽象和理论化,篇幅长,讲解枯燥;

  • 畏难情绪严重,学习编译原理简直成了心魔。


在这里帮大家找到一个非常全面的编译原理知识框架图资料,能帮你更好的理解和实践编译原理,克服畏难情绪,这张图出自极客时间专栏《编译原理之美》,作者是宫文学。


640?wx_fmt=jpeg

     

宫文学是谁?


宫文学,北京物演科技 CEO。本科毕业于北京大学,硕士毕业于中科院。是国内最早做 BPM(流程管理平台)和 BI 平台(大数据平台)的创业者之一,2016年入选了厦门市第九批“双百计划”领军型创业人才。

 

在编译技术上的实战经验非常丰富,曾经以3个人的团队,用编译技术做了一些硬核的产品原型,然后就跟联想集团签订了战略级合作协议,也做过电子表单和快速开发平台。


这个课程上线8天,已经有近5000人加入学习,看了开篇词,作者实践经验非常丰富,讲的透彻又清晰,评论里不少同学都立下了flag。


640?wx_fmt=jpeg

640?wx_fmt=jpeg

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/X5fnncxzq4/article/details/100012718
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-08-27 13:14:18
  • 阅读 ( 909 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢