编译原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编译原理相关的知识,希望对你有一定的参考价值。

1.什么是编译原理

编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。 编译原理是计算机专业设置的一门重要的专业课程。从功能上看,一个编译程序就是一个语言翻译程序。编译:就是将程序语言进行翻译,生成可供用户直接执行的二进制代码,即可执行文件。任务是个比较模糊的概念,指的是操作系统中正在进行的工作,既可以指进程,也可以指程序。程序指的是可以连续执行,并能够完成一定任务的一条条指令的集合。进程是程序在一个数据集合上运行的过程,它是传统操作系统进行资源分配和调度的一个独立单位。线程是一个指令执行序列,是操作系统调度的最小单位。一个或多个线程构成进程,构成一个进程的线程之间共享资源。进程和线程之间的最大区别就是线程不能独立拥有资源,进程拥有自己的资源。

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

你对你所写的程序、程序语言都会有更深的本质认识,这样的认识也会让你站的高度完全不同,如果你真的学的好,我想别人看到的是语法,你看到的是背后的实现,这样的感觉真的很好的,不信你试试。有了这么多好处,无论如何都有足够的理由支撑你好好学习了。好处可以归纳为以下几点(1)可以更加容易的理解在一个语言种哪些写法是等价的,哪些是有差异的(2)可以更加客观的比较不同语言的差异(3)更不容易被某个特定语言的宣扬者忽悠(4)学习新的语言是效率也会更高(5)其实从语言a转换到语言b是一个通用的需求,学好编译原理处理此类需求时会更加游刃有余

3.不学有什么损失

(1)你损失了一种解决问题的方法,而且这是强有力的方法。也许你一辈子都无缘写一个C语言的编译器,但如果你一直做程序,一直在寻求高效而通用的解决问题之道,总有一天你的自己设计小尺度的语言。语法分析,语义分析,和代码优化的知识(当然不光是知识啦,还有技巧,思想)能让你终生受益。(2)你难学习到大量优美的算法,并难以欣赏理论和实践在编译器开发中如何美妙地结合在一起。你不可以了解怎样规划,设计,和实现一个大型的系统   (编译器的代码量可不小)。编译原理是计算机科学与技术中一个非常成熟的分支,非常完美地将原理与技术结合了起来,对于理解计算机的本质非常有帮助编译原理的很多设计思想可以在你设计的程序中运用 

4.如何学习编译原理
 
学过编译原理课程的同学应该有体会,各种文法、各种词法语法分析算法,非常消磨人的耐心和兴致;中间代码生成和优化,其实在很多应用场景下并不重要(当然这一块对于“编译原理”很重要);语义分析要处理很多很多细节,特别对于比较复杂的语言;最后的指令生成,可能需要读各种手册,也比较枯燥。(1)至少要学一门汇编。(2)如果真的要更加深入的话,还要知道一些CPU等硬件知识,(我真正对于编译有理解的是如何把SQL语句编译成数据库的执行计划,)

以上是关于编译原理的主要内容,如果未能解决你的问题,请参考以下文章

有没有比龙书通俗易懂的编译原理书籍

编译原理学了有啥用?

浏览网上资源,了解编译原理就是什么?学习编译原理有什么好处?不学有什么损失?如何学习编译原理?

零基础初学者学习编译原理

编译原理 141

我对编译原理的理解