编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。编译原理及技术从本质上来讲就是一个算法问题而已,当然由于这个问题十分复杂,其解决算法也相对复杂。但是我觉得编译就是像翻译一样,将一种语言翻译成另一种语言,编译就是将高级语言或汇编语言翻译成电脑能识别的二进制机器语言,编译原理就是讲解这个编译的过程。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。
而学这一门专业课,可以让我了解到机器语言和高级语言之间转换的方式,可以自己写出编译器;可以更加客观的比较出各种语言的差异;可以更加容易的理解在一个语言种哪些写法是等价的,哪些是有差异的;可以让我们对我们写的程序和程序语言有更深的本质的认识;懂得代码的本源是什么,可以更好的理解程序,解决编程中的问题。总的来说,可以让我们变得高大上,解决编程问题的会有更全新的角度去思考。
我认为若是不学这一门学科,则会有一些损失,例如造成知识缺陷,遇到一些底层问题或者性能问题等,而且自己无法去解决。像我们自己学C语言的话,若是没学习编译原理,会遇到很多难解决的问题,而且如果不学这门课,就无法了解到编译的过程。学习了这一门学科,我认为我们能够知道各种语言的根源,更好地利用语言,甚至能创造语言。若是不学,以上这些只是笑话。
那么,我们该如何学习这一门学科呢?这一学科有几本书是很牛的,就是龙书、虎书和鲸书。但是,作为初学者,不应该上手就用这几本书来进行学习,最好就是先把教材弄清楚,搞懂,而且上课一定要认真地去上,因为很多地方不是自己去琢磨就能懂。除此之外,更要注重实践。