まあ厳密な話をするなら、システムプログラミング言語はハードウェア由来の不確定性とか諸々と向き合うことになるので完全無欠な保証は難しかったりするんだけど、 C/C++ の穴はそういう次元ではないので……
みんな外付けで不完全な仕組みをゴテゴテ付けながら騙し騙し頑張ってるんだけど、土台が腐ってるからどうしようもないのよ。だから、これだけ長く使われていて多数のプラットフォームで動くという圧倒的アドバンテージを持ちながら、他の言語に移行したい! とかいう声が沢山ある
良い喩えかは知らないけど、「この車は状況と操作に対して必ず再現性のある振る舞いをします。たとえば時速128kmでブレーキを踏むとブレーキは壊れて確実に効かなくなります!」というのは型安全のいう “安全” の範疇なわけ。クソ。
我々が求める安全性ってのはそうじゃなくて「ブレーキが壊れて効かなくなるような速度をそもそも出せません」でしょう
じゃあ “実用的” な観点での型システムが保証してくれる安全性とは何なのかといえば、「『はい異常終了!!!』とか『手遅れになってから例外飛ばしてあげるね♡』とかいう挙動がそもそも起きない」という点で、巷で言われている安全とかそうでないとか静的型付きがどうとかの話はだいたいこれ
https://mastodon.cardina1.red/@lo48576/110698823590524781
で、プログラム書いてるとき気付けなくて実際にある程度動かしてから突然「はい異常終了!」と言われるの、未定義動作より “少しマシ” な程度でしかなくない? という