天天看点

动态语言、静态语言、强类型定义语言和弱类型定义语言区别

呵~~(冷笑)

第一次接触pythod,是一个朋友告知我它是一种弱类型语言,不用规定变量类型,于是”python=弱类型“ 的概念在我脑海扎根,并且深信不疑!!

然后每每和别人谈起pythod时,我就会以资深口吻”哦,pythod啊,它是一种弱类型语言“开头~~

现在想想,真是啪啪打脸啊~~~~ 要怪就怪我交友不慎或是记性太好吧!

以下转载自 aiming66

看到篇文章后,我感觉我的脸有点火辣辣的疼,遂转载!

动态语言和静态语言

通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。

1)动态类型语言:

  动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。

2)静态类型语言:

  静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。

强类型定义语言和弱类型定义语言

1)强类型定义语言:

强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。

2)弱类型定义语言:

数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。

  强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!

例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)