为什么要有编译型和解释型
计算机不能直接理解高级语言(Java、C、C++等),只能理解和运行机器语言(机器码,即二进制码)。必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。
翻译的方式有两种,一个是编译,一个是解释。
编译和解释都有翻译的意思,但是他们两个是不同的,最主要的区别就是翻译的时机不同。前者的源程序在编写完成后就进行翻译,之后即可在该平台运行;后者是在运行期间才翻译。所以前者运行速度快,后者跨平台性好。
1 编译型 (Compile)
用编译型语言写的程序执行之前,需要一个专门的编译过程,针对特定的平台,使用专门的编译器,把高级语言翻译成机器语言,以后直接运行而不需要再编译了,所以一般编译型语言的程序执行效率高。
特点
一次性的编译成平台相关的机器语言文件,运行时脱离开发环境,运行效率高;与特定平台相关,一般无法移植到其他平台。
代表语言
C、C++、Objective。
2 解释型 (Explain)
解释型语言在运行的时候才翻译成机器语言,每个语句都是执行时才翻译。每执行一次就要翻译一次,效率较低。可跨平台。
特点
每次运行都需要将源代码解释称机器码并执行,效率较低;只要平台提供相应的解释器,就可以运行源代码,所以可以方便源程序移植。
代表语言
JavaScript、Python。
3 场景
编译型:程序执行速度快,同等条件下对系统要求较低,像开发操作系统、大型应用程序、数据库系统等时都采用它。
解释型:一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序。
4 Java是编译型还是解释型
Java是一种兼具编译和解释特性的语言,.java文件会先被编译成与平台无关的.class文件(字节码文件),这个过程是编译。但是.class文件还是无法被计算机直接识别,仍然需要JVM进行翻译成机器语言,这个过程则是解释。
所以可以说java即是编译型的,也是解释型,但是假如非要归类的话,从概念上的定义,恐怕java应该归到解释型的语言中。
所以严格意义上来说,Java是一种解释型语言。
、
5 总结
- 编译型语言将整个代码一次性翻译成机器可以识别的文件,以后每次运行代码,不需要再翻译,运行效率高,但其跨平台性差,跨平台性指的是诸如将windows上翻译过的机器语言文件(二进制文件)放到linux上不能运行。若要将实现跨平台性,必须在不同的平台上分别翻译机器语言文件。
- 解释型语言是每执行一条语句就翻译一条语句,换句话说,解释型语言就是在代码要运行时,才进行翻译。这样的语言运行效率低,但跨平台性好,只需要在不同的平台上搭建运行环境,即可运行。
转载至:https://blog.csdn.net/qq_51993933/article/details/113837386