通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。
动态类型语言(Dynamically Typed Language):
例如:ECMAScript(JavaScript)、Ruby、Python、VBScript、php
Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。
优点:方便阅读,不需要写非常多的类型相关的代码;
缺点:不方便调试,命名不规范时会造成读不懂,不利于理解等。
静态类型语言(Statically Typed Language):
优点:在于其结构非常规范,便于调试,方便类型安全;
缺点:是为此需要写更多的类型相关代码,导致不便于阅读、不清晰明了。
对于动态语言与静态语言的区分,套用一句流行的话就是:Static typing when possible, dynamic typing when needed。
强类型定义语言和弱类型定义语言
强类型定义语言:
弱类型定义语言:
强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!
例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)。
强类型语言是指需要进行变量/对象类型声明的语言,一般情况下需要编译执行。例如C/C++/Java/C#。弱类型语言是指不需要进行变量/对象类型声明的语言,一般情况下不需要编译(但也有编译型的)。例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/Unix Shell等等。
脚本语言代表一套与系统程序设计语言不同的协定。
它们牺牲执行速度和与系统程序设计语言相关的类型长度而提供更高的编程创作力和软件重用。脚本语言更适合在联系复杂的应用程序中进行胶着。
为了简化连接组件的工作,脚本语言被设计为无类型的,脚本语言一般是面向字符的,因为字符为许多不同的事物提供了一致的描述。 事实上,脚本语言都是动态语言,而动态语言都是解释型语言,不管它们是不是面向对象。