首页 > 代码库 > 对编译原理的看法

对编译原理的看法

编译原理就是什么?

      编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。 编译原理是计算机专业设置的一门重要的专业课程。虽然只有少数人从事编译方面的工作,但是这门课在理论、技术、方法上都对学生提供了系统而有效的训练,有利于提高软件人员的素质和能力。

学习编译原理有什么好处?

      从现实的方面来说,编译原理学过之后的益处(不考虑最后都没有入门的情况)包括:

          1、可以更加容易的理解在一个语言种哪些写法是等价的,哪些是有差异的
          2、可以更加客观的比较不同语言的差异
          3、更不容易被某个特定语言的宣扬者忽悠
          4、学习新的语言是效率也会更高
          5、其实从语言a转换到语言b是一个通用的需求,学好编译原理处理此类需求时会更加游刃有余
 
不学有什么损失?
       不学编译原理,可能永远给各种写编译器的人当奴隶,以为写程序只能按照他们设计的语言哲学来做。学好了编译原理,不一定非要自己写语言,但是至少能把很多其他程序员觉得很酷的东西看得透彻一点,不会被程序语言的设计表象骗到太多。

如何学习编译原理?
      端正认识:编译原理在静态文本处理上有广泛的应用,举个简单的例子,把HTML文件转化为纯文本,利用编译原理来实现“非常“简单,理解了编译原理的实用性,大概可以提高学习兴趣。
      反复看书:这个办法看起来最笨,却是基本的方法。忘了是哪位名人说过,书只要多看,总能看得懂的。
      结合源码来看:这是经典教材《Compiler Design in C》的作者Allen Hollub建议的方法。这本教材的特色就是包含了大段yacc,lex的代码。这也是个好方法,而且,只有看懂了代码,才能说在根本上理解了理论。当然,要完全看懂yacc的代码,工作量是很大的,而且同样要先理解理论。
      删繁就简,避重就轻:网上流传较广的一篇《编译原理学习导论》(作者四川大学唐良)就基本是这种思路,对于词法分析,作者避免了自动机理论和集合论推演的介绍,直接搬出源码来,大大降低了理解难度,对于语法分析,作者介绍了递归下降和LL文法及相应的源码,而对LR文法,只说“理解理论就可以了“。虽然这种方法回避了对于难点的学习,但是用这种方法学习,可以在较短时间内编写出一个能够运行的词法分析器和语法分析器,可以大大提高学习积极性。
 

对编译原理的看法