解释型语言与编译型语言有什么不同

来源:互联网 发布:js倒计时器 天时分秒 编辑:程序博客网 时间:2024/06/10 23:13

因为一段话而引发的血案:“解释语言的工作被限制在内存里,而编译行语言不会限制。也就是说在系统支持的情况下编译行语言是无所不能的”。所以才去查了资料。

编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了。


解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢。

C/C++ 等都是编译型语言,而Java,C#等都是解释型语言。

虽然Java程序在运行之前也有一个编译过程,但是并不是将程序编译成机器语言,而是将它编译成字节码(可以理解为一个中间语言)。
在运行的时候,由JVM将字节码再翻译成机器语言。
注:脚本语言一般都有相应的脚本引擎来解释执行。 他们一般需要解释器才能运行。JAVASCRIPT,ASP,PHP,PERL,Nuva都是脚本语言。C/C++编译、链接后,可形成独立执行的exe文件。

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

脚本语言不需要编译,可以直接用,由解释器来负责解释。 

5.脚本语言一般都是以文本形式存在,类似于一种命令. 

举个例子说,如果你建立了一个程序,叫aaa.exe,可以打开.aa为扩展名的文件. 

你为.aa文件的编写指定了一套规则(语法),当别人编写了.aa文件后,你的程序用这种规则来理解编写人的意图,并作出回应.那么,这一套规则就是脚本语言

----------------------华丽丽的分割线------------------------

总之,简而言之呢,借鉴下知乎上比较形象生动但貌似不太合理的一个比喻:编译就相当于做好一桌子菜再开吃;而解释呢就像涮火锅一样,边涮边吃,所以速度会慢。

再引用知乎上的一段回答:

所说的编译型语言和解释型语言的本质都是解释执行的,虽然没有什么错误,但是感觉有些像是诡辩。编译型和解释型的语言之所以可以说相同,是因为这些语言从文本形式的代码到最终产生的动作,所经历的过程是一样的。

一种高级编程语言,从源代码开始,一直到被执行生成相应的动作,大约经历了这几个步骤:
                  编译                                                   执行
源代码====>(中间表示形式====>)基本操作序列====>生成最终动作

编译型和解释型语言的不同指出只是在于,这些过程发生的时机不一样。
编译型语言的代表是C,源代码被编译之后生成中间文件(.o和.obj),然后用连接器和汇编器生成机器码,也就是一系列基本操作的序列,机器码最后被执行生成最终动作。解释型的语言以Ruby为例,也经历了这些步骤,不同的是,C语言会把那些从源代码“变”来的基本操作序列(保存)起来,而Ruby直接将这些生成的基本操作序列(Ruby虚拟机)指令丢给Ruby虚拟机执行然后产生动作了。


作者:余天升
链接:https://www.zhihu.com/question/21486706/answer/18422107
来源:知乎


原创粉丝点击