解释程序和编译程序

合集下载

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

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

解释性语言和编译性语言的区别计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。

翻译的方式有两种,一个是编译,一个是解释。

两种方式只是翻译的时间不同。

编译性语言编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。

解释性语言解释则不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性java语言,专门有一个解释器能够直接执行java程序,每个语句都是执行的时候才翻译。

这样解释性语言每执行一次就要翻译一次,效率比较低。

脚本语言脚本语言是解释性语言。

脚本语言一般都有相应的脚本引擎来解释执行。

它们一般需要解释器才能运行。

所以只要系统上有相应语言的解释程序就可以做到跨平台。

脚本语言是一种解释性的语言,例如vbscript,javascript,installshield script等等,它不象c\c++等可以编译成二进制代码,以可执行文件的形式存在。

JAVA语言java语言是解释性语言。

java很特殊,java程序也需要编译,但是没有直接编译称为机器语言,而是编译称为字节码,然后用解释方式执行字节码。

Java 既可以被编译,也可以被解释。

通过编译器,可以把Java程序翻译成一种中间代码 - 称为字节码 - 可以被Java解释器解释的独立于平台的代码。

通过解释器,每条Java字节指令被分析,然后在计算机上运行。

只需编译一次,程序运行时解释执行。

Java字节码使“写一次,到处运行”成为可能。

可以在任何有Java编译器的平台上把Java程序编译成字节码。

这个字节码可以运行在任何Java VM上。

例如,同一个Java程序可以运行在WindowsNT、Solaris和Macintosh上。

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

编译性语言、解释性语言和脚本语言
形用户界面(GUI)。Java API被分组为相关组件的库(包)。
下图描述了一个运行在Java平台上的Java程序,如应用程序(application)或小应用程序(applet)。如图中显示的,JavaAPI和VM把Java程序从硬件依赖中分离出来。
作为一种独立于平台的环境,Java比本地代码慢一些。然而,聪明的编译器、很好地调制过的解释器和即时字节码编译器可以在不牺牲可移植性的条件下使Java的表现接近本地代码。
解释则不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。
什么是脚本语言?
1.脚本语言(JavaScript,VBscript等)介于HTML和C,C++,Java,C#等编程语言之间。
可以把Java字节码看作运行在Java虚拟机(Java VM)上的机器代码指令。每中Java解释器,不管是Java开发工具还是可以运行Java小应用程序的Web浏览器,都是一种Java VM的实例。JavaVM也可以由硬件实现。
Java字节码使“写一次,到处运行”成为可能。可以在任何有Java编译器的平台上把Java程序编译成字节码。这个字节码可以运行在任何Java VM上。例如,同一个Java程序可以运行在WindowsNT、Solaris和Macintosh上。
脚本语言不需要编译,可以直接用,由解释器来负责解释。
5.脚本语言一般都是以文本形式存在,类似于一种命令.
举个例子说,如果你建立了一个程序,叫aaa.exe,可以打开.aa为扩展名的文件.
你为.aa文件的编写指定了一套规则(语法),当别人编写了.aa文件后,你的程序用这种规则来理解编写人的意图,并作出回应.那么,这一套规则就是脚本语言.

编译原理答案(前三章)

编译原理答案(前三章)

编译原理答案(前三章)第 1 章引论第 1 题解释下列术语:答案:(1)编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言,则此翻译程序称为编译程序。

(2)源程序:源语言编写的程序称为源程序。

(3)目标程序:目标语言书写的程序称为目标程序。

(4)编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与目标机无关。

通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符号表管理等工作。

(5)后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表操作。

(6)遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。

第 2 题一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程序的总体结构图。

答案:一个典型的编译程序通常包含 8 个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。

其各部分的主要功能简述如下。

词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机内表达形式。

语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。

语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表中。

中间代码生成程序:按照语义规则,将语法分析程序分析出的语法单位转换成一定形式的中间语言代码,如三元式或四元式。

中间代码优化程序:为了产生高质量的目标代码,对中间代码进行等价变换处理。

目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。

表格管理程序:负责建立、填写和查找等一系列表格工作。

表格的作用是记录源程序的各类信息和编译各阶段的进展情况,编译的每个阶段所需信息多数都从表格中读取,产生的中间结果都记录在相应的表格中。

哈工大编译原理习题及答案

哈工大编译原理习题及答案

1.1何谓源程序、目标程序、翻译程序、编译程序和解释程序?它们之间可能有何种关系?1.2一个典型的编译系统通常由哪些部分组成?各部分的主要功能是什么?1.3选择一种你所熟悉的程序设计语言,试列出此语言中的全部关键字,并通过上机使用该语言以判明这些关键字是否为保留字。

1.4选取一种你所熟悉的语言,试对它进行分析,以找出此语言中的括号、关键字END以及逗号有多少种不同的用途。

1.5试用你常用的一种高级语言编写一短小的程序,上机进行编译和运行,记录下操作步骤和输出信息,如果可能,请卸出中间代码和目标代码。

第一章习题解答1.解:源程序是指以某种程序设计语言所编写的程序。

目标程序是指编译程序(或解释程序)将源程序处理加工而得的另一种语言(目标语言)的程序。

翻译程序是将某种语言翻译成另一种语言的程序的统称。

编译程序与解释程序均为翻译程序,但二者工作方法不同。

解释程序的特点是并不先将高级语言程序全部翻译成机器代码,而是每读入一条高级语言程序语句,就用解释程序将其翻译成一段机器指令并执行之,然后再读入下一条语句继续进行解释、执行,如此反复。

