编程语言的最终梦想:静态类型安全

类型安全关乎编程语言的内存安全,确保代码不会访问未经授权的内存区域。文章讨论了强类型的不同理解,并通过示例指出C、C++、Java等语言在类型安全上的局限,如C的union和指针问题,C++的placement new和delete,以及Java的数组协变问题。文章强调,尽管有进步,但目前没有绝对类型安全的编程语言。
摘要由CSDN通过智能技术生成

什么是类型安全?

类型安全很大程度上可以等价于内存安全,类型安全的代码不会试图访问自己没被授权的内存区域。“类型安全”常被用来形容编程语言,其根据在于该门编程语言是否提供保障类型安全的机制;有的时候也用“类型安全”形容某个程序,判别的标准在于该程序是否隐含类型错误。类型安全的编程语言与类型安全的程序之间,没有必然联系。好的程序员可以使用类型不那么安全的语言写出类型相当安全的程序,相反的,差一点儿的程序员可能使用类型相当安全的语言写出类型不太安全的程序。绝对类型安全的编程语言暂时还没有。

常听人说“强类型”。但个人对强类型都有不同的理解。

有的认为C++就是强类型,有的认为C也是强类型。因为它们都有类型检查。

可见,如果没有一个明确的定义,谈“强类型”不免是自说自话。

那么,可以给“强类型”下一个什么样的定义呢?

最原始的定义是这样:

静态类型系统将检查所有的错误。只要通过了静态类型检查,程序将不会有bug.

但是,明显这是不现实的,因为有些bug是纯粹逻辑上的。比如说:

print "hell world";

少打了一个o, 是bug, 但除非把自然语言识别加进来,计算机对此无能为力。

于是,我们把强类型定义为:

静态类型系统检查所有类型匹配的错误,只要通过了类型检查,就保证不会有把苹果当成汽油的事发生。

至于类型匹配错误,我们把它定义成:

当你试图把
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值