编译型语言与解释型语言的区别及各自的优缺点

计算机编程语言种类很是多,根据与计算机硬件贴近程度和抽象程度大体可分为3类,自顶向下分别是 :python

高级语言(抽象层次更高的便于记忆和表示的英文代码) 
            |
汇编语言(抽象层次较高的对应机器硬件的cpu指令集,英文缩的助记符号代码)       
            |
机器语言(抽像层次最低的由0、1序列所表示的机器码)

众所周知,计算机底层只能识别(并执行)0、1序列的机器码,这表示全部的高级编程语言所编写的代码,最终都要以某种方式被转换成能被计算机识别的0、1序列机器码,方可被计算机接受并执行。这种将代码转换为机器码的方式可分为编译型和解释型这2类:程序员

<h2>概念:</h2>编程

编译型语言:把作好的源程序所有编译成二进制代码的可运行程序。而后,可直接运行这个程序。安全

解释型语言:把作好的源程序翻译一句,而后执行一句,直至结束!ruby

###编译型语言 编译是指在应用源程序执行以前,就将程序源代码“翻译”成目标代码(机器语言),所以其目标程序能够脱离其语言环境独立执行,使用比较方便、效率 较高。但应用程序一旦须要修改,必须先修改源代码,再从新编译生成新的目标文件(* .OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。如今大多数的编程语言都是编译型的。编译程序将源程序翻译成目标程序后保存在另外一个文件中,该目标程序可脱离编译程序直接在计算机上屡次运行。大多数软件产品都是以目标程序形式发行给用户的,不只便于直接运行,同时又使他人难于盗用其中的技术C、C++、Fortran、Visual Foxpro、Pascal、Delphi、Ada都是编译实现的。编程语言

###解释型语言 解释型语言的实现中,翻译器并不产生目标机器代码,而是产生易于执行的中间代码,这种中间代码与机器代码是不一样的,中间代码的解释是由软件支持的,不能直接使用硬件,软件解释器一般会致使执行效率较低。用解释型语言编写的程序是由另外一个能够理解中间代码的解释程序执行的。与编译程序不一样的是,解释程序的任务是逐一将源程序的语句解释成可执行的机器指令,不须要将源程序翻译成目标代码后再执行。释程序的优势是当语句出现语法错误时,能够当即引发程序员注意,而程序员在程序开发期间就能进行校订。对于解释型Basic语言,须要一个专门的解释器解释执行 Basic程序,每条语言只有在执行才被翻译。这种解释型语言每执行一次就翻译一次,于是效率低下。通常地,动态语言都是解释型的,如python、Tcl、Perl、Ruby、VBScript、 JavaScript等。 ###混合型 Java很特殊,Java程序也须要编译,可是没有直接编译称为机器语言,而是编译称为字节码,而后在Java虚拟机上用解释方式执行字节码。Python 的也采用了相似Java的编译模式,先将Python程序编译成Python字节码,而后由一个专门的Python字节码解释器负责解释执行字节码。(Java虚拟机对字节码的执行至关于模拟一个cpu,而ruby1.8–在虚拟机还未出现前–是经过解释成语法树执行。)函数

###区别 ####编译型语言####fetch

一、 编译型语言最大的优点之一就是其执行速度。用C/C++编写的程序运行速度要比用Java编写的相同程序快30%-70%。优化

二、编译型程序比解释型程序消耗的内存更少。翻译

三、不利的一面——编译器比解释器要难写得多。

四、编译器在调试程序时提供不了多少帮助——有多少次在你的C语言代码中遇到一个“空指针异常”时,须要花费好几个小时来明确错误到底在代码中的什么位置。

五、可执行的编译型代码要比相同的解释型代码大许多。例如,C/C++的.exe文件要比一样功能的Java的.class文件大不少。

六、编译型程序是面向特定平台的于是是平台依赖的。

七、编译型程序不支持代码中实现安全性——例如,一个编译型的程序能够访问内存的任何区域,而且能够对你的PC作它想作的任何事情(大部分病毒是使用编译型语言编写的)

八、因为松散的安全性和平台依赖性,编译型语言不太适合开发因特网或者基于Web的应用。

####解释型语言 一、解释型语言提供了极佳的调试支持。一名Java程序员只须要几分钟就能够定位并修复一个“空指针异常”,由于Java运行环境不只指明了异常的性质,并且给出了异常发生位置具体的行号和函数调用顺序(著名的堆栈跟踪信息)。这样的便利是编译型语言所没法提供的。

二、另外一个优点是解释器比编译器容易实现

三、解释型语言最大的优点之一是其平台独立性

四、解释型语言也能够保证高度的安全性——这是互联网应用迫切须要的

五、中间语言代码的大小比编译型可执行代码小不少

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

七、解释型语言存在一些严重的缺点。解释型应用占用更多的内存和CPU资源。这是因为,为了运行解释型语言编写的程序,相关的解释器必须首先运行。解释器是复杂的,智能的,大量消耗资源的程序而且它们会占用不少CPU周期和内存。

八、因为解释型应用的decode-fetch-execute(解码-抓取-执行)的周期,它们比编译型程序慢不少。

九、解释器也会作不少代码优化,运行时安全性检查;这些额外的步骤占用了更多的资源并进一步下降了应用的运行速度。

相关文章
相关标签/搜索