什么是编译型语言和解释型语言。

 计算机无法理解和直接执行高级语言,它只能理解机器语言(也就是0和1),所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。而这种转换的方式有两种:

        编译(compile)解释(interprete)

编译型语言

 

  • 使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。
  • 在编译型语言写的程序执行之前,需要一个专门的编译过程,把源代码编译成机器语言的文件,如exe格式的文件,以后要再运行时,直接使用编译结果即可,如直接运行exe文件。因为只需编译一次,以后运行时不需要编译,所以执行效率较高。
  • 与特定平台相关,一般无法移植到其他平台。

解释型语言

  • 使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。是代码在执行时才被解释器一行行动态翻译和执行,而不是在执行之前就完成翻译。
  • 解释型语言不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只要某一平台提供了相应的解释器即可运行该程序,但解释型语言每次运行都需要将源代码解释称机器码并执行,所以效率较低。
  • 只要平台提供相应的解释器,就可以运行源代码,所以方便源程序移植。

说人话:假设一个读外文书籍的场景,编译型语言就像直接把一整本书翻译成母语,而解释型语言就像请个翻译官在旁边一句一句翻译,其中利弊自行理解。

 

编译型的语言包括:C、C++、Delphi、Pascal、Fortran等。

解释型的语言包括:Java、Basic、javascript、python等。

 

关于java
Java和其他的语言不太一样。因为java针对不同的平台有不同的JVM,实现了跨平台。所以Java语言有一次编译到处运行的说法。

  • 你可以说它是编译型的:因为所有的Java代码都是要编译的,.java不经过编译就什么用都没有。 
  • 你可以说它是解释型的:因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释运行的,那也就算是解释的了。 
  • 但是,现在的JVM为了效率,都有一些JIT优化。它又会把.class的二进制代码编译为本地的代码直接运行,所以,又是编译的。

编译型与解释型_机器码