编译器和解释器的区别
1. 编译器
编译器是一个解释器,它接受输入,即高级语言,并产生低级语言的输出,即机器或汇编语言。
- 编译器比汇编器更智能,它检查各种限制、范围、错误等。
-
但其程序运行时间较多,占用内存较大。它的速度很慢,因为编译器会遍历整个程序,然后将整个程序翻译成机器代码。
2. 解释器
解释器是将编程语言解释成可理解语言的程序。
- 它一次只解释一个程序语句。
- 解释器通常比编译器小。
下面来看看编译器和解释器之间的区别:
编号 | 编译器 | 解释器 |
---|---|---|
1 | 编译器一口气扫描整个程序。 | 解释器一次翻译一个语句。 |
2 | 由于编译器一次扫描代码,错误(如果有)一起显示在最后。 | 解释器一次扫描一行代码,错误会逐行显示。 |
3 | 编译器的主要优点是它的执行时间。 | 由于解释器执行目标代码的速度很慢,所以最好少用。 |
4 | 编译器将源代码转换为目标代码。 | 解释器不会将源代码转换为目标代码,而是逐行扫描 |
5 | 编译器执行不需要源代码。 | 解释器需要源代码供以后执行。 |
6 | 程序的执行只有在整个程序编译完成后才会执行。 | 解释器在检查或评估每一行之后执行程序。 |
7 | 机器码存储在磁盘存储器中。 | 解释器的机器代码无处存储。 |
8 | 编译器通常花费大量时间来分析源代码。 | 相比之下,解释器花费更少的时间来分析源代码。 |
9 | 编译器效率更高。 | 解释器的效率较低。 |
10 | 编译器CPU利用率更高。 | 解释器的 CPU 利用率较低。 |
11 | 示例:C、C++、C# 等是基于编译器的编程语言。 | 示例:Python、Ruby、Perl、SNOBOL、MATLAB 等都是基于解释器的编程语言。 |