浅谈编译型|解释型语言、动态类型|静态类型语言、强类型|弱类型语言的区别
一、编译型语言与解释性语言
1、编译型语言(C/C++、Go、Pascal)
解释:在完成源代码后,需通过编译器编译一次性生成一个针对平台的(CPU类型)可执行文件。当我们需要再次运行该代码是,不需要重新对源代码进行编译,只需要直接运行编译后的可执行文件即可。完成源代码编译为机器码的工具即为编译器。
特点:
(1)编译型语言最大的优势之一就是其执行速度快;
(2)由于编译型语言直接生成的可执行文件是针对某一平台的,因此,对于跨平台执行同一个可执行文件具有一定的不便性(平台依赖性);
(3)同等条件下,编译型语言对系统的条件要求比较低,运行时占用内存较小;
(4)编译型程序不支持代码中实现安全性。
2、解释型语言(Python、Ruby、R)
解释:在完成源代码后,通过专门的解释器逐行将源代码解释成特定平台上的机器码并立即执行的语言。
特点:
(1)由于在运行时需对源代码逐行解释,因此其执行速度较慢,并且占用内存较大;
(2)同一个源代码可以在不同平台下运行(平台独立性),但该平台需要安装相应的解释器(解释器依赖性);
(3)解释型语言可以保证高度的安全性。
3、小结
编译型语言和解释型语言有各自的优点和缺点,在当今不同领域有着各自的应用。但也有一种计算机语言既有编译型语言的特点,也有解释性语言的元素,如Java、C#,它们既有着编译型语言的运行速度,也有解释型语言可跨平台的优点。
二、动态类型语言与静态类型语言
静态类型语言(C/C++、Java):
解释:是指在程序运行前已经做好变量类型检查的语言类型,在定义某一变量前是需要提前声明。
特点:
(1)运行速度快,稳定,避免发生变量类别相关的错误;
(2)代码量较大,编程过程中相对繁琐。
动态类型语言(PHP、Python):
解释:是指在程序运行时做变量类型检查的语言类型。
特点:
(1)具有较高的灵活性,使程序员更加关注变量的行为而非本身;
(2)容易发生变量类别相关的错误,当代码量较大时相对来说不够稳定。
三、强类型语言和弱类型语言
强类型语言(Python、C#、Java):
解释:是一种强制类型定义的语言,当一个变量被分类,那么只有通过强制类型转换才能改变其变量类型,否则它永远就是原本的变量类型。
特点:
(1)只有同种类型的变量才能相互运算,不同种类型之间不能进行运算;
(2)可以及时报错,方便代码的调试;
(3)运行速度较慢。
弱类型语言(C/C++、javascript、PHP):
解释:与强类型语言恰恰相反,弱类型语言是一种可以忽略变量类型的语言。一个变量可以根据环境自动进行转换。
特点:
(1)一个变量可以不同数据类型的值;
(2)运行速度较慢。
四、小结
(图片来源于网络)
文章内容为个人观点,若有不足之处,感谢批评指正。