主要参考文章:【解释型语言和编译型语言的区别】(CSDN)
原文链接:https://blog.csdn.net/zhu_xun/article/details/16921413
解释型语言和编译型语言
如java ,C ,C++之类的语言都属于高级语言,计算机不能直接理解,所以在运行程序时需要首先将高级语言编译成计算机能理解的机器语言。解释型语言和编译型语言的不同就体现在对这个过程的处理上。
解释型语言
-
概述
解释性语言是在程序运行时才进行翻译,在程序执行时,专门会有一个编译器将程序语句翻译成机器语言,所以解释性语言每执行一次就要编译一次。
-
优点
- 部分解释器能在程序运行时动态优化代码,使性能甚至超过编译型语言
- 程序首次启动和运行的速度比编译型语言快
- 无中间文件的生成,相对于编译型语言占用存储空间比较少
-
缺点
- 相对与编译型语言,执行效率比较低
-
适用场景
- 一些网页脚本文件,服务器脚本及辅助开发接口等一些对速度要求不高对不同平台兼容性有要求的平台
- 对系统首次启动运行的时间有要求的系统
编译型语言
-
概述
编译型语言执行之前,需要一个专门的编译过程,通过编译系统,将高级语言翻译成机器语言,同时生成可执行的二进制文件,比如windows下的exe文件。以后就可以直接运行可执行的二进制文件而不需要重新生成。
-
优点
- 因为在第一次运行的时候生成了二进制文件,所以在以后运行的时候不需要再去重新编译,所以编译型语言程序的执行效率比较高。
-
缺点
- 不适合对程序占用空间有严格要求的系统,比如嵌入式系统。
- 首次运行相对于编译型语言时间太长。
-
使用场景
- 因为运行时间短,同等条件下对系统运行效率要求不高,因此可适用于一些操作系统,大型应用程序,数据库系统都使用编译型语言。
总结:
解释器与编译器两者各有优势:当程序需要迅速启动和执行的时候,解释器可以首先发挥作用,省去编译的时间,立即执行。在程序运行后,随着时间的推移,编译器逐渐发挥作用,把越来越多的代码编译成本地代码之后,可以获取更高的执行效率。 当程序运行环境中内存资源限制较大(如部分嵌入式系统中),可以使用解释执行节约内存,反之可以使用编译执行来提升效率。------《深入理解Java虚拟机》
随着硬件的升级和设计思想的变革,编译型和解释性语言的区别也越来越笼统,主要体现在一些新型的语言上,加之解释型的特性使得主要的编译器厂商都会注重其性能进行优化,所以解释型语言超过编译型语言也是必然的。