即边解释边执行,翻译所得的指令序列并不保存。

编译程序的特点是先将高级语言程序翻译成机器语言程序,将其保存到指定的空间中,在用户需要时再执行之。

即先翻译、后执行。

2.解:一般说来,编译程序主要由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、信息表管理程序、错误检查处理程序组成。

3.解:C语言的关键字有:auto break case char const continue default do double else enum externfloat for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while。

编译技术名词解释

编译技术名词解释

基本知识编译程序:就是指这样一种程序,通过它能够将用高级语言编写的源程序转换成与之在逻辑上等价的低级语言形式的目标程序解释程序与编译程序的主要区别是:*编译程序将源程序翻译成目标程序后再执行目标程序*解释程序则是逐条读出源程序中的语句并解释执行,即在解释程序的执行过程中并不产生目标程序。

形式化方法是用一整套带有严格规定的符号体系来描述问题的方法。

文法是程序语言的生成系统自动机是程序语言的识别系统推导的每一步都是对当前句型中的最右非终结符用相应产生式的右部进行替换,这样的推导称为最右推导(规范推导)最右推导的逆过程称为最左归约(规范归约)。

符号串集合的正闭包:设A是符号串的集合,则称A+为符号串集A的正闭包。

具体定义如下:A+=A1∪A2∪A3…符号串集合的(星)闭包:设A是符号串的集合,则称A*为符号串集A的星闭包。

具体定义如下:A*=A0∪A1∪A2∪A3…二义性文法:文法G[S]的一个句子如果存在两棵不同的语法树,或者能找到两种不同的最左推导(或最右推导),则称这个文法是二义性的。

先天二义性文法:对于一个二义性文法G[S],如果能找到一个非二义性文法G'[S],使得L(G')=L(G),则该二义性文法的二义性是可以消除的。

如果找不到这样的G'[S],则二义性文法描述的语言为先天二义性的。

推导的每一步都是对当前句型中的最右非终结符用相应产生式的右部进行替换,这样的推导称为最右推导(规范推导)最右推导的逆过程称为最左归约(规范归约)。

符号串长度:|ab|=2,|ε|=0。

四元式,逆波兰,划分基本块,作流图一个句型的最左直接短语称为该句型的句柄。

语法树的某个结点连同它的所有后代组成了一棵子树。

2型文法:文法G的每一个产生式具有下列形式:A→α其中,A∈VN,α∈V*,则称文法G为2型文法或上下文无关文法。

3型文法:文法G的每个产生式具有下列形式:A→α或A→αB其中,A、B∈VN,α∈VT*,则文法G称为3型文法、正规文法或右线性文法在编译方法中:通常用3型文法(正规文法)来描述高级程序语言的词法部分,然后用有限自动机FA来识别高级语言的单词。

编译原理习题答案

编译原理习题答案

编译原理习题答案《编译原理》习题答案:第⼀次:P142、何谓源程序、⽬标程序、翻译程序、汇编程序、编译程序和解释程序?它们之间可能有何种关系?答:被翻译的程序称为源程序;翻译出来的程序称为⽬标程序或⽬标代码;将汇编语⾔和⾼级语⾔编写的程序翻译成等价的机器语⾔,实现此功能的程序称为翻译程序;把汇编语⾔写的源程序翻译成机器语⾔的⽬标程序称为汇编程序;解释程序不是直接将⾼级语⾔的源程序翻译成⽬标程序后再执⾏,⽽是⼀个个语句读⼊源程序,即边解释边执⾏;编译程序是将⾼级语⾔写的源程序翻译成⽬标语⾔的程序。

关系:汇编程序、解释程序和编译程序都是翻译程序,具体见P4 图 1.3。

P143、编译程序是由哪些部分组成?试述各部分的功能?答:编译程序主要由8个部分组成:(1)词法分析程序;(2)语法分析程序;(3)语义分析程序;(4)中间代码⽣成;(5)代码优化程序;(6)⽬标代码⽣成程序;(7)错误检查和处理程序;(8)信息表管理程序。

具体功能见P7-9。

P144、语法分析和语义分析有什么不同?试举例说明。

答:语法分析是将单词流分析如何组成句⼦⽽句⼦⼜如何组成程序,看句⼦乃⾄程序是否符合语法规则,例如:对变量 x:= y 符合语法规则就通过。

语义分析是对语句意义进⾏检查,如赋值语句中x与y类型要⼀致,否则语法分析正确,语义分析则错误。

P155、编译程序分遍由哪些因素决定?答:计算机存储容量⼤⼩;编译程序功能强弱;源语⾔繁简;⽬标程序优化程度;设计和实现编译程序时使⽤⼯具的先进程度以及参加⼈员多少和素质等等。

补充:1、为什么要对单词进⾏内部编码?其原则是什么?对标识符是如何进⾏内部编码的?答:内部编码从“源字符串”中识别单词并确定单词的类型和值;原则:长度统⼀,即刻画了单词本⾝,也刻画了它所具有的属性,以供其它部分分析使⽤。

对于标识符编码,先判断出该单词是标识符,然后在类别编码中写⼊相关信息,以表⽰为标识符,再根据具体标识符的含义编码该单词的值。

计算机组成原理——解释程序和编译程序

计算机组成原理——解释程序和编译程序

计算机组成原理——解释程序和编译程序⼀、定义编译型程序:把做好的源程序全部编译成⼆进制代码的可运⾏程序。

然后,可直接运⾏这个程序。

