对编译原理的看法

1、编译原理是什么?

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

2、学习编译原理有什么好处?

这门课是一门真正与代码做斗争的课程,对于一个有至于追求技术的人是不容错过的课程,而且编译原理可以说是一个计算机科学的缩影。你学习它更多的是去追寻程序设计语言的本质,如它在寄存器分配中将会使用到贪心算法,死代码消除中将会使用到图论算法,数据流分析中使用到的Fixed-Point Algorithm,词法分析与语法分析中使用到有限状态机与递归下降这样的重要思想等等,也许你以后不会成为一个编译器开发工作者,但是编译原理的学习中所获,所思的东西足以让你终生获益。同时,学完这门课程,对于一个有Geek精神的开发者,他会开始运用自己的所学开发享受“上帝”的感觉,去尝试创造一门语言,我想这种感觉不是每门课程都能带给你的。我相信,当你真正完成这个过程后,你对你所写的程序、程序语言都会有更深的本质认识,这样的认识也会让你站的高度完全不同

3、不学习编译原理的损失

不学编译原理,可能永远给各种写编译器的人当奴隶,以为写程序只能按照他们设计的语言哲学来做。学好了编译原理,不一定非要自己写语言,但是至少能把很多其他程序员觉得很酷的东西看得透彻一点,不会被程序语言的设计表象骗到太多。这个还是挺重要的,是一辈子码工和未来CTO的区别

4、如何学习编译原理

编译原理”一般是本科或者研究生时课程的名字,一般说来这时关注的主要是理论部分,从形式语言和自动机的角度介绍各种文法和自动机的知识,这方面的知识“龙书” [1] 是非常经典的,尤其是前几章。而实践的部分则更推荐看“虎书” [2],对现代编译器的结构、词法分析和语法分析实现,代码生成和虚拟机的构造等都有详细的叙述,是非常好的上手指南,我自己写的第一个编译器就是按照虎书做的。

此外,如果希望编写实用的、面向现代操作系统的编译器,那么 Linkers and Loaders [3] 这样面向专门领域的经典也不可错过。

三步:

1. 读书:龙虎鍄,把课后的题目会做的都做一遍。

2. 自己写一个toy compiler,编译一些简单的代码,尝试理解各部分之间如何整合。

3. LLVM的代码,试着在上面加一些东西。

原文地址:https://www.cnblogs.com/byyl/p/5857628.html