编译型和解释型的区别与特点
1.理解编译型和解释型的原理
-
编译型
必须提前将所有源代码一次性转换成二进制指令,也就是生成一个可执行程序,比如C语言、C++等,这种编程语言称为编译型语言,使用的转换工具称为编译器。
我的理解:有一个专门负责翻译的程序,将我们所写的源代码转换成计算机能执行的代码
负责翻译的程序就叫做编译器
-
解释型
可以一边执行一边转换,需要哪些源代码就转换哪些源代码,不会生成可执行程序,比如 Python、JavaScript、PHP等,这种编程语言称为解释型语言,使用的转换工具称为解释器。
我的理解:我们需要读什么源代码,就给我们解释什么代码,用一下编译一下
2.执行流程
3.区别与特点
-
编译型
在运行的时候,我们只需要编译生成的可执行程序,不再需要源代码和编译器了,所以说编译型语言可以脱离开发环境运行。
编译型语言一般是不能跨平台的,也就是不能在不同的操作系统之间随意切换。- 可执行程序不能跨平台
- 源代码不能跨平台
-
解释型
因为每次执行程序都需要重新转换源代码,所以解释型语言的执行效率天生就低于编译型语言,甚至存在数量级的差距。计算机的一些底层功能,或者关键算法,一般都使用 C/C++ 实现,只有在应用层面(比如网站开发、批处理、小工具等)才会使用解释型语言。在运行解释型语言的时候,我们始终都需要源代码和解释器,所以说它无法脱离开发环境。
相比于编译型语言,解释型语言几乎都能跨平台,“一次编写,到处运行”是真实存在的
4.总结
类型 | 原理 | 优点 | 缺点 |
---|---|---|---|
编译型 | 通过专门的编译器,将所有源代码一次性转换成特定平台执行的机器码 | 编译一次后,脱离了编译器也可以运行,并且运行效率高。 | 可移植性差,不够灵活。 |
解释型 | 由专门的解释器,根据需要将部分源代码临时转换成特定平台的机器码 | 跨平台性好,通过不同的解释器,将相同的源代码解释成不同平台下的机器码。 | 一边执行一边转换,效率很低。 |