查了一些资料,没有找到比较官方的说法,这里说一下我对上述四个术语的理解。
动态语言
该术语在维基百科上有定义,定义如下:
动态编程语言是高级程序设计语言的一个类别,在计算机科学领域已被广泛应用。它是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。动态语言目前非常具有活力。众所周知的ECMAScript(JavaScript)便是一个动态语言,除此之外如PHP、Ruby、Python等也都属于动态语言,而C、C++等语言则不属于动态语言。
简要的说,就是结构可以在运行期间动态的添加或者删除,比如JavaScript中,对象的属性和方法可以在运行期间动态增加或者删除。
静态语言
术语并没有看到严格的官方定义,相对于“动态语言”,我的理解是其结构在编译期间就确定,运行期间无法改变。如类中的属性、方法等在编译期间确定后就无法再运行期间修改了。
静态类型语言和动态类型语言
针对语言中的变量,如果变量声明后只能存储一种类型的数据,则成为静态类型,如C语言中的变量,int a;变量a只能存储int类型的数据;
如果变量声明后能够存储多种类型的数据,则称为动态类型,如JavaScript中的变量var a;变量a既能存储字符串,又能存储数字,以及其它任意类型的变量。