解释型程序:把做好的源程序翻译⼀句,然后执⾏⼀句,直⾄结束!⼆、区别编译型程序,执⾏速度快、效率⾼;依靠编译器、跨平台性差些。

解释型程序,执⾏速度慢、效率低;依靠解释器、跨平台性好。

编译型的语⾔包括:C、C++、Delphi、Pascal、Fortran解释型的语⾔包括:Java、Basic、javascript、Python三、J a v a那java是编译型的还是解释型的?Java这个语⾔很⾮凡。

⼀、你可以说它是编译型的。

因为所有的Java代码都是要编译的,.java不经过编译就什么⽤都没有。

⼆、你可以说它是解释型的。

因为java代码编译后不能直接运⾏,它是解释运⾏在JVM上的,所以它是解释运⾏的,那也就算是解释的了。

三、但是,现在的JVM为了效率,都有⼀些JIT优化。

它⼜会把.class的⼆进制代码编译为本地的代码直接运⾏,所以,⼜是编译的。

像C、C++ 他们经过⼀次编译之后直接可以编译成操作系统了解的类型,可以直接执⾏的 所以他们是编译型的语⾔。

没有经过第⼆次的处理 ⽽Java不⼀样他⾸先由编译器编译成.class类型的⽂件,这个是java⾃⼰类型的⽂件 然后在通过虚拟机(JVM)从.class⽂件中读⼀⾏解释执⾏⼀⾏,所以他是解释型的语⾔,⽽由于java对于多种不同的操作系统有不同的JVM所以 Java实现了真正意义上的跨平台!请观看下⾯两张图 了解⼀下Java的虚拟机机制:(1)java语⾔的编译-->解释--->执⾏过程(2)java的虚拟机从java来看⽤编译型、解释型来分类编程语⾔已经有点⼒不从⼼了。

高级语言程序的两种处理方式——编译和解释

高级语言程序的两种处理方式——编译和解释

⾼级语⾔程序的两种处理⽅式——编译和解释编译⽅式编译程序的功能就是把⾼级语⾔书写的源程序翻译成与之等价的⽬标程序(汇编语⾔或机器语⾔)。

编译程序的⼯作过程词法分析在词法分析阶段,源程序可以简单的看做是⼀个多⾏的字符串。

词法分析阶段是编译过程的第⼀阶段,主要任务是对源程序从前到后(从左到右)逐个字符进⾏扫描,从中识别出⼀个个“单词”符号。

词法分析程序输出的”单词“常采⽤⼆元组的⽅式,即单词类别和单词⾃⾝的值。

词法分析过程依据的语⾔的此法规则,即描述“单词”结构的规则。

词法分析器⼀般来说有两种⽅法构造:⼿⼯构造和⾃动⽣成。

⼿⼯构造可使⽤状态图进⾏⼯作,⾃动⽣成使⽤确定的有限⾃动机来实现。

词法分析器的功能输⼊源程序,按照构词规则分解成⼀系列单词符号。

单词是语⾔中具有独⽴意义的最⼩单位,包括:(1)关键字是由程序语⾔定义的具有固定意义的标识符。

(2)标识符⽤来表⽰各种名字,如变量名,数组名,过程名等等。

(3)常数常数的类型⼀般有整型、实型、布尔型、⽂字型等。

(4)运算符如+、-、*、/等等。

(5)界符如逗号、分号、括号、等等。

语法分析编译程序的语法分析器以单词符号作为输⼊,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成⼀个符合各类语法的构成规则,按该语⾔使⽤的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的⼀个语法单位。

语法分析的⽅法分为两种:⾃上⽽下分析法和⾃下⽽上分析法。

⾃上⽽下就是从⽂法的开始符号出发,向下推导,推出句⼦。

⽽⾃下⽽上分析法采⽤的是移进归约法,基本思想是:⽤⼀个寄存符号的先进后出栈,把输⼊符号⼀个⼀个地移进栈⾥,当栈顶形成某个产⽣式的⼀个候选式时,即把栈顶的这⼀部分归约成该产⽣式的左邻符号。

语法分析只考虑构成该句⼦的语法单位是否符合语法规则。

例如在分析除法表达式时在语法分析阶段只分析运算符左右两边是否为变量、常量、表达式等,⽽不去管除数是否为0。

解释程序和编译程序

解释程序和编译程序

解释程序和编译程序解释程序和编译程序随着计算机技术的不断发展,编程语言也在不断的演进。

解释程序和编译程序作为编程语言的常用处理工具,深受程序员的喜爱。

但是,对于非专业人士来说,这两种程序的概念可能还不是很清晰。

今天,我们就要来谈一谈什么是解释程序和编译程序,以及它们的实际应用。

一、解释程序是什么?解释程序(Interpreter)是一种能够直接运行源代码的程序。

当你使用一门编程语言编写程序时,语言的解释器就会将源代码逐行地解析,并且立即执行相应的操作。

这样就无需编译,就可以直接运行程序了。

二、编译程序是什么?编译程序(Compiler)是一种能够将源代码转换为机器代码的程序。

编译器首先会将源代码进行分析,然后再将它翻译成与机器硬件兼容的语言。

最后,编译程序将该翻译好的代码输出到一个目标文件中,供计算机读取和执行。

三、解释程序和编译程序的优缺点1. 解释程序的优点解释程序不需要事先进行编译,而是直接解析源代码,立即执行相应的操作。

因此,在开发中,可以进行快速的实验和调试。

同时,解释器的代码更为灵活,对于一些复杂的程序,解释器也能够胜任。

