编译原理

编译原理就是什么?
    编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。 编译原理是计算机专业设置的一门重要的专业课程。虽然只有少数人从事编译方面的工作,但是这门课在理论、技术、方法上都对学生提供了系统而有效的训练,有利于提高软件人员的素质和能力。
学习编译原理有什么好处?
从现实的方面来说,编译原理学过之后的益处(不考虑最后都没有入门的情况)包括:
    1、可以更加容易的理解在一个语言种哪些写法是等价的,哪些是有差异的
    2、可以更加客观的比较不同语言的差异
    3、更不容易被某个特定语言的宣扬者忽悠
    4、学习新的语言效率也会更高
    5、其实从语言a转换到语言b是一个通用的需求,学好编译原理处理此类需求时会更加游刃有余
不学有什么损失?
    不学编译原理,可能永远给各种写编译器的人当奴隶,以为写程序只能按照他们设计的语言哲学来做。学好了编译原理,不一定非要自己写语言,但是至少能把很多其他程序员觉得很酷的东西看得透彻一点,不会被程序语言的设计表象骗到太多。
如何学习编译原理?
    端正认识:编译原理在静态文本处理上有广泛的应用,举个简单的例子,把HTML文件转化为纯文本,利用编译原理来实现非常简单,理解了编译原理的实用性,大概可以提高学习兴趣。反复看书:这个办法看起来最笨,却是基本的方法。结合源码来看:这是经典教材《Compiler Design in C》的作者Allen Hollub建议的方法。这本教材的特色就是包含了大段yacc,lex的代码。这也是个好方法,而且,只有看懂了代码,才能说在根本上理解了理论。当然,要完全看懂yacc的代码工作量是很大的,而且同样要先理解理论。删繁就简,避重就轻:网上流传较广的一篇《编译原理学习导论》(作者四川大学唐良)就基本是这种思路,对于词法分析,作者避免了自动机理论和集合推演的介绍,直接搬出源码来,大大降低了理解难度,对于语法分析,作者介绍了递归下降和LL文法及相应的源码,而对LR文法,只说“理解理论就可以了“。虽然这种方法回避了对于难点的学习,但是用这种方法学习,可以在较短时间内编写出一个能够运行的词法分析器和语法分析器,可以大大提高学习积极性。

原文地址:https://www.cnblogs.com/170he/p/5856981.html