编译器和解释器是将程序从编程语言或脚本语言翻译成机器语言的两种不同方式
编译器会一次性处理整个程序,并将其转换为目标代码,通常存储在文件中。目标代码也称为二进制代码,经过链接后可直接由机器执行。编译型编程语言的典型例子有 C 和 C++
解释器则直接执行用编程语言或脚本语言编写的指令,无需事先将其转换为目标代码或机器代码。解释型语言的典型例子有 Perl、Python 和 Matlab
以下是关于解释器和编译器的一些有趣事实:
编译器和解释器都会将源代码(文本文件)转换为记号,二者都可能生成语法树,也都可能生成即时指令。两者的根本区别在于:编译器系统(包括内置或独立的链接器)会生成一个独立的机器代码程序;而解释器系统则直接执行高级语言程序所描述的动作
一旦程序被编译,其源代码就不再适用于运行该程序了。而对于解释型程序,每次运行都需要使用源代码
一般来说,解释型程序的运行速度比编译型程序慢
Java 程序首先被编译成一种中间形式,然后由解释器进行解释执行