2. 解释程序的缺点解释程序需要在运行时解析源代码,这意味着它每次执行都需要重新解释器。

因此,相对于编译程序来说,它的执行速度会较慢。

同时,对于要运行的代码,解释器会在运行时逐行解释,这也带来了一定的安全风险。

3. 编译程序的优点编译程序在编译时将源代码转化为机器码,虽然编译时间可能会较长,但是一旦编译完成后,程序就可以直接在计算机上运行,非常快速和高效。

同时,由于编译好的代码不需要解释,因此可以提高程序的执行效率。

4. 编译程序的缺点编译程序的代码通常不能灵活的修改,因此对于一些复杂的程序,其开发和调试的难度也会相应提高。

此外,编译程序的编译过程也需要消耗一定的时间和资源。

四、解释程序和编译程序的应用1. 解释程序的应用解释程序适用于一些小型的脚本程序。

比如我们常用的python语言,就是以控制台的形式进行执行,这就需要通过解释来实现。

编程语言-编译型语言与解释型语言及汇编语言

编程语言-编译型语言与解释型语言及汇编语言

编程语⾔-编译型语⾔与解释型语⾔及汇编语⾔编程语⾔编译型语⾔和解释型语⾔计算机只能直接理解机器语⾔,所以使⽤任何⾼级语⾔(⽅便⽤户理解)编写的程序若想被计算机运⾏,都必须将其转换成计算机语⾔,也就是机器码(0,1)。

⾼级语⾔转换成机器语⾔的⽅式有两种:1、编译:将源代码编译成⽬标代码后执⾏,⾼级语⾔---编译---⽬标代码---执⾏--输出2、解释:边读源程序边执⾏。

⾼级语⾔----解释器----输出因此:⾼级语⾔分为编译型语⾔和解释型语⾔编译型语⾔编译型语⾔是:将c/c++之类的编译型语⾔编写好的程序转换成机器语⾔,再经过链接器链接形成⼆进制的可执⾏⽂件。

因为只需编译⼀次,后续需要运⾏该程序时,直接将可执⾏的⼆进制⽂件从硬盘载⼊内存中运⾏编译—>汇编语⾔—>机器语⾔解释型语⾔解释型语⾔:python源码⽆需编译成⼆进制代码,直接从源代码运⾏,运⾏时,python解释器将源码转换为字节码,再由⼀个专门的python 字节码解释器负责解释执⾏字节码(转换成机器语⾔、运⾏)。

总结由于前者⽆需每次执⾏都编译,直接运⾏;后者每次执⾏都需转换成字节码,因此前者运⾏速度快,后者跨平台性好。

前者由于程序执⾏速度快,同等条件下对系统要求较低,因此像开发操作系统、⼤型应⽤程序、数据库系统等时都采⽤它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语⾔,⽽⼀些⽹页脚本、服务器脚本及辅助开发接⼝这样的对速度要求不⾼、对不同系统平台间的兼容性有⼀定要求的程序则通常使⽤解释性语⾔,如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。

关于javaJava和其他的语⾔不太⼀样。

Java程序从源⽂件创建到程序运⾏要经过两⼤步骤:1、java会由编译器进⾏编译⽣成class⽂件(字节码⽂件)---需要先编译2、字节码由java虚拟机解释运⾏,解释执⾏即为⽬标代码⽣成并执⾏。

编译程序和解释程序

编译程序和解释程序

流行编译程序和解释程序如果一个程序能够把某一种语言程序(称为源语言程序)改造成为另一种语言程序(称为目标语言程序),则这亲戚的程序称为“翻译程序”。

如果源语言是“高级语言”(诸如FORTRAN、PASCAL等等),而目标语言是“低级语言”(如汇编语言或机器语言),则这样的翻译程序称为“编译程序”。

现在的计算机尚不能直接执行高级语言程序。

执行一个高级语言程序大体上要分两步:第一步,把高级语言的源程序编译成低级语言的目标程序;第二步,运行这个目标程序。

编译程序的典型工作过程是:输入源程序,对它进行加工处理,输出目标程序。

加工处理是非常复杂的过程,它又可划分成以下几个阶段:源程序→词法分析→语法分析→产生中间代码→优化→目标代码生成→目标程序。

第一阶段是词法分析。

承担词法分析任务的程序称为“扫描器”。

词法分析的任务是:对构成源程序的字符串进行扫描和分解。

第二阶段是语法分析。

承担语法分析任务的程序称为“分析器”。

语法分析的任务是:根据语法规则,把描扫器所提供的结果分析成各类语法范畴。

第三阶段是产生中间代码。

承担产生中间代码任务的程序称为“中间代码产生器”。

其任务是:按照语法分析器所识别出的语法范畴,产生相应的中间指令。

第四阶段是优化,即代码优化。

优化的任务是对前阶段产生的中间代码进行加工变换,以便使生成的目标程序,能运行得更快更省(省内存)。

第五阶段是目标代码生成。

这一阶段的任务是:按照优化后的中间代码和其它有关信息生成目标程序。

这种目标程序可以在计算机上直接执行。

执行这个目标程序,就可得到一个高级语言程序的结果。

我们知道,所谓翻译程序是这样一种程序,它能够把用甲语言写的程序翻译成与之等价的用乙语言写的程序。

这里的甲语言是该翻译程序的源语言,而乙语言则为该翻译程序的目标语言。

对于编译程序而言,源程序是被加工的对象,而目标程序是加工后的结果。

在计算机上执行用某种高级语言写的源程序,通常有两种方式:一是编译执行方式,二是解释执行方式。

