1/编译原理是什么?
答:编译在我的看来,就是在于高级语言(如c语言)和汇编语言(机器语言)之间的一种工作。
因为一台单纯的硬件计算机只能够执行汇编语句,一条汇编完全对应计算机CPU的一条硬件的指令。
所以就需要一种介质介于两种语言之间,那就是编译原理。
2/学习编译原理有什么好处?
答:学好编译原理据网友回答:
1、可以更加容易的理解在一个语言种哪些写法是等价的,哪些是有差异的
2、可以更加客观的比较不同语言的差异
3、更不容易被某个特定语言的宣扬者忽悠
4、学习新的语言是效率也会更高
5、其实从语言a转换到语言b是一个通用的需求,学好编译原理处理此类需求时会更加游刃有余
3/不学有什么损失?
答:作为一个软件开发专业的学生,以后学的每门高级语言即使学得再好也就只是懂得了表层意思,
却不能知道它在下层是如何运行的。你学习它更多的是去追寻程序设计语言的本质,如它在寄存器
分配中将会使用到贪心算法,死代码消除中将会使用到图论算法,数据流分析中使用到的Fixed-Po
int Algorithm,词法分析与语法分析中使用到有限状态机与递归下降这样的重要思想等等,也许你
以后不会成为一个编译器开发工作者,但是编译原理的学习中所获,所思的东西足以让你终生获益。
4/如何学习编译原理?
答:学过编译原理课程的同学应该有体会,各种文法、各种词法语法分析算法,非常消磨人的耐心和
兴致;中间代码生成和优化,其实在很多应用场景下并不重要(当然这一块对于“编译原理”很重要)
;语义分析要处理很多很多细节,特别对于比较复杂的语言;最后的指令生成,可能需要读各种手册,
也比较枯燥。