`
pleasetojava
  • 浏览: 722568 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

解释和编译的区别

阅读更多




计算机并不能直接地接受和执行用高级语言编写的源程序,源程序在输入计算机时,通过"翻译程序"翻译成机器语言形式的目标程序,计算机才能识别和执行。这种"翻译"通常有两种方式,即编译方式和解释方式。编译方式是指利用事先编好的一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用户将高级语言编写的源程序输入计算机后,编译程序便把源程序整个地翻译成用机器语言表示的与之等价的目标程序,然后计算机再执行该目标程序,以完成源程序要处理的运算并取得结果。解释方式是指源程序进入计算机后,解释程序边扫描边解释,逐句输入逐句翻译,计算机一句句执行,并不产生目标程序。如PASCAL、 FORTRAN、COBOL等高级语言执行编译方式;BASIC语言则以执行解释方式为主;而PASCAL、C语言是能书写编译程序的高级程序设计语言。


编译程序、解释程序、汇编程序是3种语言处理程序。其区别主要为:汇编程序(为低级服务)是将汇编语言书写的源程序翻译成由机器指令和其他信息组成的目标程序。解释程序(为高级服务)直接执行源程序或源程序的内部形式,一般是读一句源程序,翻译一句,执行一句,不产生目标代码,如BASIC解释程序。编译程序(为高级服务)是将高级语言书写的源程序翻译成与之等价的低级语言的目标程序。编译程序与解释程序最大的区别之一在于前者生成目标代码,而后者不生成;此外,前者产生的目标代码的执行速度比解释程序的执行速度要快;后者人机交互好,适于初学者使用。用COBOL、FORTRAN等语言编写的程序考虑到执行速度一般都是编译执行。

解释程序

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

编译程序

这是一类很重要的语言处理程序,它把高级语言(如FORTRAN、COBOL、Pascal、C等)源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机去执行这个目标程序,得到计算结果。编译程序工作时,先分析,后综合,从而得到目标程序。所谓分析,是指词法分析和语法分析;所谓综合是指代码优化,存储分配和代码生成。为了完成这些分析综合任务,编译程序采用对源程序进行多次扫描的办法,每次扫描集中完成一项或几项任务,也有一项任务分散到几次扫描去完成的。下面举一个四遍扫描的例子:第一遍扫描做词法分析;第二遍扫描做语法分析;第三遍扫描做代码优化和存储分配;第四遍扫描做代码生成。

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

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

相关推荐

    解释语言与编译语言的区别

    总的来说,理解解释语言和编译语言的区别有助于我们更好地选择和使用编程工具,从而提高开发效率和程序性能。在职业生涯中,不断学习和提升相关技能,适应各种语言和工具,是成为优秀IT专业人士的关键。

    编译性语言、解释性语言和脚本语言

    计算机编程语言根据其工作原理和执行机制,主要分为编译性语言、解释性语言和脚本语言。这三种类型的编程语言各有特点,适用于不同的场景。 编译性语言,如C、C++、Objective-C和Fortran,它们的源代码首先需要通过...

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

    是有关于编译执行和解释执行的区别,适用于想了解这两种编译方式的区别的同学看一下

    编译原理—编译概论——翻译程序与解释程序

    本资源提供了编译原理的概论,涵盖了翻译程序和解释程序的基本概念、编译程序的结构和过程、词法分析、语法分析、语义分析和中间代码生成等内容。 编译原理是计算机科学中的一门重要课程,涉及到计算机程序设计语言...

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

    解释执行和编译执行的主要区别在于: 1. 执行效率:编译执行通常比解释执行效率更高,因为编译器生成了可直接由机器运行的目标程序,而解释执行则需要每次都对代码进行实时翻译。 2. 调试难度:解释执行更容易进行...

    编译原理编译

    编译原理是计算机科学领域中的一门重要课程,...以上知识点涵盖了编译原理的基本概念、编译程序的组成部分、工作原理、与解释程序的区别、开发技术以及错误处理等方面的内容,为理解和学习编译原理打下了坚实的基础。

    编译原理 编译程序

    **编译原理与C++实现递归下降分析** 在计算机科学中,编译原理是研究计算机语言翻译过程的一门学科,它...通过深入学习和理解这部分代码,开发者可以掌握编译器构造的核心技术,为编写自己的编译器或解释器打下基础。

    编译原理试卷 编译原理期末试卷

    - LR(0)项目集冲突:理解LR解析器的构造,包括移进-归约冲突和归约-归约冲突的区别。 3. **NFA确定化**: - 非确定有限自动机(NFA)到确定有限自动机(DFA)的转换,这是词法分析阶段的重要内容,涉及到状态转换...

    2019-2020人大作业,编译原理

    编译原理 本资源摘要信息主要介绍了编译原理的基础知识,包括编译程序的...本资源摘要信息介绍了编译原理的基础知识,包括编译程序的五个部分、编译程序的工作过程、编译程序和解释程序的区别、语言处理程序的类型等。

    编译原理试题与解析

    1. 解释程序和编译程序的区别在于是否生成目标程序。 2. 编译过程的五个阶段是词法分析、语法分析、语义分析、代码优化和目标代码生成。 3. 编译程序的输入是源程序,输出为目标代码生成的程序。 4. 编译程序将源...

    编译原理课后习题答案

    - **编译程序**和**解释程序**的主要区别在于前者仅负责翻译而不执行,后者则直接或边翻译边执行源程序。 #### 第4题 错误信息定位 1. **else没有匹配的if:** - 阶段:语法分析。 - 原因:缺少匹配的`if`语句...

    lua反编译工具

    本文将详细介绍Lua反编译工具的相关知识点,包括Lua 5.1和5.2版本。 1. Lua编译器与解释器: Lua提供了两个主要的命令行工具:`lua.exe`和`luac.exe`。`lua.exe`是Lua的解释器,用于执行未编译的Lua源代码;而`lua...

    编译原理课后习题答案 清华大学

    #### 第3题 翻译程序、编译程序和解释程序的区别 **知识点解析:** - **翻译程序:** 泛指任何能够将一种语言的程序转换为另一种语言的程序。 - **编译程序:** 特别指将高级语言源程序转换为低级语言(如汇编...

    编译和解释的区别是什么

    编译和解释是两种不同的计算机程序代码转换方式,它们对于程序执行的效率、资源占用以及可移植性等方面有不同的影响。 首先,编译是将源程序(如C、C++、Fortran等编译型语言编写的代码)一次性翻译成特定机器可以...

    Visual Basic程序反编译

    现代编程语言可以分为两大类:解释型语言和编译型语言。这两种类型的语言在执行方式上有本质的区别。 - **解释型语言**:这类语言的程序代码在执行时由解释器逐行读取并立即执行,无需预先编译成机器码。这种方式...

    程序编译与解释.pdf

    #### 二、编译与解释的区别 - **编译**: - **定义**:编译是一种将高级语言源代码一次性转换成目标代码(通常是机器语言)的过程。 - **特点**: - 需要一个编译阶段,在此阶段将源代码转化为可执行文件(如exe...

    编译原理课后习题

    编译程序和解释程序的主要区别在于:编译程序生成了目标程序,而解释程序直接执行源代码或中间代码。 #### 第4题 错误信息的来源 1. **else没有匹配的if**:这通常是由语法分析程序检测到的错误,因为这涉及到控制...

Global site tag (gtag.js) - Google Analytics