本人对编译原理的看法


(1)什么是编译原理:
编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。 编译原理计算机专业设置的一门重要的专业课程。虽然只有少数人从事编译方面的工作,但是这门课在理论、技术、方法上都对学生提供了系统而有效的训练,有利于提高软件人员的素质和能力。

  这门课程关注的是编译器方面的产生原理和技术问题,似乎和计算机的基础领域不沾边,可是编译原理却一直作为大学本科的 必修课程,同时也成为了研究生入学考试的必考内容。编译原理及技术从本质上来讲就是一个算法问题而已,当然由于这个问题十分复杂,其解决算法也相对复杂。 我们学的数据结构与算法分析也是讲算法的,不过讲的基础算法,换句话说讲的是算法导论,而编译原理这门课程讲的就是比较专注解决一种的算法了。在20世纪 50年代,编译器的编写一直被认为是十分困难的事情,第一Fortran的编译器据说花了18年的时间才完成。在人们尝试编写编译器的同时,诞生了许多跟 编译相关的理论和技术,而这些理论和技术比一个实际的编译器本身价值更大。就犹如数学家们在解决著名的哥德巴赫猜想一样,虽然没有最终解决问题,但是其间 诞生不少名著的相关数论。
(2)学习编译原理有什么好处:
学习编译原理有什么作用,我认为这门课程是一门真正与代码作斗争的课程,对于一个追求技术的人是不容错过的课程,而且事实证明编译原理可以说是一个计算机科学的缩影。你学习编译原理,更多的是去追寻程序设计语言的本质,如它在寄存器分配中将会使用到贪心算法,死代码消除中将会使用到图论算法,数据流分析中使用到的Fixed-Point Algorithm,词法分析与语法分析中使用到有限状态机与递归状态下降这样的重要思想等等。不仅如此,学习编译原理,你对你自己所写的程序、程序语言有更深的本质的认识,这样的认识也会让你站的高度完全不同。
(3)不学编译原理有什么损失
不学习编译原理,你永远看不到一个程序设计背后的本质,不能把程序语言这种东西看得怎么透彻,同时也只能给那些写编译器的人当奴隶,写程序只能按照他们设计的语言哲学来做,站的高度也只会低人一截。
(4)如何学习编译原理:
编译原理是本科计算机课程中最难的一门了,因为它实在是太抽象了,而且学过之后很容易忘记,但是它又是非常重要的一门课程,起到了承上启下的作用。
学习编译原理,不要死看课本,课本都是翻译国外的,读起来有点吃力。结合习题是比较好的,可以理解一些概念。另外,可以用lex和yacc实现一个词法分析器和语法分析器,如果这两个实验跑通了,对你学习编译原理的学习非常有帮助。
posted @ 2016-09-11 21:00  201505060365张木贵  阅读(1572)  评论(1编辑  收藏  举报