‘壹’ 解释型语言和编译型语言的区别是什么
一、编译型
编译型语言:编译型语言在执行之前要先经过编译过程,编译成为一个可执行的机器语言的文件,比如exe。因为翻译只做一遍,以后都不需要翻译,所以执行效率高。
编译型语言的典型代表:C语言,C++。
编译型语言的优缺点:执行效率高,缺点是跨平台能力弱,不便调试。
二、解释型
解释型语言:解释性语言编写的程序不进行预先编译,以文本方式存储程序代码。执行时才翻译执行。程序每执行一次就要翻译一遍。
优缺点:跨平台能力强,易于调,执行速度慢。
编译型与解释型,两者各有利弊
前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言。
而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB等等。
‘贰’ 急!!!!!!!!解释程序与编译程序有什么区别,各举例!!!!!!
编译程序和解释程序2006年10月16日
星期一
14:26如果一个程序能够把某一种语言程序(称为源语言程序)改造成为另一种语言程序(称为目标语言程序),则这亲戚的程序称为“翻译程序”。如果源语言是“高级语言”(诸如FORTRAN、PASCAL等等),而目标语言是“低级语言”(如汇编语言或机器语言),则这样的翻译程序称为“编译程序”。
现在的计算机尚不能直接执行高级语言程序。执行一个高级语言程序大体上要分两步:第一步,把高级语言的源程序编译成低级语言的目标程序;第二步,运行这个目标程序。编译程序的典型工作过程是:输入源程序,对它进行加工处理,输出目标程序。加工处理是非常复杂的过程,它又可划分成以下几个阶段:源程序→词法分析→语法分析→产生中间代码→优化→目标代码生成→目标程序。
第一阶段是词法分析。承担词法分析任务的程序称为“扫描器”。词法分析的任务是:对构成源程序的字符串进行扫描和分解。第二阶段是语法分析。承担语法分析任务的程序称为“分析器”。语法分析的任务是:根据语法规则,把描扫器所提供的结果分析成各类语法范畴。第三阶段是产生中间代码。承担产生中间代码任务的程序称为“中间代码产生器”。其任务是:按照语法分析器所识别出的语法范畴,产生相应的中间指令。第四阶段是优化,即代码优化。优化的任务是对前阶段产生的中间代码进行加工变换,以便使生成的目标程序,能运行得更快更省(省内存)。第五阶段是目标代码生成。这一阶段的任务是:按照优化后的中间代码和其它有关信息生成目标程序。这种目标程序可以在计算机上直接执行。执行这个目标程序,就可得到一个高级语言程序的结果。
我们知道,所谓翻译程序是这样一种程序,它能够把用甲语言写的程序翻译成与之等价的用乙语言写的程序。这里的甲语言是该翻译程序的源语言,而乙语言则为该翻译程序的目标语言。对于编译程序而言,源程序是被加工的对象,而目标程序是加工后的结果。
在计算机上执行用某种高级语言写的源程序,通常有两种方式:一是编译执行方式,二是解释执行方式。
采用编译执行方式执行源程序时要分两大步:编译和运行。编译中的加工处理过程又可分为五个阶段。
解释执行方式与编译执行方式是不同的,其根本区别在于:编译方式把源程序的执行过程严格地分成两大步:编译和运行。即先把源程序全部翻译成目标代码,然后再运行此目标代码,获执行结果。解释方式则不然。它是按照源程序中语句的动态顺序,直接地逐句进行分析解释,并立即执行。所以,解释程序是这样一种程序,它能够按照源程序中语句的动态顺序,逐句地分析解释并执行,直至源程序结束。
与编译程序一样,解释程序也与源语言及计算机有关。同一台计算机上不同语言的解释程序是不同的;同一种语言在不同的计算机上的解释程序也可能不同。同一种高级语言的源程序,它可以采用解释执行方式,也可以采用编译执行方式。例如,BASIC语言有解释BASIC和编译BASIC之分。前者执行速度慢;后者执行速度快。编译程序和解释程序都属于系统程序。
‘叁’ 编译型语言和解释型语言的区别
编译型语言和解释型语言的区别是:执行效率不同、跨平台能力不同。
我们编写的源代码是人类语言,我们自己能够轻松理解;但是对于计算机硬件(CPU),源代码就是天书,根本无法执行,计算机只能识别某些特定的二进制指令,在程序真正运行之前必须将源代码转换成二进制指令。
所谓的二进制指令,也就是机器码,是CPU能够识别的硬件层面的“代码”,简陋的硬件(比如古老的单片机)只能使用几十个指令,强大的硬件(PC和智能手机)能使用成百上千个指令。
然而,究竟在什么时候将源代码转换成二进制指令呢?不同的编程语言有不同的规定:
有的编程语言要求必须提前将所有源代码一次性转换成二进制指令,也就是生成一个可执行程序(Windows下的.exe),比如C语言、C++、Golang、Pascal(Delphi)、汇编等,这种编程语言称为编译型语言,使用的转换工具称为编译器。
有的编程语言可以一边执行一边转换,需要哪些源代码就转换哪些源代码,不会生成可执行程序,比如Python、JavaScript、PHP、Shell、MATLAB等,这种编程语言称为解释型语言,使用的转换工具称为解释器。
简单理解,编译器就是一个“翻译工具”,类似于将中文翻译成英文、将英文翻译成俄文。但是,翻译源代码是一个复杂的过程,大致包括词法分析、语法分析、语义分析、性能优化、生成可执行文件等五个步骤,期间涉及到复杂的算法和硬件架构。
Java和C#是一种比较奇葩的存在,它们是半编译半解释型的语言,源代码需要先转换成一种中间文件(字节码文件),然后再将中间文件拿到虚拟机中执行。Java引领了这种风潮,它的初衷是在跨平台的同时兼顾执行效率;C#是后来的跟随者,但是C#一直止步于Windows平台,在其它平台鲜有作为。
解释型语言
对于解释型语言,每次执行程序都需要一边转换一边执行,用到哪些源代码就将哪些源代码转换成机器码,用不到的不进行任何处理。每次执行程序时可能使用不同的功能,这个时候需要转换的源代码也不一样。
因为每次执行程序都需要重新转换源代码,所以解释型语言的执行效率天生就低于编译型语言,甚至存在数量级的差距。计算机的一些底层功能,或者关键算法,一般都使用C/C++实现,只有在应用层面(比如网站开发、批处理、小工具等)才会使用解释型语言。
在运行解释型语言的时候,我们始终都需要源代码和解释器,所以说它无法脱离开发环境。
当我们说“下载一个程序(软件)”时,不同类型的语言有不同的含义:
对于编译型语言,我们下载到的是可执行文件,源代码被作者保留,所以编译型语言的程序一般是闭源的。
对于解释型语言,我们下载到的是所有的源代码,因为作者不给源代码就没法运行,所以解释型语言的程序一般是开源的。
相比于编译型语言,解释型语言几乎都能跨平台,“一次编写,到处运行”是真是存在的,而且比比皆是。那么,为什么解释型语言就能快平台呢?
这一切都要归功于解释器!
我们所说的跨平台,是指源代码跨平台,而不是解释器跨平台。解释器用来将源代码转换成机器码,它就是一个可执行程序,是绝对不能跨平台的。
官方需要针对不同的平台开发不同的解释器,这些解释器必须要能够遵守同样的语法,识别同样的函数,完成同样的功能,只有这样,同样的代码在不同平台的执行结果才是相同的。
你看,解释型语言之所以能够跨平台,是因为有了解释器这个中间层。在不同的平台下,解释器会将相同的源代码转换成不同的机器码,解释器帮助我们屏蔽了不同平台之间的差异。
关于Python
Python属于典型的解释型语言,所以运行Python程序需要解释器的支持,只要你在不同的平台安装了不同的解释器,你的代码就可以随时运行,不用担心任何兼容性问题,真正的“一次编写,到处运行”。
Python几乎支持所有常见的平台,比如linux、Windows、Mac OS、Android、FreeBSD、Solaris、PocketPC等,你所写的Python代码无需修改就能在这些平台上正确运行。也就是说,Python的可移植性是很强的。
总结
我们将编译型语言和解释型语言的差异总结为下表:
类型原理优点缺点编译型语言通过专门的编译器,将所有源代码一次性转换成特定平台(Windows、Linux等)执行的机器码(以可执行文件的形式存在)。编译一次后,脱离了编译器也可以运行,并且运行效率高。可移植性差,不够灵活。
解释型语言由专门的解释器,根据需要将部分源代码临时转换成特定平台的机器码。跨平台性好,通过不同的解释器,将相同的源代码解释成不同平台下的机器码。一边执行一边转换,效率很低。
‘肆’ 解释型语言的编译型语言和解释型语言的区别
解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。 编译性语言例如c语言:用c语言开发了程序后,需要通过编译器把程序编译成机器语言(即计算机识别的二进制文件,因为不同的操作系统计算机识别的二进制文件是不同的),所以c语言程序进行移植后,要重新编译。(如windows编译成ext文件,linux编译成erp文件)。
解释性语言,例如java语言,java程序首先通过编译器编译成class文件,如果在windows平台上运行,则通过windows平台上的java虚拟机(VM)进行解释。如果运行在linux平台上,则通过linux平台上的java虚拟机进行解释执行。所以说能跨平台,前提是平台上必须要有相匹配的java虚拟机。如果没有java虚拟机,则不能进行跨平台。
‘伍’ 编译型语言和解释型语言的区别是什么
编译型语言和解释型语言的区别是翻译的时间点不同。
编译型语言:编译型语言在执行之前要先经过编译过程,编译成为一个可执行的机器语言的文件,比如exe。
因为翻译只做一遍,以后都不需要翻译,所以执行效率高。
解释型语言:解释性语言编写的程序不进行预先编译,以文本方式存储程序代码。
执行时才翻译执行程序每执行一次就要翻译一遍。
编译型语言和解释型语言的详细介绍:
对于编译型语言,开发完成以后需要将所有的源代码都转换成可执行程序,比如Windows下的.exe文件,可执行程序里面包含的就是机器码。只要我们拥有可执行程序,就可以随时运行,不用再重新编译了,也就是“一次编译,无限次运行”。
在运行的时候,我们只需要编译生成的可执行程序,不再需要源代码和编译器了,所以说编译型语言可以脱离开发环境运行。
编译型语言一般是不能跨平台的,也就是不能在不同的操作系统之间随意切换。
对于解释型语言,每次执行程序都需要一边转换一边执行,用到哪些源代码就将哪些源代码转换成机器码,用不到的不进行任何处理。
每次执行程序时可能使用不同的功能,这个时候需要转换的源代码也不一样。
因为每次执行程序都需要重新转换源代码,所以解释型语言的执行效率天生就低于编译型语言,甚至存在数量级的差距。
计算机的一些底层功能,或者关键算法,一般都使用C/C++实现,只有在应用层面(比如网站开发、批处理、小工具等)才会使用解释型语言。
‘陆’ 编译性语言,解释性语言和脚本语言的区别
一、翻译和解释的不同 翻译的方式有两种,一个是编译,一个是解释。 两种方式只是翻译的时间不同。编译型语言写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。 解释则不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。
二、脚本语言 ①脚本语言(JavaScript,VBscript等)介于HTML和C,C++,Java,C#等编程语言之间 HTML通常用于格式化和链结文本。而编程语言通常用于向机器发出一系列复杂的指令。 ②脚本语言与编程语言也有很多相似地方,其函数与编程语言比较相象一些,其也涉及到变量。与编程语言之间最大的区别是编程语言的语法和规则更为严格和复杂一些。 ③与程序代码的关系:脚本也是一种语言,其同样由程序代码组成 注:脚本语言一般都有相应的脚本引擎来解释执行。 他们一般需要解释器才能运行。JAVASCRIPT,ASP,PHP,PERL都是脚本语言。C/C++编译、链接后,可形成独立执行的exe文件。 ④脚本语言是一种解释性的语言 例如vbscript,javascript,installshield script等等,它不象c/c++等可以编译成二进制代码,以可执行文件的形式存在。脚本语言不需要编译,可以直接用,由解释器来负责解释,不过每次都需要翻译,执行速度慢。 ⑤脚本语言一般都是以文本形式存在,类似于一种命令 举个例子说,如果你建立了一个程序,叫aaa.exe,可以打开.js为扩展名的文件。
你为.js文件的编写指定了一套规则(语法),当别人编写了.js文件后,你的程序用这种规则来理解编写人的意图,并作出回应.那么,这一套规则就是脚本语言。