Up コンピュータ 作成: 2014-11-27
更新: 2014-12-06


    コンピュータは,形式言語理論の実現 (realization) である。
    またこのことにより,形式言語理論のシミュレーターである。

    「コンピュータ」のこの意味は,つぎの2様の主題を導く:
      1. オートマトン
      2. コンピュータ・プログラム

    「オートマトン」は,「形式言語理論を実現する方法」である。
    「コンピュータ・プログラム」は,「形式言語の使用」である。

    「オートマトン」については,ここでは触れない。
     (Cf. 『チューリング機械開発システムの作成』
    ここでは,「コンピュータ・プログラム」について述べる。


    コンピュータ・プログラムは,コンピュータを「関数」にするものである。
    コンピュータが「関数」になるとは,入力に対し出力を返す機械になるということである。

    プログラミングは,形式言語の使用である。
    そこで,プログラミングがわかるようになることは,形式言語がわかるようになることである。

    以下は,「プログラミングがわかる」の内容で,数学教育学が特に係わるものの例である。


    (1)「論理の厳格」の概念がわかる
    日常は,論理の間違いを大目に見る世界である。
    コンピュータは,「論理の厳格」が貫徹される世界である。
    プログラミングの間違いは,プログラマーにとってのことで,コンピュータの関知するところではない。
    コンピュータは,プログラムの内容をそのまま実行するだけである。
    プログラミングを間違うとは,別のプログラムをつくるということである。
    実際,もし間違いを大目に見るコンピュータがあったとしたら,それは危なくて使えないコンピュータである。

    間違いには,文法の間違いと意味の間違いがある。
    文法の間違いは,今日では,プログラミング・システムに内蔵の文法チェッカーが「間違い」を知らせてくれるようになっている。
    一方,意味の間違いは,プログラマーにとっての「意味の間違い」であり,コンピュータにとってはこれが意味である。 コンピュータは,これを忠実に実行するのみである。

    コンピュータのメモリ管理も内容になるプログラムでは,メモリに関係する記述のミスは,コンピュータの暴走/フリーズを招く。 こうなったときは,コンピュータの再起動となる。

    プログラミングの修行は,こうして「論理の厳格」を自ずと身につけるものになる。
    翻って,「論理の厳格」の修行になる。


    (2)「定数 (constant)・変数 (variable)」の概念がわかる
    「定数 (constant)・変数 (variable)」は,学校数学がよく扱い得ていない主題である。
    扱い得ていないのは,そもそも「定数・変数」が何かをわかっていないからである。

    定数・変数の別は,形式言語理論では記号の文法的振る舞いの違いであり,意味がわかりにくい。
    プログラミングだと,定数・変数の別は記号の機能的違いになり,意味がわかるようになる。

    定数は,一定値に置換される記号である。
    プログラミングで「定数の定義文」に慣れることは,「定数」がわかることである。

    変数は,メモリ (place-holder) につけられた名前である。
      コンピュータ・プログラムの「y=x+1」は,「xと名付けたメモリの中の値に1を加えた値を,yと名付けたメモリの中の値にする」が意味である。
    プログラミングで「変数の型宣言」に慣れることは,「変数」がわかることである。

    学校数学は,「定数・変数の記号はアルファベット文字一つ」の固定観念をつくるふうになっている。
    プログラミングでは,定数・変数の記号は,定数・変数の用途を言い表すことばの文字列 (長い文字列) にする。
    プログラミングの修行には,学校数学の「定数・変数の記号はアルファベット文字一つ」に感化されることを防ぐ効用もある。


    (3)「関数 (function)」の概念がわかる
    入力に対し出力を返すコンピュータ・プログラムは,全体が一つの関数である。
    プログラミングは,小さな関数を組み合わせて目的の関数を実現するものである。
    こうして,プログラミングができるようになることは,「関数」がわかっていくことである。