类型安全
维基百科,自由的 encyclopedia
在电脑科学中,一部分编程语言具备类型安全(中国台湾用语习惯称类型为型别;依据上下文、意思、特定用语的不同,常称数据为资料)的性质。这个术语在不同的社群中有不同的定义,特别是正规的类型理论上的定义远远强过大多数的程序员的理解,但对于使用类型系统的认知,皆旨在避免必然的错误形式,和不良的程序行为(称为类型错误)。
类型错误(type error)是错误或不期望的程序行为,由不同数据类型的差别所引起,适用于程序的常量、变量、方法(函数),如把整型(int)当作了浮点型(float)。
类型安全可以静态方式实施,及早在编译时期就捕捉到潜藏的错误;或者以动态方式,在执行时期关系类型的资讯,并在必要时检测即将发生的错误。类型安全是编程语言的性质,而不是程序所自有的。例如,有可能以类型不安全的语言,编写出类型安全的程序。在此是以编程语言为主,而不讨论以个人能力维护的类型安全。
某个行为之所以会被编程语言归类为类型错误,通常是因为试图对不适当类型的值进行运算。其分类的基本原则是:部分语言设计者和程序员的看法认为,如果所有运算不引起程序瓦解、安全上的瑕疵、或其它明显故障,即为合理的,而不视之为一个错误;其他人则认为所有违背程序员意图的,就是错误的,而且应该标上“不安全”。在静态类型系统中,类型安全通常包含一个保证,所有表达式最终的值都是合理的静态类型成员(比子类型和多态性所要求的还要更加精确细微)。
类型安全近似于所谓的存储器安全(就是限制从存储器的某处,将任意的字节合复制到另一处的能力)。例如,某个语言的实现具有若干类型 ,假如存在若干适当长度的位元,且其不为 的正统成员。若该语言允许把那些资料复制到 类型的变量,那个语言就不是类型安全的,因为这些运算可将非 类型的值赋给该变量。反过来说,若该语言类型不安全的程度,最高只到允许将任意整数用作为指针,显然它就不是存储器安全的。
大部分的静态类型语言,都提供了一定程度的类型安全,而且其严格性更胜于存储器的安全性。因其类型系统强迫程序员以适当的抽象资料类型定义来使用,即使对存储器安全或任何可能的灾难而言,并不需如此严格的要求。