计算机不能直接理解除机器语言之外的语言,因此只有把程序员编写的程序翻译成机器语言,计算机才可以执行程序。
将其余语言翻译成机器语言的工具,被称之为:编译器。
编译器的翻译方式有两种:编译和解释。两种方式之间的区别在与翻译的时间点不一样。当编译器以解释方式运行的时候,也称之为解释器。程序员
解释型语言(Interpreted language)是一种编程语言。这种类型的编程语言,会将代码一句一句直接运行,不须要像编译语言同样,通过编译器先编译为机器代码,以后再运行。
这种语言须要利用解释器,在运行期,动态将代码逐句解释为机器代码,或是已经预先编译为机器代码的子程序,以后再运行。编程
编译型语言(Compiled language)是一种以编译器来实现的编程语言。它不像解释语言同样,由解释器将代码一句一句运行,而是以编译器,先将代码编译为机器代码,再加以运行。
通常而言,用编译语言写成的程序,在运行期的运行速度,一般比用解释型语言写的程序快。由于程序在编译期,已经被预先编译成机器代码,能够直接运行,不用像解释型语言同样,还要多一道直译程序。编程语言
字节码(Bytecode)一般指的是已经通过编译,但与特定机器代码无关,须要解释器转义后才能成为机器代码的中间代码。字节码一般不像源码同样能够让人阅读,而是编码后的数值常量、引用、指令等构成的序列。
字节码主要为了实现特定软件运行和软件环境、与硬件环境无关。字节码的实现方式是经过编译器和虚拟机。编译器的做用是将源代码编译成字节码,虚拟机是将字节码转译为能够直接运行的机器代码。工具
理论上,任何变成语言均可以是编译式或者解释型的。他们之间的区别,仅与程序的应用有关。许多编译语言同时采用编译器与解释器来实现,例如Java就是采用混合方式,先将代码编译为字节码,在运行时再进行解释,因此Java是一种先编译后解释的语言。编码