在计算机程序设计中,当人类可读的源代码被编译器解析时,编译器通常会将源命令转换成一系列指令,这些指令不是完全的本机代码,而是可以进一步处理的,由编译器或其他软件工具优化或编译的。所产生的文件包含被称为中间语言的...
在计算机程序设计中,当人类可读的源代码被编译器解析时,编译器通常会将源命令转换成一系列指令,这些指令不是完全的本机代码,而是可以进一步处理的,由编译器或其他软件工具优化或编译的。所产生的文件包含被称为中间语言的指令,因为编译器所使用的语言对更大的操作系统来说既没有意义,也不是程序员首先用来编写代码的语言,相反,它是一种在程序的编写和执行之间起桥梁作用的语言。中间语言有时被用来允许编译器进行非常精确的优化,以便程序更有效地运行,但它也可以用来生成输出文件,这些文件可以在不同的、不兼容的系统之间移植语言的实际语法可以类似于机器代码或其他类型的非人类可读字节码,或者该语言可以只是一种现有的跨平台计算机编程语言。

人工控制计算机当用于编译器优化时,语言编译器将源代码文件中的每个语句分解为中间语言,一个人类可读的编程语句可以分解成几十个机器语言指令,因此中间语言创建了一个抽象级别,编译器可以使用该抽象级别来识别代码中可以进行优化的区域,而无需首先将代码绑定到任何本机实现或库一旦完成,中间代码文件就可以进一步编译以生成本机二进制文件,或者可以通过另一个程序(称为解释器)运行,该程序将根据需要将代码编译为本机指令来执行代码一些语言,如Java®,使用中间语言创建经过优化但也可移植到其他计算机系统的编译文件。这种代码有时被称为字节码,类似于机器代码或汇编语言。字节码以独立于平台的方式存储在文件中,这意味着它可以传输到任何计算机系统或设备它可以运行解释器。一旦字节码在系统上,它既可以作为解释程序运行,也可以编译为在目标系统上本机运行。在某些情况下,一种计算机语言的设计目的是使编程更容易达到特定的目的,例如交互式web应用程序,但设计者不希望为不同的系统包括自定义的编译器、解释器或插件。在这些情况下,编译器的中间语言可以是已经建立了跨平台解释器的现有语言。在这种情况下,生成的中间语言是人类可读的。作为中间语言的计算机编程语言的一个例子是JavaScript®,它的优势在于,截至2011年,它几乎可以在任何平台上的任何web浏览器中运行。