![](https://csdnimg.cn/release/download_crawler_static/2406266/bg1.jpg)
编译原理学习导论
大学课程为什么要开设编译原理呢?这门课程关注的是编译器方面的产生原理和技术问题,
似乎和计算机的基础领域不沾边,可是编译原理却一直作为大学本科的必修课程,同时也成
为了研究生入学考试的必考内容。编译原理及技术从本质上来讲就是一个算法问题而已,当
然由于这个问题十分复杂,其解决算法也相对复杂。我们学的数据结构与算法分析也是讲算
法的,不过讲的基础算法,换句话说讲的是算法导论,而编译原理这门课程讲的就是比较专
注解决一种的算法了。在 20 世纪 50 年代,编译器的编写一直被认为是十分困难的事情,第
一 Fortran 的编译器据说花了 18 年的时间才完成。在人们尝试编写编译器的同时,诞生了
许多跟编译相关的理论和技术,而这些理论和技术比一个实际的编译器本身价值更大。就犹
如数学家们在解决著名的哥德巴赫猜想一样,虽然没有最终解决问题,但是其间诞生不少名
著的相关数论。
推荐参考书
虽然编译理论发展到今天,已经有了比较成熟的部分,但是作为一个大学生来说,要自己写
出一个像 Turboc C,Java 那样的编译器来说还是太难了。不仅写编译器困难,学习编译原理
这门课程也比较困难。
正是因为编译原理学习相对困难,那么就要求有好的教师和好的教材。教师方面不是我们能
自己更改的,而在教材方面我们却可以按自己的意愿来阅读。我下面推荐几本好的编译原理
的教材。我推荐的书籍都是国外的经典教材,因为在国内的教材中,确实还没发现什么让人
满意的。
第一本书的原名叫《Compilers Principles,Techniques,and Tools》,另外一个响亮的名字
就是龙书。原因是这本书的封面上有条红色的龙,也因为这本书在编译原理基础领域确实太
有名气了,所以很多国外的学者都直接取名为龙书。最近机械工业出版社已经出版了此书的
中文版,名字就叫《编译原理》。该书出的比较早,大概是在 85 或 86 年编写完成的,作者
之一还是著名的贝尔实验室的科学家。里面讲解的核心编译原理至今都没有变过,所以一直
到今天,它的价值都非凡。这本书最大的特点就是一开始就通过一个实际的小例子,把编译
原理的大致内容罗列出来,让很多编译原理的初学者很快心里有了个底,也知道为什么会有
这些理论,怎么运用这些理论。而这一点是我感觉国内的教材缺乏的东西,所以国内的教材
都不是写给愿意自学的读者,总之让人看了半天,却不知道里面的东西有什么用。
第二本书的原名叫《Modern Compiler Design》,中文名字叫做《现代编译程序设计》。该
书由人民邮电出版社所出。此书比较关注的是编译原理的实践,书中给出了不少的实际程序
代码,还有很多实际的编译技术问题等等。此书另外一个特点就是其¡ 现代¡ 而字。在传统
的编译原理教材中,你是不可能看到如同 Java 中的¡ 垃圾回收¡ 等算法的。因为 Java 这样
的解释执行语言是在近几年才流行起来的东西。如果你想深入学习编译原理的理论知识,那
么你肯定得看前面那本龙书,如果你想自己动手做一个先进的编译器,那么你得看这本《现
代编译程序设计》。
第三本书就是很多国内的编译原理学者都推荐的那本《编译原理及实践》。或许是这本书引
入国内比较早吧,我记得我是在高中就买了这本书,不过也是在前段时间才把整本书看完。
此书作为入门教程也的确是个不错的选择。书中给出的编译原理讲解也相当细致,虽然不如
前面的龙书那么深入,但是很多地方都是点到为止,作为大学本科教学已经是十分深入了。
该书的特点就是注重实践,不过感觉还不如前面那本《现代编译程序设计》的实践味道更重。
Created with novaPDF Printer (www.novaPDF.com). Please register to remove this message.