能够完成从一种语言到另一种语言的保语义变换的软件称为翻译器,这两种语言分别称为该翻译器的源语言和目标语言。编译器是一种翻译器,它的特点是目标语言比源语言低级。

解释器是不同于编译器的另一类语言处理器。解释器不像编译器那样通过翻译来生成目标程序,而是直接执行源程序所指定的运算。解释器也有和编译器类似的地方,它也需要对源程序进行词法分析、语法分析和语义分析等,这样它才有可能知道源程序指定了一些什么运算。

解释执行的效率比编译器生成的机器代码的执行效率低。对于编译方式来说,对源程序的词法分析、语法分析和语义分析只要进行一次。而对于解释执行来说,每次执行到源程序的某个语句,都要对它进行一次词法分析、语法分析和语义分析,确定了这个语句的含义后,才能执行它指定的运算。显然,反复分析循环体降低了解释执行的效率,所以解释执行要寻找一种适合于解释的中间语言,以缩短反复分析源程序需要的时间。

在 20 世纪 80 年代的 BASIC 语言阶段,解释器的功能是这样介绍的:它将高级语言的源程序翻译成一种中间语言程序,然后对中间语言程序进行解释执行。在那个年代,解释器的两个功能(编译和解释)是合在一个程序中的,因此这个程序被统称为解释器。进入 Java 语言年代,解释器的上述两个功能分离在两个程序中,前一个程序称编译器,它把 Java 语言的程序翻译成一种中间语言程序,这种中间语言叫做字节码;后一个程序称解释器,它对字节码程序进行解释执行。