编译原理第一章学习(课后习题解答)
编译原理
第一章 引论
1.1
练习
1.编译器和解释器之间的区别是什么?
首先,编译器是一个软件系统或者说是一个程序,解释器是语言处理器。其次,编译器是把程序翻译成能被计算机执行的形式并报告翻译过程中发现的源程序的错误,解释器是直接利用用户提供的输入执行源程序中指定的操作。
2.编译器相对于解释器的优点是什么?解释器相对于编译器的优点是什么?
在把用户输入映射成为输出的过程中,由一个编译器产生的机器语言目标程序通常比一个解释器快很多。然而,解释器的错误诊断效果比编译器更好,因为它是逐句翻译源程序。
3.在一个语言处理系统中,编译器产生汇编语言而不是机器语言的好处是什么?
方便优化。容易输出和调试。
方便优化,因为,编译器也是工具,也是机器,毕竟是机器生成的程序,不可以非常完美的,而汇编是机器指令的助记符,一个汇编指令就对应一条机器指令(特殊指令除外)调试起来肯定会比机器指令方便的方便,这样优化起来也方便
4.把一种高级语言编译成为另一种高级语言的编译器称为源到源的翻译器。编译器使用C语言作为目标语言有什么好处?
C语言较为普及,各种平台上都有对其实现的支持;相对于汇编语言,C的抽象更为高级,分离了更多具体的实现细节,可以避免在代码在移植时由于具体机器架构,指令集的不同等其他问题而受到影响。
5.描述一下汇编器所要完成的一些任务
汇编器的主要任务是把汇编语言翻译成机器语言。
1.3节练习
指出下面的术语:
1)强制式的 2)声明式的 3)冯·诺伊曼式的 4)面向对象的
5)函数式的(非冯) 6)第三代 7)第四代 8)脚本语言
可以被用于描述下面的哪些语言:
1)C 2)C++ 3)Cobol 4)Fortran 5)Java
6)Lisp 7)ML 8)Perl 9)Python 10)VB
答:1)C :第三代、强制式的、冯·诺依曼式的、
2)C++ :第三代、强制式的、面向对象的、冯·诺依曼式的
3)Cobol:第三代
4)Fortran:第三代、冯·诺依曼式的、
5)Java:第三代、强制式的、面向对象的、冯·诺依曼式的
6)Lisp :第三代、函数式的
7)ML :函数式的、声明式的
8)Perl :脚本语言
9)Python : 脚本语言
10)VB:面向对象的