首页 理论教育 软件工程专论:弱类型与强类型语言

软件工程专论:弱类型与强类型语言

时间:2023-10-23 理论教育 版权反馈
【摘要】:一个语言是有类型的,如果每个参与运算的变量的数据类型都被定义,或隐含的定义。许多语言,允许程序调用异常处理器,例如,出错时,返回“-1”。强制变量必须是所定义的类型,称为强类型语言。弱类型语言使用方便,程序员不需要关注变量的类型。因此弱类型语言简单实用,但是会掩盖程序的错误。强类型语言,可以防止上面的问题。当发生类型转换错误时,引发一个异常信号,让程序转入错误处理机制。

软件工程专论:弱类型与强类型语言

一个语言是有类型(typed)的,如果每个参与运算的变量的数据类型都被定义,或隐含的定义。例如,“this text between the quotes”是一个字符串。编译时,可以进行静态类型检查("static"type checking),或运行时,做动态类型检查(“dynamic”type checking),正确或引发一个异常。

许多语言,允许程序调用异常处理器(exception handler),例如,出错时,返回“-1”。

因此,可以写如下的语句,提高可靠性:

If(open(text_f i le)==-1){pr int f“打开文件时出错!”}。

语义为:如果打开文件时有错,在屏幕上打印出提示文字“打开文件时出错!”(www.xing528.com)

很多时候,编程语言会公开或隐含地定义变量的类型,不强制这个变量就必须是某种类型,称为弱类型语言。强制变量必须是所定义的类型,称为强类型语言。

弱类型(Weak typing)语言,允许把一种类型作为另一种类型处理,例如,把字符串(string)作为数字(number)。弱类型语言使用方便,程序员不需要关注变量的类型。但是,如果在编译时和运行时不做检查,就会引发程序莫名其妙的错误

例如,在JavaScript中,表达式2*x 隐含着把x转换为整型(number)。如果x是一个数,或是一个数字构成的字符串,是不会出问题的。如果x是一个空字符串或带字母的字符串,那么,2*x的值不确定,如果当成整型解释,就会出错。因此弱类型语言简单实用,但是会掩盖程序的错误。

强类型(Strong typing)语言,可以防止上面的问题。程序员必须严格定义每个变量的类型,不同类型变量之间有严格的转换规则。当发生类型转换错误时,引发一个异常信号,让程序转入错误处理机制。从而保证了程序的安全。因此,强类型语言也称为类型安全(type-safe)语言。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