plc编译型与解释型

plc编译型与解释型

plc编译型与解释型
PLC(可编程逻辑控制器)通常是用于工业控制系统的设备,它们可以根据预先编写的逻辑程序来控制生产设备、机器人和其他工业设备。

在PLC编程中,有两种主要的编程方式:编译型和解释型。

1. 编译型PLC编程:
-在编译型PLC编程中,程序员首先编写PLC程序,然后使用专门的编译器将程序翻译成机器语言或者类似的中间代码。

这个过程发生在将程序下载到PLC之前。

-一旦程序被编译,PLC可以直接执行编译后的代码,而不需要再次翻译。

这通常使得编译后的程序执行速度更快,因为它们已经被转换成了与特定PLC硬件更加匹配的形式。

2. 解释型PLC编程:
-在解释型PLC编程中,程序员编写的代码不是直接转换成机器语言,而是由PLC的解释器在运行时逐行解释执行。

-这意味着每次执行程序时都需要解释器实时解释代码,因此解释型程序的执行速度可能会比编译型程序慢一些。

-解释型PLC编程通常更加灵活,因为它可以在运行时动态修改程序,而不需要重新编译和下载。

总的来说,编译型PLC编程通常更加高效,因为它可以提供更快的执行速度,而解释型PLC 编程更加灵活,因为它可以在运行时动态修改程序。

选择哪种方式取决于具体的应用场景和需求。

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

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

编译型语⾔与解释型语⾔的区别及各⾃的优缺点计算机编程语⾔种类⾮常多,根据与计算机硬件贴近程度和抽象程度⼤致可分为3类,⾃顶向下分别是:⾼级语⾔(抽象层次更⾼的便于记忆和表⽰的英⽂代码)|汇编语⾔(抽象层次较⾼的对应机器硬件的cpu指令集,英⽂缩的助记符号代码)|机器语⾔(抽像层次最低的由0、1序列所表⽰的机器码)众所周知,计算机底层只能识别(并执⾏)0、1序列的机器码,这表⽰所有的⾼级编程语⾔所编写的代码,最终都要以某种⽅式被转换成能被计算机识别的0、1序列机器码,⽅可被计算机接受并执⾏。

这种将代码转换为机器码的⽅式可分为编译型和解释型这2类:概念:编译型语⾔:把做好的源程序全部编译成⼆进制代码的可运⾏程序。

然后,可直接运⾏这个程序。

解释型语⾔:把做好的源程序翻译⼀句,然后执⾏⼀句,直⾄结束!编译型语⾔编译是指在应⽤源程序执⾏之前,就将程序源代码“翻译”成⽬标代码(机器语⾔),因此其⽬标程序可以脱离其语⾔环境独⽴执⾏,使⽤⽐较⽅便、效率较⾼。

但应⽤程序⼀旦需要修改,必须先修改源代码,再重新编译⽣成新的⽬标⽂件(* .OBJ)才能执⾏,只有⽬标⽂件⽽没有源代码,修改很不⽅便。

现在⼤多数的编程语⾔都是编译型的。

编译程序将源程序翻译成⽬标程序后保存在另⼀个⽂件中,该⽬标程序可脱离编译程序直接在计算机上多次运⾏。

⼤多数软件产品都是以⽬标程序形式发⾏给⽤户的,不仅便于直接运⾏,同时⼜使他⼈难于盗⽤其中的技术C、C++、Fortran、Visual Foxpro、Pascal、Delphi、Ada都是编译实现的。

解释型语⾔解释型语⾔的实现中,翻译器并不产⽣⽬标机器代码,⽽是产⽣易于执⾏的中间代码,这种中间代码与机器代码是不同的,中间代码的解释是由软件⽀持的,不能直接使⽤硬件,软件解释器通常会导致执⾏效率较低。

⽤解释型语⾔编写的程序是由另⼀个可以理解中间代码的解释程序执⾏的。

与编译程序不同的是,解释程序的任务是逐⼀将源程序的语句解释成可执⾏的机器指令,不需要将源程序翻译成⽬标代码后再执⾏。

编译原理所有名词解释

编译原理所有名词解释

第一章编译程序是一种程序,它把高级语言编写的源程序翻译成与之在逻辑上等价的机器语言或汇编语言的目标程序。

一个高级语言程序的执行通常分为两个阶段,即编译阶段和运行阶段。

如果编译生成的目标程序是汇编语言形式,那么在编译与运行阶段之间还要添加一个汇编阶段.解释程序也是一种翻译程序,它将源程序作为输入,一条语句一条语句地读入并解释执行。

解释程序与编译程序的主要区别是:编译程序是将源程序翻译成目标程序后再执行该目标程序,而解释程序则是逐条读出源程序中的语句并解释执行,即在解释程序的执行过程中并不产生目标程序。

