雑学
C,Delphi,BASICとは発想の異なる言語
プログラミング言語の C, Delphi, BASIC は親戚である。
これらは、構文が異なるだけで、やってほしいことを命令を並べて表すという点では同じである。
これらの言語は手続型言語と呼ばれる。
ところが、世の中には、これらと全く発想の異なる言語、つまり非手続型言語というものがある。
どう発想が異なるかを説明する代わりに、非手続型言語を処理するインタープリタを作った。
使用例を2つ示す。1つ目は以下のものである。
推論インタープリタの使用例その1
この使用例の理解を助ける地図を以下に示す。
使用例の理解を助ける地図
ここで勘違いしてはならないことは、
このインタープリタには経路を求めるためのアルゴリズムは一切入っていないという点である。
つまり、人間の入力した内容だけから、求め方を理解したのである。
2つ目は、以下のものである。
推論インタープリタの使用例その2
インタープリタは、1からxまでの合計を求めているのではなく、
合計を簡単に求めるための式 x(x+1)/2 を自力で見つけ出し、答えているのである。
言語仕様は、例を見れば大体想像が付くと思うが、例だけではわからない事柄を以下に示す。
・「> 」の付いている行が人間の入力した行であり、
「> 」の付いていない行がインタープリタの出力した行である。
・「とは、」,「が、」,「で、」,「でなく、」,「でない、」,「か、」,
「っていう意味。」,「っていう意味で、」,「は、」,「になり、」,「になる。」,
「cancel」,「bye」,「trace」,「?」,「ファイルを見てね」 は予約語であり、
所定の場所でしか使えない(「、」も予約語の一部であり、省略不可)。
・「bye」と入力すると、インタープリタは終了する。
・「ファイルを見てね <ファイル名の拡張子なし>」と入力すると、
インタープリタは、コンソールから入力する代わりに「<ファイル名の拡張子なし>.src」
から読み込み、読み込み終わると、自動的にコンソールからの入力待になる。
・「っていう意味で、」を使う場合、
「か、」の個数と「になり、」の個数を同じにして、順番を一対一に対応させないといけない。
それでは、そのインタープリタを以下からダウンロードして、使ってみてください。
推論インタープリタ
直接実行のダウンロードの方では「署名がない」という警告が出るかもしれませんが、
気にせずに実行して大丈夫です。
それから、使用例の入力をキーボードから行うのは大変だと思うので、ファイルでも用意しました。
このファイルをダウンロードして実行ファイルと同じディレクトリに置き、
実行して入力待になったら
上の1つ目の場合は「ファイルを見てね infer_route_def」
上の2つ目の場合は「ファイルを見てね sum_expr_finder」
と入力してください。
infer_route_def.src
sum_expr_finder.src