编程语言类型

 

 

     最近学习PHP,借来的一本书上,总是有这样的话“因为PHP是弱类型语言,所以……”,弱类型语言就具有……特性了,就能……了?还是不太明白。
   自己在网上搜了一下,并整理了出来,供大家参考。
 
 
动态语言和静态语言
通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。
动态类型语言(Dynamically Typed Language)
    也叫动态类型定义语言, 动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。
    例如:ECMAScript(JavaScript)、Ruby、Python、VBScript、php
    Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。
    优点:方便阅读,不需要写非常多的类型相关的代码;
    缺点:不方便调试,命名不规范时会造成读不懂,不利于理解等。

静态类型语言(Statically Typed Language)
    也叫静态类型定义语言,静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的, 也就是说在写程序时要声明所有变量的数据类型,在使用数据之前,我们必须首先定义数据类型,这些数据类型包括int ,float,double等等。就相当于在使用它们之前,首先要为它们分配好内存空间。
    例如:C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。

        优点:在于其结构非常规范,便于调试,方便类型安全;

        缺点:是为此需要写更多的类型相关代码,导致不便于阅读、不清晰明了。


对于动态语言与静态语言的区分,套用一句流行的话就是:Static typing when possible, dynamic typing when needed。


强类型定义语言和弱类型定义语言
强类型定义语言
    强制数据类型定义的语言。也就是说 ,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。
 
弱类型定义语言
    数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
 
注意:
    强类型定义语言在 速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的 严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!
    例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)。

    强类型语言是指需要进行变量/对象类型声明的语言,一般情况下需要编译执行。例如C/C++/Java/C#。弱类型语言是指不需要进行变量/对象类型声明的语言,一般情况下不需要编译(但也有编译型的)。例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/Unix Shell等等。
 
 
我查到的一篇文档在强/弱类型语言后还放了一个脚本语言,不知道是否合适,我也给放到后面。
脚本语言
    脚本语言代表一套与系统程序设计语言不同的协定。
它们牺牲执行速度和与系统程序设计语言相关的类型长度而提供更高的编程创作力和软件重用。脚本语言更适合在联系复杂的应用程序中进行胶着。
    为了简化连接组件的工作,脚本语言被设计为无类型的,脚本语言一般是面向字符的,因为字符为许多不同的事物提供了一致的描述。 事实上,脚本语言都是动态语言,而动态语言都是解释型语言,不管它们是不是面向对象。
 
引用文章地址:http://wenku.baidu.com/view/0dd5fb6d58fafab069dc02cb.html
http://wenku.baidu.com/view/baac05d3b14e852458fb5780.html
已包含在附件里。


 
 

 

 

你可能感兴趣的:(强类型,强类型语言,弱类型语言)