编译和解释的优缺点 编译和解释的区别

  编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;。而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。那编译和解释有什么区别呢?下面爱华网小编给大家分享一下编译和解释的区别。

  一、低级语言与高级语言

  最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果。后来为了方便记忆,就将用0、1序列表示的机器指令都用符号助记,这些与机器指令一一对应的助记符就成了汇编指令,从而诞生了汇编语言。无论是机器指令还是汇编指令都是面向机器的,统称为低级语言。因为是针对特定机器的机器指令的助记符,所以汇编语言是无法独立于机器(特定的CPU体系结构)的。但汇编语言也是要经过翻译成机器指令才能执行的,所以也有将运行在一种机器上的汇编语言翻译成运行在另一种机器上的机器指令的方法,那就是交叉汇编技术。

  高级语言是从人类的逻辑思维角度出发的计算机语言,抽象程度大大提高,需要经过编译成特定机器上的目标代码才能执行,一条高级语言的语句往往需要若干条机器指令来完成。高级语言独立于机器的特性是靠编译器为不同机器生成不同的目标代码(或机器指令)来实现的。那具体的说,要将高级语言编译到什么程度呢,这又跟编译的技术有关了,既可以编译成直接可执行的目标代码,也可以编译成一种中间表示,然后拿到不同的机器和系统上去执行,这种情况通常又需要支撑环境,比如解释器或虚拟机的支持,Java程序编译成bytecode,再由不同平台上的虚拟机执行就是很好的例子。所以,说高级语言不依赖于机器,是指在不同的机器或平台上高级语言的程序本身不变,而通过编译器编译得到的目标代码去适应不同的机器。从这个意义上来说,通过交叉汇编,一些汇编程序也可以获得不同机器之间的可移植性,但这种途径获得的移植性远远不如高级语言来的方便和实用性大。

  二、编译

  编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的。

  三、解释

  解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。这只是表象,二者背后的最大区别是:对解释执行而言,程序运行时的控制权在解释器而不在用户程序;对编译执行而言,运行时的控制权在用户程序。

  四、解释的特性

  解释具有良好的动态特性和可移植性,比如在解释执行时可以动态改变变量的类型、对程序进行修改以及在程序中插入良好的调试诊断信息等,而将解释器移植到不同的系统上,则程序不用改动就可以在移植了解释器的系统上运行。同时解释器也有很大的缺点,比如执行效率低,占用空间大,因为不仅要给用户程序分配空间,解释器本身也占用了宝贵的系统资源。

  五、编译和解释的区别

  编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;

  而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.

编译和解释的优缺点 编译和解释的区别

  编辑:用编辑软件(EDIT.EXE或记事本)形成源程序(.ASM),如:LX.ASM;

  汇编:用汇编程序(MASM.EXE)对源程序进行汇编,形成目标文件(.OBJ),格式如下:MASM LX.ASM;

  连接:用连接程序(LINK.EXE)对目标程序进行连接,形成可执行文件(.EXE),格式如下:LINK LX.OBJ;

  执行:如果结果在屏幕在显示,则直接执行可执行文件。

  调试:用调试程序(DEBUG.EXE)对可执行文件进行调试,格式如下:DEBUG LX.EXE

  1. 在具体计算机上实现一种语言,首先要确定的是表示该语言语义解释的虚拟计算机,一个关键的问题是程序执行时的基本表示是实际计算机上的机器语言还是虚拟机的机器语言。这个问题决定了语言的实现。根据这个问题的回答,可以将程序设计语言划分为两大类:编译型语言和解释型语言。

  2. 由编译型语言编写的源程序需要经过编译、汇编和链接才能输出目标代码,然后机器执行目标代码,得出运行结果,目标代码由机器指令组成,一般不能独立运行,因为源程序中可能使用了某些汇编程序不能解释引用的库函数,而库函数代码又不在源程序中,此时还需要链接程序完成外部引用和目标模块调用的链接任务,最后输出可执行代码。C、C++、Fortran、Pascal、Ada都是编译实现的。

  3. 解释型语言的实现中,翻译器并不产生目标机器代码,而是产生易于执行的中间代码,这种中间代码与机器代码是不同的,中间代码的解释是由软件支持的,不能直接使用硬件,软件解释器通常会导致执行效率较低。用解释型语言编写的程序是由另一个可以理解中间代码的解释程序执行的。与编译程序不同的是,解释程序的任务是逐一将源程序的语句解释成可执行的机器指令,不需要将源程序翻译成目标代码后再执行。对于解释型Basic语言,需要一个专门的解释器解释执行 Basic程序,每条语言只有在执行才被翻译。这种解释型语言每执行一次就翻译一次,因而效率低下。

  4. Java很特殊,Java程序也需要编译,但是没有直接编译称为机器语言,而是编译称为字节码,然后在Java虚拟机上用解释方式执行字节码。Python 的也采用了类似Java的编译模式,先将Python程序编译成Python字节码,然后由一个专门的Python字节码解释器负责解释执行字节码。

  

爱华网本文地址 » http://www.aihuau.com/a/4302571/874624873.html

更多阅读

独生子女的优缺点 独生子女的好处和坏处

今天我就想来谈谈和大家来谈谈现在独生子女的优缺点。独生子女的弱点:独生子女存在的弱点已经使家长 们担心,这种弱点一方面来自“独生”本身,另一方面来自于“独生”导致家长出现的教养态度偏差和教育方式不当。这两方面的原因使一些

榉木和榆木家具的优缺点 榉木家具与榆木家具

榉木和榆木家具的优缺点榉木为江南特有的木材,属于高大乔木,榉树可以长到30多米,直径可达1.5米,纹理清晰,木材质地均匀,色调柔和,流畅。榉木纹理层层叠叠,比榆木更丰富,苏州工匠称其为“宝塔纹”,榉木木质也比一般木材坚硬,但不算硬木。在明清

层次分析法的优缺点 网上批发的优缺点分析和操作技巧

网批的优缺点     网批的优点:方便,省力;快捷,省时省心;容易找到,在附近没有批发城的地方,网批自然成了首选。店主:图片很精美,看见就很想要几件回来,并且网批的价钱好像比批发城里的价钱的还要便宜~     网批的缺点:买家不能现场

合约机和裸机的区别 合约机的优缺点,买合约机好还是裸机好?

合约机的优缺点,买合约机好还是裸机好?――简介首先给大家扫一下盲:什么是合约机?合约机是指通讯运营商与手机生产商合伙定制的手机类型,用户使用该手机必须和指定运营商签约,而且要一次性交清费用(大多以存话费的名义交清)。而且,一般来说合

声明:《编译和解释的优缺点 编译和解释的区别》为网友樱花草分享!如侵犯到您的合法权益请联系我们删除