1. 什么是动态语言?
在了解动态语言之前,我们首先了解下 “类型检查”。
类型检查是验证类型约束的过程,编译器或解释器通常在 编译阶段
或 运行阶段
做类型检查。
类型检查就是查看 “变量” 和它们的 “类型”,然后判断表达式是否合理。例如,不能拿一个 string
类型变量除以浮点数变量。
-
类型检查发生在程序
运行阶段
(run time
),那么它便是“动态类型语言”(dynamically typed languages
)。常见的动态语言包括:Python
,JavaScrpit
,PHP
。 -
类型检查发生在
编译阶段
(compile time
)的是“静态类型语言”(statically typed languages
)。常见的静态类型语言包括:C
、C++
、Java
、C#
、Scala
。
2. 什么是强类型语言?
强类型语言是指:不管是在编译阶段还是运行阶段,一旦某种类型绑定到变量后,此变量便会持有此类型,并且不能同其他类型在计算表达式时,混合使用。
例如:
>>> a = 1
>>> a + "a"
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
意思是不支持 int
变量和 str
变量相加。
- 常见的强类型语言有:
Python
,Java
,C#
,Scala
。
弱类型语言可以与其他类型混合计算。弱类型语言代表 JavaScript
,支持如下操作:
var a = 10
a = a + "hello, world"
"10hello, world"
- 常见的弱类型语言有:
C
,C++
,PHP
,Javascript
。