跳到主要内容

编程语言分类

强类型和弱类型

  • 强类型:禁止对不兼容的类型进行隐式转换
  • 弱类型:可以进行隐式类型转换(称为类型提升或强制转换)
  • 简单的区分方法就是看函数传和函数签名中不同类型的参数,是否允许
  • 其实一个编程语言的强弱类型之分不是泾渭分明的,例如 C 语言就是强类型但是弱检查

静态类型和动态类型

  • 静态类型:变量的类型在编译时确定,并且类型检查在编译阶段完成
  • 动态类型:变量的类型在运行时确定,类型检查也在运行时完成
  • 简单的区分方法就是看变量是不是必须指定类型,当然部分语言的编译器能自动推断类型

脚本语言 vs. 编译语言

  • 脚本语言:解释执行,不需要编译
  • 编译语言:需要编译成二进制文件,然后再执行
  • 实际上,这种分类也不是泾渭分明的,一门语言即便一开始是脚本语言,后续也可能出现它对应的编译器,例如 JavaScript 的 qjs 编译器
  • 我更倾向于区分 “是否能进行运行时检查”