不安全代码,大概就是说编译器可以编译,但没法验证是不是会出异常问题的代码。
不安全代码主要是有指针相关操作,或者类型强转操作。这两种操作编译器一般是无法验证是否会出现异常的。
这是基于编译器能否验证的角度,对日常写代码帮助还是比较小。
如果从能否轻松编写正确代码,包括业务逻辑也正确,的角度来思考。似乎可以把代码分几类,第一类是靠测试能保证没问题的,第二类是靠编译器能保证没问题的,第三类是靠人来保证没问题的。
靠人保证的,要尽量少些,多了靠人就不靠谱。靠测试的也需要人来思考写哪些测试,虽然靠谱多了,还是希望少些。靠编译器的尽可能多些才好。
一般业务逻辑是靠测试最方便。
指针操作,类型强转,死锁,循环引用,这些只能靠人保证了,应该是要尽量少用。
这样思考下来,Rust也没有解决死锁和循环引用的验证问题,猜测以后还会有更安全的语言和编译器出现。