编程语言的分类

  1. 强类型定义语言
  2. 弱类型定义语言
  3. 动态类型语言
  4. 静态类型语言
  5. 编译型语言
  6. 解释型语言
  7. 脚本语言
分类 定义 举例
强类型定义语言 强类型定义语言又称强类型语言,强类型语言要求变量严格符合定义,所有变量都必须先定义后使用。一旦一个变量被定义为某一种数据类型后,如果不经强制转换则永远都是这个数据类型。 Java,.NET,Python,C,Go,Kotlin,Switf。
弱类型定义语言 与强类型相反,弱类型的数据类型可以被忽略,一个变量可以赋不同数据类型的值。 JavaScript,VB,VBScript。

有部分人对Python有所误解,误解Python为弱类型语言
在这里插入图片描述
我们在Python中使用字符型和整数型相加后输入,程序报错unsupported operand type(s) for +: ‘int’ and 'str(+:“int”和“str”的操作数类型不受支持)
从中很明显能感觉到Python对类型的严格定义,所有Python并不是一个弱类型语言。在弱类型中是允许字符和整数型相加
在这里插入图片描述
从上图可以看出浏览器中的控制台内置的JavaScript就是一门弱类型语言。
强类型语言在速度上可能略逊色于弱类型语言,但强类型语言带来的严谨性能够有效的避免许多错误。

分类 定义 举例
动态类型语言 动态类型的语言会在运行期间再去做数据类型检查,动态类型语言的好处就是不用给变量指定任何数据类型,该类型的语言会的变量会在第一次被赋值时在内部自动将数据类型记录。 JavaScript,Ruby,VBScript,Python,Swift
静态类型语言 编译语言在编写代码时就检查变量的数据类型,使用静态类型语言必须要先声明变量的数据类型才能使用变量。 C/C++,C#,Java,Go,Kotlin

总的来说动态语言更好用,不仅能减少代码量,让代码看上更加简洁,还更接近于日常语言。想到什么用什么,不用事先声明。
“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!类型安全代码指访问被授权可以访问的内存位置。例如,类型安全代码不能从其他对象的私有字段读取值。它只从定义完善的允许方式访问类型才能读取。

分类 定义 举例
编译型语言 编译型语言有编译器,编译型语言会在运行之前将所有代码都转换成二进制机器码,相当于全文翻译 C/C++,C#,Swiper,Go,Kotlin
解释型语言 解释型语言有解释器,解释型语言会在代码运行时一边解释一边运行,相当于实时翻译 Python,Java,JavaScript,VBScript

对于运行效率来说,编译型是高于解释型语言的,因为编译型语言在执行时不用经过解释,可以直接运行。但是对于多平台的兼容性,编译型语言就不如解释型语言的兼容性强。所以编译型语言常用于大型项目,或者偏底层项目,而解释型语言则较多用于服务器等需要兼容性强的地方。

分类 定义 举例
脚本语言 脚本语言是一个很另类的分类,很多语言即是脚本语言,同时又是编程语言,脚本语言要满足可以以文字形式存在,类似于一种命令,常见的脚本语言,比如Python,JavaScript,VBScript等都是动态编译型语言 Python,JavaScript,VBScript,Ruby