编译过程源程序符串进行扫描和分解,个具有独立意义的单词;语法分析的任务的基础上,根据语言的语法规则(号串中识别出各种语法单位并进行语法检查;和中间代码生成阶段的任务来描述这种语义即生成中间代码;优化的任务高效(节省时间和空间)的目标代码;的任务定机器上的机器语言程序或汇编语言程序,实现最终的翻译工作。

自编译:用某种高级语言书写自己的编译程序。

交叉编译:指用A机器上的编译程序来产生可在B机器上运行的目标代码。

自展:首先确定一个非常简单的核心语言L0,然后用机器语言或汇编语言书写出它的编译程序T0:再把语言L0扩充到L1,此时有L0 L1,并用L0编写L1的编译程序T1(即自编译)。

移植:指A机器上的某种高级语言的编译程序稍加改动后能够在B机器上运行.第二章对程序设计语言的描述是从语法、语义和语用3个因素来考虑的。

所谓语法是对语言结构的定义;语义是描述了语言的含义;语用则是从使用的角度去描述语言。

形式化的方法:用一整套带有严格规定的符号体系来描述问题的方法。

标识符:以字母打头的字母数字串字母表:是元素的非空有穷集合。

字符:字母表中的元素称为符号,或称为字符。

可以是字母、数字和其他符号。

符号串:符号的有穷序列。

前缀:指从末尾删除0个或多个符号后得到的符号串.后缀:指从开头删除…。

(同上)符号串的运算:符号串的连接、集合的乘积、符号串的幂运算、集合的幂运算、集合A的正闭包A+与闭包A*形式语言:字母表上所有的字符按照某种规则所组成的集合。

解释程序与编译程序的异同点

解释程序与编译程序的异同点

解释程序与编译程序的异同点1. 程序和编译程序啊,它们就像是一对兄弟。

你看,程序就像是一个有着各种奇思妙想的大脑,而编译程序呢,就是那个把这些奇思妙想转化为实际行动的魔法师!比如说你写了一段代码,这就是程序,然后编译程序把它变成可以运行的东西,就像把你的想法变成了现实,神奇吧?2. 嘿,程序和编译程序的异同点可有意思啦!程序就像个创意宝库,里面装满了各种点子,而编译程序就像是个加工工厂,把这些点子加工成可用的成品。

好比你想做个游戏,程序就是你的游戏创意,编译程序就是把这个创意变成能在电脑上玩的游戏的关键,能明白不?3. 哎呀呀,程序和编译程序呀!程序可以说是原材料,而编译程序就是那个让原材料变成精美成品的工艺。

就像你有一堆零件,程序就是这些零件的设计图,编译程序就是把零件组装起来的过程,这两者结合起来才能有最终的成果呀,懂了吗?4. 哇塞,程序和编译程序的关系可不简单哟!程序就像一个画家脑海中的画面,而编译程序就是那支画笔,把脑海中的画面呈现在画布上。

比如说你想画一幅美丽的风景,程序就是你心中的风景模样,编译程序就是让你能真正画出这幅风景的工具,是不是很奇妙?5. 嘿哟,程序和编译程序呀!程序如同一个菜谱,写满了各种步骤和食材,而编译程序就是那个按照菜谱做菜的厨师。

好比你有个做蛋糕的程序,编译程序就是让你能做出美味蛋糕的关键,这两者少了谁都不行呀,对不对?6. 哈哈,程序和编译程序的区别你知道吗?程序就像一个故事的大纲,充满了情节和发展,而编译程序就是把这个大纲变成一部精彩电影的力量。

比如你有个关于冒险的程序,编译程序就是让你能在屏幕上体验这场冒险的助力,很有趣吧?7. 哟呵,程序和编译程序呀!程序好像是一张设计图,而编译程序就是把这张设计图变成实物的魔法。

就像你设计了一个机器人,程序就是机器人的构造和功能设计,编译程序就是让这个机器人真正动起来的诀窍,这下清楚了吧?8. 哇哦,程序和编译程序的异同很值得琢磨呢!程序像是一个梦想,而编译程序就是让这个梦想照进现实的桥梁。

编译程序和解释程序的区别.doc

编译程序和解释程序的区别.doc

编译程序和解释程序的区别编译和解释的区别是什么?编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)一、低级语言与高级语言最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果。

后来为了方便记忆,就将用0、1序列表示的机器指令都用符号助记,这些与机器指令一一对应的助记符就成了汇编指令,从而诞生了汇编语言。

无论是机器指令还是汇编指令都是面向机器的,统称为低级语言。

因为是针对特定机器的机器指令的助记符,所以汇编语言是无法独立于机器(特定的CPU体系结构)的。

但汇编语言也是要经过翻译成机器指令才能执行的,所以也有将运行在一种机器上的汇编语言翻译成运行在另一种机器上的机器指令的方法,那就是交叉汇编技术。

高级语言是从人类的逻辑思维角度出发的计算机语言,抽象程度大大提高,需要经过编译成特定机器上的目标代码才能执行,一条高级语言的语句往往需要若干条机器指令来完成。

高级语言独立于机器的特性是靠编译器为不同机器生成不同的目标代码(或机器指令)来实现的。

那具体的说,要将高级语言编译到什么程度呢,这又跟编译的技术有关了,既可以编译成直接可执行的目标代码,也可以编译成一种中间表示,然后拿到不同的机器和系统上去执行,这种情况通常又需要支撑环境,比如解释器或虚拟机的支持,Java程序编译成bytecode,再由不同平台上的虚拟机执行就是很好的例子。

所以,说高级语言不依赖于机器,是指在不同的机器或平台上高级语言的程序本身不变,而通过编译器编译得到的目标代码去适应不同的机器。

从这个意义上来说,通过交叉汇编,一些汇编程序也可以获得不同机器之间的可移植性,但这种途径获得的移植性远远不如高级语言来的方便和实用性大。

编译和解释的区别

编译和解释的区别

编译和解释的区别
计算机语⾔发展
(⾼级语⾔分很多种类,在此只写这两种)
计算机不能直接理解⾼级语⾔,⽐如C,Java,JavaScript,只能理解机器语⾔,所以要把⾼级语⾔翻译为机器语⾔。

