什么是类型安全?
类型安全很大程度上可以等价于内存安全,类型安全的代码不会试图访问自己没被授权的内存区域。“类型安全”常被用来形容编程语言,其根据在于该门编程语言是否提供保障类型安全的机制;有的时候也用“类型安全”形容某个程序,判别的标准在于该程序是否隐含类型错误。类型安全的编程语言与类型安全的程序之间,没有必然联系。好的程序员可以使用类型不那么安全的语言写出类型相当安全的程序,相反的,差一点儿的程序员可能使用类型相当安全的语言写出类型不太安全的程序。绝对类型安全的编程语言暂时还没有。
常听人说“强类型”。但个人对强类型都有不同的理解。
有的认为C++就是强类型,有的认为C也是强类型。因为它们都有类型检查。
可见,如果没有一个明确的定义,谈“强类型”不免是自说自话。
那么,可以给“强类型”下一个什么样的定义呢?
最原始的定义是这样:
静态类型系统将检查所有的错误。只要通过了静态类型检查,程序将不会有bug.
但是,明显这是不现实的,因为有些bug是纯粹逻辑上的。比如说:
print "hell world";
少打了一个o, 是bug, 但除非把自然语言识别加进来,计算机对此无能为力。
于是,我们把强类型定义为:
静态类型系统检查所有类型匹配的错误,只要通过了类型检查,就保证不会有把苹果当成汽油的事发生。
至于类型匹配错误,我们把它定义成:
当你试图把