编译原理学习导论(新手必看!!!)
编译原理学习导论 编译原理是一门关注编译器方面的产生原理和技术问题的课程,虽然它与计算机的基础领域不沾边,但是它一直作为大学本科的必修课程,同时也成为了研究生入学考试的必考内容。编译原理及技术从本质上来讲就是一个算法问题,而解决算法也相对复杂。 在 20 世纪 50 年代,编译器的编写一直被认为是十分困难的事情,第一 Fortran 的编译器据说花了 18 年的时间才完成。在人们尝试编写编译器的同时,诞生了许多跟编译相关的理论和技术,而这些理论和技术比一个实际的编译器本身价值更大。 推荐参考书虽然编译理论发展到今天,已经有了比较成熟的部分,但是作为一个大学生来说,要自己写出一个像 TurbocC,Java 那样的编译器来说还是太难了。不仅写编译器困难,学习编译原理这门课程也比较困难。正是因为编译原理学习相对困难,那么就要求有好的教师和好的教材。 我推荐的书籍都是国外的经典教材,因为在国内的教材中,确实还没发现什么让人满意的。第一本书的原名叫《Compilers Principles, Techniques, and Tools》,另外一个响亮的名字就是龙书。原因是这本书的封面上有条红色的龙,也因为这本书在编译原理基础领域确实太有名气了,所以很多国外的学者都直接取名为龙书。 最近机械工业出版社已经出版了此书的中文版,名字就叫《编译原理》。该书出的比较早,大概是在 85 或 86 年编写完成的,作者之一还是著名的贝尔实验室的科学家。里面讲解的核心编译原理至今都没有变过,所以一直到今天,它的价值都非凡。这本书最大的特点就是一开始就通过一个实际的小例子,把编译原理的大致内容罗列出来,让很多编译原理的初学者很快心里有了个底,也知道为什么会有这些理论,怎么运用这些理论。 第二本书的原名叫《Modern Compiler Design》,中文名字叫做《现代编译程序设计》。该书由人民邮电出版社所出。此书比较关注的是编译原理的实践,书中给出了不少的实际程序代码,还有很多实际的编译技术问题等等。此书另外一个特点就是其“现代”而字。在传统的编译原理教材中,你是不可能看到如同 Java 中的“垃圾回收”等算法的。因为 Java 这样的解释执行语言是在近几年才流行起来的东西。 第三本书就是很多国内的编译原理学者都推荐的那本《编译原理及实践》。或许是这本书引入国内比较早吧,我记得我是在高中就买了这本书,不过也是在前段时间才把整本书看完。此书作为入门教程也的确是个不错的选择。书中给出的编译原理讲解也相当细致,虽然不如前面的龙书那么深入,但是很多地方都是点到为止,作为大学本科教学已经是十分深入了。 该书的特点就是注重实践,不过感觉还不如前面那本《现代编译程序设计》的实践味道更重。此书的重点还是在原理上的实践,而非前面那本那样的技术实践。《编译原理及实践》在讲解编译原理的各个部分的同时,也在逐步实践一个现代的编译器 Tiny C。等你把整本书看完,差不多自己也可以写一个 Tiny C 了。作者还对 Lex 和 Yacc 这两个常用的编译相关的工具进行了很详细的说明,这一点也是很难在国内的教材中看到的。 编译原理的实质前面已经说过,学习编译原理其实也就是学习算法而已,没什么特别的。只不过这些算法的产生已经形成了一套理论。下面我来看看编译原理里面到底有什么高深的理论吧几乎每本编译原理的教材都是分成词法分析,语法分析(LL 算法,递归下降算法,LR 算法),语义分析,运行时环境,中间代码,代码生成,代码优化这些部分。 其实现在很多编译原理的教材都是按照 85,86 出版的那本龙书来安排教学内容的,所以那本龙书的内容格式几乎成了现在编译原理教材的定式,包括国内的教材也是如此。一般来说,大学里面的本科教学是不可能把上面的所有部分都认真讲,但是编译原理的知识点都是相互关联的,学习编译原理需要具备一定的基础知识和编程能力。
剩余11页未读,继续阅读
- fanzhang19902018-11-17好东西 值得一看
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助