2018年10月1日编译型语言和解释型语言的区别

计算机语言的发展:

  1. 机器语言
  2. 汇编语言
  3. 高级语言  c++, java

 

计算机不能直接理解高级语言,只能直接理解机器语言(即计算机识别的二进制文件,因为不同的操作系统计算机识别的二进制文件是不同的,因为不同系统的指令用不同的二进制代码来表示),所以c语言进行移植后要重新编译,而解释性语言会根据当前机器的指令集进行相应的机器码解释。

所以任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。

而这种转换方式有两种:

  1. 编译
  2. 解释

所以高级语言也就分为了编译型语言和解释型语言两种:

编译型语言:c, c++, Delphi,java,等

解释性语言: c#, python,Ruby, javascript

 

java语言,java程序首先通过编译器编译成class文件,如果在windows平台上运行,则通过windows平台上的java虚拟机(VM)进行解释。如果运行在linux平台上,则通过linux平台上的java虚拟机进行解释执行。所以说能跨平台,前提是平台上必须要有相匹配的java虚拟机。如果没有java虚拟机,则不能进行跨平台

 

 

 

编译型语言和解释性语言的区别:

编译型语言使用专门的编译器,针对特定的操作系统平台,在编译型语言写的程序执行之前有一个独立的编译过程,把源代码编译从成机器语言的文件,如exe格式的文件,直接使用编译结果即可。如直接运行exe文件,只需要编译一次,以后运行时不需要编译,运行时脱离开发环境,,所以编译型语言执行的效率较高,运行速度快。

编译型语言比解释型语言消耗的内存少。

缺点:

编译器比解释器要难写的多。

编译器在你调试代码的时候提供不了多少帮助,而解释器在你调试代码的时候可以给你非常准确的错误信息。

但是编译结果与特定的平台相关,一般无法移植到其他平台。

程序执行效率高,依赖编译器,跨平台型差。

编译型语言不支持代码中实现安全性,一个编译型的程序可以访问内存中的任何区域,可以对你的PC做任何想做的事情,所以大部分病毒都是使用编译型语言编写的。

 

 

 

 

解释型语言:

在程序执行之前不进行编译而是在程序执行的时候对程序进行翻译.,一行一行地翻译,每次运行运行都需要进行解释,所以运行速度较低

跨平台性较好,在不同的平台上使用不同的解释器就可以对程序进行解释运行。

平台独立性,以及严密的安全性是使解释型语言成为适合互联网和Web应用的理想语言的2个最重要的因素。

缺点是:

解释型语言会占用跟多的内存和CPU资源,因为解释型语言运行的时候,相关的解释器必须首先运行,

解释器如果进行代码优化的话也是可以大幅度提高解释型语言的运行速度的。

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_40994972/article/details/82915814