静态类型的语言
如果在编译时知道变量的类型,则语言是静态类型的。对于某些语言来说,这意味着你作为程序员必须指定每个变量的类型(例如:Java,C,C ++)。其他语言提供某种形式的类型推断,类型系统能够推导变量的类型(例如:OCaml,Haskell,Scala,Kotlin)
这里的主要优点是编译器可以进行各种检查,因此很早就发现了很多微不足道的错误。
动态类型的语言
如果类型与运行时间值相关联,则语言是动态类型的,而不是命名变量/字段/等。这意味着你作为一个程序员可以写得更快一点,因为你不必每次指定类型(除非使用静态类型语言和类型推断)。例如:Perl,Ruby,Python
大多数脚本语言都具有这个特性,因为没有任何编译器可以进行静态类型检查,但是您可能会发现自己正在寻找一个由于解释器错误地解释了变量类型而导致的错误。幸运的是,脚本通常很小,所以错误没有太多地方可以隐藏。
大多数动态类型语言允许您提供类型信息,但不需要它。目前正在开发的一种语言Rascal采用了一种混合方法,允许在函数内动态键入,但是为函数签名实施静态类型。