编译器和解释器是将程序从编程或脚本语言翻译成机器语言的两种不同方式。
编译器获取整个程序并将其转换为通常存储在文件中的目标代码。目标代码也称为二进制代码,链接后可以直接由机器执行。编译型编程语言的例子是 C 和 C++。
解释器直接执行以编程或脚本语言编写的指令,而无需事先将它们转换为目标代码或机器代码。解释型语言的例子有 Perl、 Python和 Matlab。
以下是一些关于解释器和编译器的有趣事实。
1)编译器和解释器都将源代码(文本文件)转换为标记,两者都可以生成解析树,并且都可以生成即时指令。基本区别在于编译器系统,包括(内置或单独的)链接器,生成独立的机器代码程序,而解释器系统则执行由高级程序描述的操作。
2) 一旦程序被编译,它的源代码对于运行代码是没有用的。对于解释型程序,每次运行程序都需要源代码。
3) 一般来说,解释程序比编译程序运行得慢。
4) Java程序首先被编译成中间形式,然后由解释器进行解释。
参考:
http://en.wikipedia.org/wiki/Interpreter_%28computing%29
http://en.wikipedia.org/wiki/Compiler