编译和解释区别

来源:互联网 发布:linux数据库安装 编辑:程序博客网 时间:2024/05/29 08:36

编译是把源代码全部转换为可以直接执行的指令,从而程序运行速度比较快。
解释是把当前行的代码转换为可以直接执行的指令,执行完毕,就要解释下一句代码,边解释,边执行,速度慢

一、特征


      1.编译型就是编译的时候直接编译成机器可以执行的(exe.dll.ocx)程序文件,编译与执行是分 开的,但不能跨平台。例如delphi,c++,asm,C是直接编译成exe文件并且带条件编译功能。


      2.解释型语言就是编译成中间代码程序,在执行时靠翻译程序一起执行,可以跨平台,中间代码  (jre,.net)翻译程序只要各平台一个,就可以。.net的framework,java的jre就是这类翻 译程序,这些中间层充当的翻译和解释语言的功能。


      3.Vb(解释型)对代码进行逐行扫描解释执行,它需要中间转换程序,性能不如C等编译性语言。 VB可以调试运行,执行的流程可以向前向后执行,这为调试程序提供了很大方便,遗憾是多线 程的不支持。
 
二、区别


      二者背后的最大区别是:对解释执行而言,程序运行时的控制权在解释器(jre,.net)而不在用户 程序;对编译执行而言,运行时的控制权在用户程序。
 
三、总结
       编译型:优点:运行速度快,代码效率高,编译后的程序不可修改,保密性较好


           缺点:代码需要经过编译方可运行,可移植性差,只能在兼容的操作系统上运行


       解释型:优点:可移植性较好,只要有解释环境,可在不同的操作系统上运行。比如在解释执行时可以  动态改变变量的类型、对程序进行修改以及在程序中插入良好的调试诊断信息等,而将解释器移植到不同的系统上, 则程序不用改动就可以在移植了解释器的系统上运行。


           缺点:运行需要解释环境,运行起来比编译的要慢,占用资源也要多一些,代码效率低,代码修改后就可运行,不需要编译过程.因为不仅要给用户程序分配空间, 解释器本身也占用了宝贵的系统资源。其封装底层代码,程序严重依赖平台。 不能同C++,Vb那样直接操作底层。

0 0
原创粉丝点击