ようこそ!浜村拓夫の世界へ

    ブログ内検索

    最近の記事

    ブックマーク数の多い記事

    Blog Translation

    Powered By FC2ブログ

    Powered By FC2ブログ
    ブログやるならFC2ブログ


    FC2ブログ LOGIN

    with Ajax Amazon

    プログラミングにおける3値論理

    このエントリーを含むはてなブックマーク はてなブックマーク - プログラミングにおける3値論理 あとで読む
    最近、関数型プログラミングについて学ぶ機会が多い。
    コンピューターで扱う論理は、True/Falseの2値論理ではなく、True/False/Nullの3値論理が必要だった。
    言われてみればいちいち最もな話だが、今まではあまり意識してなかったので、今後は明確に対応できるようにしたい。

    トランジスタを集積して論理回路を形成している従来のノイマン型コンピューターでは、電気のON/OFFによって0と1のビットを表現している。
    ハードに近い部分の原始的な論理演算では、0と1の組合せでTrue=1、False=0と表現できる。
    ハードを仮想化(隠蔽化)したプログラミング言語のレベルでは、True、False、Nullの3値を扱える。

    現実の世界は、単純な2値論理ではなく、3値論理で動いている。

    ・現実世界 → 第1段階: 未定 or 確定
    ・現実世界 → 第2段階: (確定→) 有 or 無
    とモデル化した場合、
    未定は「Null」
    確定のうち、有は「True」、無は「False」
    に対応させられる。

    未分化の状態(未定)が、やがて観測によって有か無のどちらかに確定した状態に分かれる。
    これを時系列(ストリーム)で並べて記述すれば、それが現実をモデル化したプログラムになる。

    この構造、順番、処理は、計算機が変わっても通用する普遍的な原理であるように思われる。
    量子コンピューターのプログラムは、まさにこの順番で記述できるだろう。

    各プログラミング言語で「Null」をどのように扱っているか?に着目すると、プログラミング・パラダイムの発展について、理解が深まると思う。
    Nullの扱い方 → 副作用の分離、カプセル化、モナドでラップ等々。
    関連記事

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバックURL:
    http://hamamuratakuo.blog61.fc2.com/tb.php/1463-10f487de

    FC2Ad