语言的动态与静态主要差别在类型上:静态语言的对象类型在编译器确定,不能更改;动态语言的对象类型在运行时确定,而且可以改变。
比喻一下,静态语言的对象好比“形状”(类型)是固定的,“大小”(变量值)是可变的,而动态语言更进一步,变量的“形状”和“大小”都可以变化。
静态语言因类型确定有不少语法上的限制,编码时也会有相应的代码;而动态语言则因没有这些限制,编码实现更为简洁。另一方面,由于静态语言的类型描述精确,运行时的效率高于动态语言——动态语言需在运行时对类型判断进行额外处理。开发效率 vs 执行效率,没有好与不好,只有适用与不适用。