编程语言分类
强类型和弱类型
- 强类型:禁止对不兼容的类型进行隐式转换
- 弱类型:可以进行隐式类型转换(称为类型提升或强制转换)
- 简单的区分方法就是看函数传和函数签名中不同类型的参数,是否允 许
- 其实一个编程语言的强弱类型之分不是泾渭分明的,例如 C 语言就是强类型但是弱检查
静态类型和动态类型
- 静态类型:变量的类型在编译时确定,并且类型检查在编译阶段完成
- 动态类型:变量的类型在运行时确定,类型检查也在运行时完成
- 简单的区分方法就是看变量是不是必须指定类型,当然部分语言的编译器能自动推断类型
脚本语言 vs. 编译语言
- 脚本语言:解释执行,不需要编译
- 编译语言:需要编译成二进制文件,然后再执行
- 实际上,这种分类也不是泾渭分明的,一门语言即便一开始是脚本语言,后续也可能出现它对应的编译器,例如 JavaScript 的 qjs 编译器
- 我更倾向于区分 “是否能进行运行时检查”