编译原理 这门课程关注的是编译器方面的产生原理和技术问题,似乎和计算机的基础领域不沾边,可是编译原理却一直作为大学本科的 必修课程,同时也成为了研究生入学考试的必考内容
编译原理及技术从本质上来讲就是一个算法问题而已,当然由于这个问题十分复杂,其解决算法也相对复杂
我们学的数据结构与算法分析也是讲算法的,不过讲的基础算法,换句话说讲的是算法导论,而编译原理这门课程讲的就是比较专注解决一种的算法了
在20 世纪 50 年代,编译器的编写一直被认为是十分困难的事情,第一Fortran 的编译器据说花了18 年的时间才完成
在人们尝试编写编译器的同时,诞生了许多跟 编译相关的理论和技术,而这些理论和技术比一个实际的编译器本身价值更大
就犹如数学家们在解决著名的哥德巴赫猜想一样,虽然没有最终解决问题,但是其间 诞生不少名著的相关数论
推荐参考书 虽然编译理论发展到今天,已经有了比较成熟的部分,但是作为一个大学生来说,要自己写出一个像Turboc C,Java 那样的编译器来说还是太难了
不仅写编译器困难,学习编译原理这门课程也比较困难
正是因为编译原理学习相对困难,那么就要求有好的教师和 好的教材
教师方面不是我们能自己更改的,而在教材方面我们却可以按自己的意愿来阅读
我下面推荐几本好的编译原理的教材
我推荐的书籍都是国外的经典教材,因为在国内的教材中,确实还没发现什么让人满意的
第 一本书的原名叫《Compilers Principles,Techniques,and Tools》 ,另外一个响亮的名字就是龙书
原因是这本书的封面上有条红色的龙,也因为这本书在编译原理基础领域确实太有名气了,所以很多国外的学者都直 接取名为龙书
最近机械工业出版社已经出版了此书的中文版,名字就叫《编译原理》
该书出的比较早,大概是在85 或86 年编写完成的,作者之一还是著名的 贝尔实验室