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