通俗易懂教你理解:编译性语言、解释性语言和脚本语言
计算机是不能理解高级语言,当然也就不能直接执行高级语言了。计算机只能直接理解机器语言,所以任何语言,都必须将其翻译成机器语言,计算机才能运行高级语言编写的程序。
一个外国MM让一个中国宅男帮她做一些事情。两人语言不通,于是找了个翻译。
美国MM用英文从头至尾将事情告诉了翻译,先做什么,再做什么,做完什么之后具体又怎么做。翻译听完后,再将它翻译成中文告诉中国宅男。宅男听完,明白是怎么回事,马上就去做了。这个是编译语言的执行。
还有一种情况,美国MM把要做什么用英文告诉翻译,翻译将它翻译成中文告诉中国宅男。美国MM用英文说一句,翻译官就翻译一句,中国宅男就做一步。一边翻译一边做,很快,要做的事就完成了。这个是解释语言的执行。
为博得美国MM一笑,中国宅男借助各种神器出色的完成了任务。然后,在中国宅男种种幻想中,悲剧了。美国MM说了,其他的不变,但是休闲活动不要看什么喜羊羊了,要吃冰糖葫芦。
1,第一种情况,编译执行。这中国宅男死宅,你让他其他的不变,只是改变一下休闲活动。这极品听不进去,说了,俺们中华好男儿讲究一气呵成,一条道走到黑。您给我把这任务从头至尾再给翻译一边,虽然费些时间,可俺的执行效率高哇,就是浪费点时间嘛。翻译官一看,让他直接改了这休闲活动没戏,得,咽了口唾沫,咱们从头来过。
2,第二种情况,解释执行。还是美国MM翻译说一句,翻译官翻译一句,中国宅男做一件。只不过改了休闲活动嘛,没事,以前怎么解决,现在就怎么解决。时间和效率受不了多大影响。在休闲活动发生改变后(源代码改变),
第一种与第二种相比,很明显,第一种翻译官将美国MM的话翻译成宅男能听懂的中文时,从头至尾再翻译这个时间开销是很大的。但是换成用第二种方式解决,只需要重新翻译与第一次不同的地方就可以了。 所以,在源代码修改后,解释语言由于是解释一句执行一句,执行速度没有受到影响,但是编译语言需要重新编译,执行速度必然会受到影响。
一、编译型语言
定义:指用专用的编译器,针对特定的操作平台(操作系统)将某种高级语言源代码一次性翻译成可被硬件平台直接运行的二进制机器码(具有操作数,指令、及相应的格式),这个过程叫做编译;编译好的可执行性文件(.exe),可在相对应的平台上运行(移植性差,但运行效率高)。
有些程序编译后,还需要把其他编译好的,可能需要组装两个以上的目标代码生成最终的可执行性文件,称为链接(可实现对低层次代码的复用)。
典型的编译型语言有,我们非常熟悉的C语言、C++等。
另外,Java语言是一门很特殊的语言,Java程序需要进行编译步骤,但并不会生成特定平台的二进制机器码,它编译后生成的是一种与平台无关的字节码文件(*.class)(移植性好的原因),这种字节码自然不能被平台直接执行,运行时需要由解释器解释成相应平台的二进制机器码文件;大多数人认为Java是一种编译型语言,但我们说Java即是编译型语言,也是解释型语言也并没有错。
二、解释型语言
定义:指用专门解释器对源程序逐行解释成特定平台的机器码并立即执行的语言;相当于把编译型语言的编译链接过程混到一起同时完成的。
解释型语言执行效率较低,且不能脱离解释器运行,但它的跨平台型比较容易,只需提供特定解释器即可。
常见的解释型语言有,笔者正在学习的Python(同时是脚本语言)与Ruby等。
三、脚本语言
定义:为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。
它的特点是:程序代码即是最终的执行文件,只是这个过程需要解释器的参与,所以说脚本语言与解释型语言有很大的联系。脚本语言通常是被解释执行的,而且程序是文本文件。
典型的脚本语言有,JavaScript,Python等。