良い喩えかは知らないけど、「この車は状況と操作に対して必ず再現性のある振る舞いをします。たとえば時速128kmでブレーキを踏むとブレーキは壊れて確実に効かなくなります!」というのは型安全のいう “安全” の範疇なわけ。クソ。
我々が求める安全性ってのはそうじゃなくて「ブレーキが壊れて効かなくなるような速度をそもそも出せません」でしょう
じゃあ “実用的” な観点での型システムが保証してくれる安全性とは何なのかといえば、「『はい異常終了!!!』とか『手遅れになってから例外飛ばしてあげるね♡』とかいう挙動がそもそも起きない」という点で、巷で言われている安全とかそうでないとか静的型付きがどうとかの話はだいたいこれ
https://mastodon.cardina1.red/@lo48576/110698823590524781
で、プログラム書いてるとき気付けなくて実際にある程度動かしてから突然「はい異常終了!」と言われるの、未定義動作より “少しマシ” な程度でしかなくない? という
https://mstdn.nere9.help/@orange_in_space/110698764108611611
オレンジのこの説明だと「32bit整数型? 知るか! 32bit float型としてアクセスしてやる!」ってつまり情報無視での扱いも型安全って事になっちゃうからダメだね><;