`

编译型和解释型语言的由来和区别

 
阅读更多

 

由来: 计算机底层只能识别(并执行)0、1序列的机器码,因此所有的语言要被计算机执行,
最终都要以某种方式被转换成能被计算机识别的0、1序列机器码。这个翻译过程按照
执行时间不同,分为编译型和解释型。

 

区别:

 

编译型语言:
a)程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件.
b)以后要运行的话就不用重新翻译,直接执行编译后的文件 .exe即可
c)翻译成机器码只做一次,运行时不需要翻译,导致程序执行效率高。
d)编译阶段即可发现常见的语法或者链接等错误,帮助程序员排查出可能潜在的语法、语义和类型转换错误。
e)生成的可执行文件,是相对与本机机器指令集的,如果移植到不同机器指令集的机器上,自然不能执行,即可移植性不好(非跨平台) 
f)对机器和和跨平台性的要求不高,多用在开发操作系统、大型应用程序、数据库程序系统。

g)常见语言有:  C/C++、Pascal/Object Pascal(Delphi)

 

 


解释型语言:
a)程序运行时由翻译器将高级语言代码翻译成易于执行的中间代码(不是机器码)
b)解释器(例如浏览器、虚拟机)逐一将该中间代码解释成机器码并执行
c)不生成可执行文件,每次运行都需要做一下转换工作,然后再执行,效率低
d)代码中的错误必须直到运行阶段方可发现.
e)依靠解释器(eg:jvm)的功劳,最终生成的机器码会适配当前机器指令集,因此移植性好(跨平台)
f)对机器有一定的配置要求,如果内存较小,运行程序每次都需要使用解释器解释执行必然耗费资源过多。 多用在服务器脚本及辅助开发接口等需要一定跨平台兼容性的程序。

g)常见语言有:  Java、JavaScript、VBScript、Perl、Python、Ruby

 

 

后记: 

随着硬件的升级和设计思想的变革,编译型和解释型语言越来越笼统,主要体现在一些新兴的高级语言上,而解释型语言的自身特点也使得编译器厂商愿意花费更多成本来优化解释器,解释型语言性能会超过编译型语言的趋势也会日渐明显

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics