动态语言、静态语言、动态类型语言、静态类型语言、编译型语言、解释型语言、强类型定义语言、弱类型定义语言

动态语言

一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或者其他结构上的变化。

在运行时代码可以根据某些条件改变自身结构。

如Objective-C、C#、JavaScript、PHP、Python。

静态语言

与动态语言相对应的,运行时结构不可变的语言。

如Java、C、C++。

编译型:

负责翻译的程序对源代码进行转换,生成相对应的可执行代码。这个过程是编译,这个程序是编译器

如果所有代码都包含在一个源文件,通常编译之后就会直接生成一个可执行文件。

如果很多源文件,编译各个文件时就会生成目标文件。这些目标文件里的内容基本是可执行代码了。

然后由链接器把目标文件和各种图片、音视频等资源链接起来,还会去除目标文件之间的冗余重复代码。

最后生成可执行文件。

如C、C++、Objective-C、Swift。

解释型

程序运行的前一刻,还只有源程序而没有可执行程序。程序每执行到源程序的某一条指令,解释器将源代码转换成二进制以供执行。

不断的解释、执行、解释、执行。

移植性好,运行速度慢。

Java也进行了预编译,生成介于机器码和Java源码之间的中介代码。

如JavaScript、Python、PHP、Ruby。

动态类型语言

运行期间才去做数据类型检查的语言。永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。

如Python、Ruby、JavaScript、Swift、PHP。

静态类型语言

在写程序时要声明所有变量的数据类型,数据类型在编译期间检查。

如C、C++、C#、Java、Objective-C。

强类型定义语言

强制数据类型定义的语言。

一旦一个变量被指定了某个数据类型,如果不经过强制类型转换,它就永远是这个数据类型。

强类型定义语言是类型安全的语言。

如Java、C#、Python、Objective-C、Ruby.

弱类型定义语言

一个变量可以赋不同数据类型的值或者可以容易隐式类型转换。

如JavaScript、PHP、C、C++

duck typing

是动态语言的一种,只关心有没有实现属性和方法,不管真正类型。

normal typing

规定了类型,方法和属性也就确定了。

你可能感兴趣的:(动态语言、静态语言、动态类型语言、静态类型语言、编译型语言、解释型语言、强类型定义语言、弱类型定义语言)