编译型语言和解释型语言的区别
前言
首先要搞清楚一点,不管使用哪种语言编程,最终在程序真正运行之前必须将源代码转换成二进制指令。因为计算机只能识别某些特定的二进制指令(即常说的机器码)。
既然都需要进行源码的转换,那在什么时候将源代码转换成二进制指令呢?不同的编程语言有不同的规定,也就有了编译型语言和解释型语言。
概念及图解
- 编译型语言:程序运行前需要将所有源代码一次性转换成二进制指令,也就是生成一个可执行程序(Windows 下的
.exe
),比如C语言、C++、Golang、Pascal(Delphi)、汇编等。 - 编译器:编译型语言将源代码转换成二进制指令的工具就叫编译器。
- 解释型语言:不需要提前一次性转换,而是一边执行一边转换,需要哪些源代码就转换哪些源代码,不会生成可执行程序。比如 Python、JavaScript、PHP、Shell、MATLAB ,Java等。
- 解释器:解释型语言将源代码转换成二进制指令的工具就叫解释器。
编译型语言
- 编译一次后,脱离了编译器也可以运行,并且运行效率高。即 “
一次编译,无限次运行
”。 - 可移植性差,不能跨平台运行。即同一个
.exe
在windows可执行,在Linux就无法识别。
解释型语言
- 可跨平台性,通过不同的解释器,将相同的源代码解释成不同平台下的机器码。
- 需要一边运行一遍转换,运行效率较编译型语言低。