编译执行和解释执行的简单理解

编译执行 解释执行

  • 编译执行,要先编译再执行,就是使用编译器来将我们的代码全部编译成机器可以识别的二进制代码,然后进行执行。因为先整体进行编译,所以这里会生成编译后的机器代码。比如C,C++等语言都是编译执行的。
  • 解释执行,是使用解释器会将我们的一句句代码解释成机器可以识别的二进制代码来执行,可以认为是,解释一句,执行一句。在这个过程中,不会生成中间文件。比如python,ruby等语言都是解释执行的。
  • 对比发现,编译执行,只需要编译一次,就可以多次运行。而解释执行的话,每运行一次程序,都要经过解释器的解释过程。

编译器 解释器

  • 编译器:在代码运行之前,把所有代码一次性翻译成 目标平台(Windows或者Linux等)的二进制指令,这些指令可以脱离编译器独立运行。
  • 解释器:在代码运行过程中,把代码逐条生成目标平台指令,并执行,然后再处理下一条。


针对优缺点,可以从以下几个方面分析:

  • 启动效率:解释执行不需要进行编译操作,而编译执行,要经过编译过程。所以解释执行启动速度更快。
  • 运行效率:因为编译执行只需要编译一次,以后再运行就无需编译,而解释执行每次都要经过解释过程,所以编译执行效率更高。
  • 内存使用:编译执行需要生成编译后的机器码文件,而解释执行时逐句解释执行,所以解释执行对内存占用更少。
  • 跨平台:因为解释执行每次可以根据不同的平台进行解释,例如java在linux和windows都可以运行,而C语言在windows下编译后的文件,只能在windows下才行执行。

 

java跨平台的理解

首先什么是平台
  CPU处理器与操作系统的整体叫平台,而且Windows操作系统和Linux操作系统可以执行的机器指令是不同的。
什么叫做跨平台
  跨平台指的是一种操作系统下开发的应用,放到另一种操作系统下依然可以运行。

java为什么可以做到跨平台
  因为java也是一种解释型语言,虽然java也有编译器,但是编译器做的工作只是预编译,是把java代码编译成了非纯二进制的字节码,并没有直接编译成某个平台的二进制指令,这样的字节码文件再通过解释器进行解释成某个平台的二进制指令的时候,会比直接把java代码解释成二进制指令要快。

  这也就是我们所说的一次编译(预编译)到处运行(解释执行)的缘故了。

posted @ 2016-06-15 20:57  青衫仗剑  阅读(1293)  评论(0编辑  收藏  举报