C C++ 编译 解释的区别

转载 2011年01月19日 12:45:00

计算机并不能直接地接受和执行用高级语言编写的源程序,源程序在输入计算机时,通过"翻译程序"翻译成机器语言形式的目标程序,计算机才能识别和执行。这种"翻译"通常有两种方式,即编译方式和解释方式。

 

编译方式是指利用事先编好的一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用户将高级语言编写的源程序输入计算机后,编译程序便把源程序整个地翻译成用机器语言表示的与之等价的目标程序,然后计算机再执行该目标程序,以完成源程序要处理的运算并取得结果。

 

解释方式是指源程序进入计算机后,解释程序边扫描边解释,逐句输入逐句翻译,计算机一句句执行,并不产生目标程序。如PASCAL、 FORTRAN、COBOL等高级语言执行编译方式;BASIC语言则以执行解释方式为主;而PASCAL、C语言是能书写编译程序的高级程序设计语言。

 


编译程序、解释程序、汇编程序是3种语言处理程序。其区别主要为:汇编程序(为低级服务)是将汇编语言书写的源程序翻译成由机器指令和其他信息组成的目标程序。解释程序(为高级服务)直接执行源程序或源程序的内部形式,一般是读一句源程序,翻译一句,执行一句,不产生目标代码,如BASIC解释程序。

编译程序(为高级服务)是将高级语言书写的源程序翻译成与之等价的低级语言的目标程序。编译程序与解释程序最大的区别之一在于前者生成目标代码,而后者不生成;此外,前者产生的目标代码的执行速度比解释程序的执行速度要快;后者人机交互好,适于初学者使用。用COBOL、FORTRAN等语言编写的程序考虑到执行速度一般都是编译执行。

 

 

解释程序

所谓解释程序是高级语言翻译程序的一种,它将源语言(如BASIC)书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。这种工作方式非常适合于人通过终端设备与计算机会话,如在终端上打一条命令或语句,解释程序就立即将此语句解释成一条或几条指令并提交硬件立即执行且将执行结果反映到终端,从终端把命令打入后,就能立即得到计算结果。这的确是很方便的,很适合于一些小型机的计算问题。但解释程序执行速度很慢,例如源程序中出现循环,则解释程序也重复地解释并提交执行这一组语句,这就造成很大浪费。

 

 

编译程序

这是一类很重要的语言处理程序,它把高级语言(如 FORTRAN、COBOL、Pascal、C等)源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机去执行这个目标程序,得到计算结果。编译程序工作时,先分析,后综合,从而得到目标程序。

所谓分析,是指词法分析和语法分析;

所谓综合,是指代码优化,存储分配和代码生成。

为了完成这些分析综合任务,编译程序采用对源程序进行多次扫描的办法,每次扫描集中完成一项或几项任务,也有一项任务分散到几次扫描去完成的。下面举一个四遍扫描的例子:第一遍扫描做词法分析;第二遍扫描做语法分析;第三遍扫描做代码优化和存储分配;第四遍扫描做代码生成。

 

值得一提的是,大多数的编译程序直接产生机器语言的目标代码,形成可执行的目标文件,但也有的编译程序则先产生汇编语言一级的符号代码文件,然后再调用汇编程序进行翻译加工处理,最后产生可执行的机器语言目标文件。

 

在实际应用中,对于需要经常使用的有大量计算的大型题目,采用招待速度较快的编译型的高级语言较好,虽然编译过程本身较为复杂,但一旦形成目标文件,以后可多次使用。相反,对于小型题目或计算简单不太费机时的题目,则多选用解释型的会话式高级语言,如BASIC,这样可以大大缩短编程及调试的时间。

 

解释型语言跟编译型语言的区别

一:各种语言 二:总结 (1)编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了。 (2)解释型语言,是在运行的时候将程序翻译成机器语言,...
  • lixingying567
  • lixingying567
  • 2015年04月02日 18:36
  • 2377

const在C和C++编译中的区别(实现机制)

const在C和C++编译器中的实现机制,怎么实现只读,为什么不可修改。
  • chengshuguang
  • chengshuguang
  • 2013年11月20日 23:19
  • 1039

辨别程序是C编译的还是C++编译的方式

如果编译器在编译cpp文件那么__cplusplus   就会被定义   如果是一个c文件在被编译那么__STDC__就会被定义   __STDC__是预定义宏.当它被定义后,编译器将按照ansic...
  • cherish_2012
  • cherish_2012
  • 2014年03月14日 21:28
  • 3531

解释和编译的区别

计算机并不能直接地接受和执行用高级语言编写的源程序,源程序在输入计算机时,通过"翻译程序"翻译成机器语言形式的目标程序,计算机才能识别和执行。这种"翻译"通常有两种方式,即编译方式和解释方式。编译方式...
  • phla_han
  • phla_han
  • 2014年09月17日 12:16
  • 848

编译器和解释器的区别与联系

菜鸟经常将编译器和解释器弄混淆,无奈之下,于是向高手请教。   高手说: “   解释器是一条一条的解释执行源语言。比如php,postscritp,javascript就是典型的解释性...
  • sinat_24520925
  • sinat_24520925
  • 2015年04月08日 10:01
  • 848

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

解释型语言和编译型语言的区别 首先,我们编程都是用的高级语言(写汇编和机器语言的大牛们除外),计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级...
  • u012875880
  • u012875880
  • 2013年11月24日 17:58
  • 19051

解释执行和编译执行的区别

一:编译器 编译器是一种特殊的程序,它可以把以特定编程语言写成的程序变为机器可以运行的机器码。我们把一个程序写好,这时我们利用的环境是文本编辑器,这时我们把程序称为源程序,在此以后程序员可以运...
  • Tomsheng321
  • Tomsheng321
  • 2016年03月11日 16:51
  • 702

C++初探:c和c++的区别简述,以及编译器对代码做了什么?

准备将自己之前学过的C++再重新温习,顺便和大家交流,因为我知道分享是学习过程中对自己或他人很重要的一点,所以我来了! 该博文为本作者原创,转载请注明出处! 1、C和C++的区别(之前C语言基础较...
  • qq_25123049
  • qq_25123049
  • 2016年05月26日 08:17
  • 960

高级语言中的解释方式和编译方式的区别

高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可 将它们分为两类: 1.解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由 相应语言的解释器“翻...
  • u011394362
  • u011394362
  • 2013年09月22日 19:39
  • 2081

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

计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二种是解释。 概念 编译...
  • qq_28119401
  • qq_28119401
  • 2016年04月19日 15:30
  • 523
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C C++ 编译 解释的区别
举报原因:
原因补充:

(最多只允许输入30个字)