10進数の使えるC言語、抽象クラスの使えるC++は充分に直感的かなと

先のブログで排中律について触れた。

命題は真偽のどちらかを取り中間は有り得ない。

この考え方がコンピュータと好相性なのか、論理学から論理回路が出来たのか、起源については及び知るところではないが、命題が真偽中間の三叉路を取ることは0と1のビット演算を2ビット使って00、01、10、11の4値のうち3つを使うことで実現できる。

これは捉えようによっては排中律を否定するものではなく、命題を0と1の真偽に捉えた後にさらに別のの命題に捉え直し0と1に分岐するアセンブリコードに翻訳されるわけだから、排中律とは無矛盾であると捉えることが出来るとする反論が考えられる。

しかし、コンピュータの実装上で01-01と取っているものでも、10進数で1,2,3を意味するために2ビットを使って1ビットを無視しているということは直感的に三叉路であり、構文的にもIF TRUE-FALSE IF TRUE-FALSEと続くものではなくswitch-case 1,2,3と書くのが自然である。

これは既に便宜的にC言語アセンブリ言語のアドレスやジャンプを隠匿して数学的に10進数と数の比較によってプログラミングを可能としていることに起因するので、計算機理論というよりはソフトウェアを使った直感であり、既に命題と真偽で持って論考する古典論理学よりは近代的な直感を認める「ゆるい」論理学の範囲に収まるものであると考える。

蛇足になるが、C++Javaでクラス設計を考えている人間と計算機理論やC言語アセンブラでデータやグラフ理論に音声などを取り扱っている人間では同じプログラマでも色々な齟齬がある。高級言語プログラマはモジュール化された計算基礎理論を道具として、対人処理や事務的手続きを抽象的に記述する。対して道具としてのコンピュータの発展にはアセンブリでの基礎理論から離れた考え方では発展性が乏しい。

誤解を避けるために言うと、否定的言及をしたが高級言語の発達を否定する立場を取るわけではない。考え方に壁があるという話。