翻译的⽅式有两种:编译和解释
1.编译
编译程序:将源程序转换为⽬标代码,再让计算机执⾏这个⽬标代码
编译器:将某种编程语⾔写成的源代码(⼀般为⾼级语⾔C,Java等),转换成另⼀种编程语⾔(多为汇编语⾔或机器代码)
编译器⼯作流程:源代码-预处理器-编译器-汇编程序-⽬标代码-连接器-可执⾏⽂件
2.解释
解释程序:直接执⾏源程序,翻译⼀句,执⾏⼀句,不产⽣⽬标代码。

不需要编译,可以直接使⽤,由解释器来负责解释
解释器:把⾼级编程语⾔⼀⾏⼀⾏直接转译运⾏
⼀点基础知识:
汇编语⾔:⽤于单⽚机,微处理器或其他可编程器件的低级语⾔,在不同的设备中,汇编语⾔对应着不同的机器语⾔指令集。

⼀种汇编语⾔只能⽤于⼀种计算机系统结构,可移植性差。

汇编过程:使⽤汇编语⾔编写的源代码,需要通过使⽤相应的汇编程序将他们转换成可执⾏的机器代码,这⼀过程被称为汇编过程。

汇编程序:将汇编语⾔的程序转换为机器语⾔的⽬标程序。

语言处理程序

语言处理程序

语⾔处理程序在软考的复习过程中,⼀直认为语⾔处理程序⾮常抽象,在做题的时候也是错⾮常多(尽管这部分题不多哈)。

在进京赶考之前总结⼀下⾃⼰薄弱的地⽅。

语⾔处理程序就是能够将⾼级语⾔或汇编语⾔编写的程序翻译成某种机器语⾔程序,使程序能够在计算机上执⾏。

也就是处理⼀些本不能够直接执⾏在计算机上的语⾔的⼀些程序,⽽这些语⾔就叫做源程序,经过语⾔处理程序处理成计算机可直接执⾏的程序。

假设感到⾮常抽象的话请看下图:源程序主要就是汇编语⾔或⾼级语⾔编写的。

语⾔处理程序主要分为汇编程序、编译程序和解释程序三种。

分别说明下⾯三种语⾔处理程序的原理:1、汇编语⾔汇编语⾔是为特定的计算机或计算机系统设计的⾯向机器的符号化的程序设计语⾔。

⽤汇编语⾔编写的程序称为汇编语⾔程序。

汇编程序的project是将汇编语⾔所编写的源程序翻译成机器指令程序。

2、编译程序和解释程序编译程序的解释程序的⼯作原理基本同样。

仅仅是在执⾏⽤户程序时有所差别。

它们都是对某种⾼级语⾔编写的源程序进⾏翻译。

详细例如以下:详细编译程序的⼯作原理:详细解释程序的⼯作原理:中间代码的级别不同⼀时候也会有影响。

级别越⾼就会越接近于机器语⾔。

⼆者差别:解释程序不产⽣源程序的⽬标程序。

⾼级语⾔编译与解释⽅式的⽐較:(1)效率:编译⽐解释⽅式可能取得更⾼的效率。

由于源程序仅仅须要被编译程序翻译⼀次,就能够多次执⾏。

尽管编译程序除了对源程序进⾏语法和语义分析外。

还要⽣成源程序的⽬标代码并进⾏优化。

(2)灵活性。

解释⽅式⽐编译⽅式更灵活。

因为解释程序须要重复检查源程序。

(3)可移植性。

解释器⼀般也是⽤某种程序设计语⾔编写的,因此仅仅要对解释器进⾏⼜⼀次编译,就能够使解释器执⾏在不同的环境中。

蒋立源_《编译原理》_西北工业大学出版社_第3版课后答案

蒋立源_《编译原理》_西北工业大学出版社_第3版课后答案

《编译原理》课后习题答案第一章1.解:源程序是指以某种程序设计语言所编写的程序。

目标程序是指编译程序(或解释程序)将源程序处理加工而得的另一种语言(目标语言)的程序。

翻译程序是将某种语言翻译成另一种语言的程序的统称。

编译程序与解释程序均为翻译程序,但二者工作方法不同。

解释程序的特点是并不先将高级语言程序全部翻译成机器代码,而是每读入一条高级语言程序语句,就用解释程序将其翻译成一段机器指令并执行之,然后再读入下一条语句继续进行解释、执行,如此反复。

即边解释边执行,翻译所得的指令序列并不保存。

编译程序的特点是先将高级语言程序翻译成机器语言程序,将其保存到指定的空间中,在用户需要时再执行之。

即先翻译、后执行。

2.解:一般说来,编译程序主要由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、信息表管理程序、错误检查处理程序组成。

3.解:C语言的关键字有:auto break case char const continuedefault do double else enum extern float for goto if int longregister return short signed sizeof static struct switch typedef union unsigned void volatile while。

上述关键字在C语言中均为保留字。

4.解:C语言中括号有三种:{},[],()。

其中,{}用于语句括号;[]用于数组;()用于函数(定义与调用)及表达式运算(改变运算顺序)。

C语言中无END关键字。

逗号在C语言中被视为分隔符和运算符,作为优先级最低的运算符,运算结果为逗号表达式最右侧子表达式的值(如:(a,b,c,d)的值为d)。

