解释性语言和编译性语言都指的是什么?有什么不同?

2020-07-08 09:43发布

2条回答
HUANG
2020-07-08 14:36

计算机不能直接理解高级语言,计算机只能理解机器语言。采用高级语言写的程序代码若想要被计算机执行,必须先将高级语言翻译成机器语言。编译器翻译的方式有两种:一个是编译,一个是解释。因此高级语言也被对应分成了解释性语言和编译性语言。两种方式之间的区别在于翻译时间点的不同。当编译器以解释方式运行的时候,也称之为解释器。

解释型语言:就是所谓的脚本语言,在程序运行前不需要进行编译,而是在运行的时候,先解释再运行,解释一句执行一句,现有的解释性语言都是采用的逐行解释一句,执行一句这样的方式来构建的。这样解释性语言每执行一次就要翻译一次,效率比较低,因此解释性语言是低效率的。此外,解释性语言是非独立的,非独立性体现在运行结果需要依赖于环境。常见的解释性语言如JavaScript、Python、Java、Matlab、Perl

编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。即先一次性的将代码翻译成机器语言,形成一个执行文件。运行时就直接调用执行文件,因此效率比较高。常见的编译性语言:C、Object-C、c++、c#


解释型语言和编译性语言各有利弊:

  一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释型语言。

  编译型语言由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它

编译型语言不如解释型语言跨平台性好

  编译性语言例如c语言,用c语言开发了程序后,需要通过编译器把程序编译成机器语言(即计算机识别的二进制文件,因为不同的操作系统计算机识别的二进制文件是不同的),所以c语言程序进行移植后,要重新编译。(如windows编译成ext文件,linux编译成erp文件)。

  解释性语言,例如java语言,java程序首先通过编译器编译成class文件,如果在windows平台上运行,则通过windows平台上的java虚拟机(VM)进行解释。如果运行在linux平台上,则通过linux平台上的java虚拟机进行解释执行。所以说能跨平台,前提是平台上必须要有相匹配的java虚拟机。如果没有java虚拟机,则不能进行跨平台。


一周热门 更多>