プログラムがハードウェアやOSや言語レベルから
すべてトランズアクションをベースにして構築されたら良いかもしれない。
必ずロールバックできる。何か処理を1段階するたびにプログラムで検証を行う。
さらに、ある条件(法則)が満たされるべきことを宣言しておくと、
トランズアクションのステップ単位でその条件が満たされているかをチェックして、
それが成立しなければ、ロールバックして、条件の成立が破れていることを
伝えて、システムが対処処理に入るためのプログラムルーチンに移行する。など。

もちろん、処理の実行速度はとても低下するだろう。

しかし現状のプログラミング言語によるプログラムの現実は、
ある処理が行われるコードのピースが、満たすべき条件を本当に満たす処理に
なっているのかは、プログラマの想像力だけによって支えられており、
机上でデバックをするにしても、テストデーターはすべてを尽くすことは
できない。論理的に正当な証明が伴わなければ、「上手く行かない場合が存在しない」という”悪魔の証明”は無理だが、そこはプログラマの直感だけに頼って
いるので、だいたいうまくいく、たいていうまくいく、といったプログラムコード
が納期に間に合わせるためもあって、適当に書かれて動かされているのが現実だ。
よく使われるOSのコードといえども千行に1つを越えるバグの密度があるのが
普通であり、デバイスドライバーの類いのコードまで入れたら1億行あるなどと
噂されているWindowsのコードなどどれだけ地雷が埋まっているか分かったもの
ではない。OSが地雷を秘めているのに、その上に開発された基礎ルーチンや
アプリケーションコードが完璧に動作する保証もないし、それらのルーチンや
アプリケーションにもバグが埋まっている。そうして、デバイスのハードや
ファームにもバグがあるし、通信や電源も完璧に動作するばかりではない。
むしろ通信はエラーがあってあたり前のものである。チェックサムだけで
100%完璧ということはない。僅かながら間違って伝わる確率は常にある。