5.略第二章1.(1)答:26*26=676(2)答:26*10=260(3)答:{a,b,c,...,z,a0,a1,...,a9,aa,...,az,...,zz,a00,a01,...,zzz},共26+26*36+26*36*36=34658个2.构造产生下列语言的文法(1){anbn|n≥0}解:对应文法为G(S) = ({S},{a,b},{ S→ε| aSb },S)(2){anbmcp|n,m,p≥0}解:对应文法为G(S) = ({S,X,Y},{a,b,c},{S→aS|X,X→bX|Y,Y→cY|ε},S)(3){an # bn|n≥0}∪{cn # dn|n≥0}解:对应文法为G(S) = ({S,X,Y},{a,b,c,d,#}, {S→X, S→Y,X→aXb|#,Y →cYd|# },S)(4){w#wr# | w?{0,1}*,wr是w的逆序排列}解:G(S) = ({S,W,R},{0,1,#}, {S→W#, W→0W0|1W1|# },S)(5)任何不是以0打头的所有奇整数所组成的集合解:G(S) = ({S,A,B,I,J},{-,0,1,2,3,4,5,6,7,8,9},{S→J|IBJ,B→0B|IB|e, I→J|2|4|6|8, Jà1|3|5|7|9},S)(6)所有偶数个0和偶数个1所组成的符号串集合解:对应文法为 S→0A|1B|e,A→0S|1C B→0C|1S C→1A|0B3.描述语言特点(1)S→10S0S→aAA→bAA→a解:本文法构成的语言集为:L(G)={(10)nabma0n|n, m≥0}。

解释程序和编译程序

解释程序和编译程序

程序与编译程序程序和编译程序是计算机科学中非常基础和重要的概念。

程序是一系列指导计算机执行特定任务的指令集合,而编译程序是将高级程序代码转换为计算机可以理解和执行的机器代码的工具。

什么是程序?程序是为实现特定功能而编写的一系列指令的集合。

可以将程序看作是将输入数据转换为输出结果的一种方式。

程序以特定的编程语言编写,每种编程语言都有自己的语法和规则。

常见的编程语言有C、C++、Java、Python等。

一个程序可以完成各种各样的任务,例如计算机游戏、日常生活中使用的软件、网站应用程序、操作系统等。

不同类型的程序有不同的目标和要求,但它们都遵循了计算机的运行原理。

程序的基本结构包括输入、处理和输出。

输入可以是用户提供的数据,也可以是来自其他程序或外部设备的数据。

处理是程序对输入数据进行计算和操作的过程。

输出则是处理结果的展示或将结果传递给其他程序或设备。

程序的执行方式程序可以通过两种主要的执行方式来运行,分别是解释执行和编译执行。

解释执行解释执行是将程序代码逐行翻译并立即执行的方式。

解释执行的过程不需要事先将程序代码转换为机器代码,而是由解释器将每条指令翻译为机器代码并执行。

解释执行的优点是编写和调试简单,可以实时查看程序的输出结果。

此外,解释器可以根据不同的计算机环境进行优化,以提高程序的执行效率。

但是,由于每次执行程序都需要进行翻译,因此解释执行的速度通常较慢。

常见的解释执行的编程语言有Python、JavaScript、Shell脚本等。

编译执行编译执行是在程序执行之前将程序代码转换为机器代码的方式。

编译过程由编译器完成,将高级程序代码翻译成计算机可以直接执行的二进制机器代码。

生成的机器代码可以直接在计算机硬件上运行,因此执行速度较快。

编译执行的优点是程序运行效率高,适用于对执行效率要求较高的场景。

但是,编译执行需要事先生成机器代码,因此编写、调试和修改程序相对较困难。

常见的编译执行的编程语言有C、C++、Java等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

A、解释程序所谓解释程序是高级语言翻译程序的一种,它将源语言(如BASIC)书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。

就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。

这种工作方式非常适合于人通过终端设备与计算机会话,如在终端上打一条命令或语句,解释程序就立即将此语句解释成一条或几条指令并提交硬件立即执行且将执行结果反映到终端,从终端把命令打入后,就能立即得到计算结果。

这的确是很方便的,很适合于一些小型机的计算问题。

但解释程序执行速度很慢,例如源程序中出现循环,则解释程序也重复地解释并提交执行这一组语句,这就造成很大浪费。

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

编译程序工作时,先分析,后综合,从而得到目标程序。

所谓分析,是指词法分析和语法分析;所谓综合是指代码优化,存储分配和代码生成。

为了完成这些分析综合任务,编译程序采用对源程序进行多次扫描的办法,每次扫描集中完成一项或几项任务,也有一项任务分散到几次扫描去完成的。

下面举一个四遍扫描的例子:第一遍扫描做词法分析;第二遍扫描做语法分析;第三遍扫描做代码优化和存储分配;第四遍扫描做代码生成。

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

在实际应用中,对于需要经常使用的有大量计算的大型题目,采用招待速度较快的编译型的高级语言较好,虽然编译过程本身较为复杂,但一旦形成目标文件,以后可多次使用。

相反,对于小型题目或计算简单不太费机时的题目,则多选用解释型的会话式高级语言,如BASIC,这样可以大大缩短编程及调试的时
B、编译程序指最终生成可脱离原编辑环境运行的程序,如EXE、COM、DLL 等,解释程序指必须运行在编程环境或与编程环境相当的解释文件的支持;编译程序通常最终为二进制文件,可以被计算机直接识别并运行,解释程序不能直接被计算机识别只能是从程序中读一行被相关的解释环境“翻译”一行再执行一行的运行,所以无论速度还是效率还是运行所需要的环境都比编译程序差很多,像ASP、PHP、BASIC等都是解释程序。

相关文档
最新文档