前言
本文主要针对编译型语言与解释型语言、动态类型语言与静态类型语言、强类型语言与弱类型语言几种概念进行区分,以达到学习目的。
一、编译型语言与解释型语言
计算机只能理解并执行机器语言,因此通过高级语言所编写的程序需要先转化为机器语言然后被计算机执行。转化方式有两种,即编译与解释。因此根据转化方式的不同将高级语言分为编译型语言与解释型语言。1
1.编译型语言
编译型语言需要通过编译器,将源代码一次性编译为目标代码,即供计算机执行的机器语言,之后可以对目标代码反复运行,无需再次编译。即:一次编译,多次执行。
编译型语言由于无需重复编译,因而运行效率较高。但由于编译器需编译针对不同平台的目标代码,因而跨平台性较差。
常见编译型语言有C、C++、Objective等。
2.解释型语言
解释型语言通常在程序运行时,对源代码进行解释后运行,即每次执行每次解释。
由于需反复解释,解释型语言通常运行效率较低。但同样代码可在不同平台当即解释,无需事先编译,因而跨平台性较好。
常见解释型语言有Python、JavaScript、Shell、Ruby、MATLAB等。
二、动态类型语言与静态类型语言
1.动态类型语岩
动态类型语言不需要在编写代码时声明变量的类型,它会在代码运行时自动判断并记录。因此动态类型语言具有较高灵活性,在编写时可以减少与变量类型有关的代码的思考。但也容易在运行时发生与变量类型有关的错误,不利于代码的阅读与检查。
常见动态类型语言有Python、Ruby等。
2.静态类型语言
静态类型语言必须在编写时声明变量类型,因此可以避免在运行时发生与类型有关的错误,且便于阅读调试。但在编写代码时需格外注重变量类型,增加了代码数量与编写代码时间,缺乏灵活性。
常见静态类型语言有C、C++等。
三、强类型语言与弱类型语言
1.强类型语言
强类型语言是指强制数据类型的语言,即某个指定了类型的变量必须经过强制转换才能变为其他类型。由于需要强制转换,故运行速度较慢,但所编写的语言更具严谨性,不易运行时报错。
常见强类型语言有Python、Java、C#等。
2.弱类型语言
弱类型语言是指数据类型可以被忽略的语言,即一个变量可以在运行过程中根据需求赋予不同的变量类型。较强类型语言更加高效且灵活,但在运行时易出错。
常见弱类型语言有C、C++等。