このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

小さなプログラミング処理系を作る 言語処理系と周辺ツールへ

まず、

すべて具体的に考えよ。できるだけ抽象的に考えよ。抽象的なことも具体的に考えよ。

日本語が変なのは承知だが、そうとしか言えない。

「具体的」とは、なんとなく想像しているのではなくて、事例を探す、経験をする、ってこと。没入した体験が必要。知性よりは、肉体とか感性のレベルの体験。「バカみたい」「子供っぽい」「そんなこと…」なんて考えはやめよう。


今回のミニ言語、高級言語処理系とツールを作る前に、“機械語プログラム”をする。仮想機械が出来てないなら、机上でもよい。なにが大変かが身を持って(=肉体的に)分かるだろう。

例題は:

  1. y = x*x + 2; z = (y - 3)*(y + 3); w = x + y + z; のような制御なしの算術計算
  2. 与えられた正の整数nに対して、0から(1からでも同じだが)nまでの和を求める
  3. 似てるが、nの階乗を求める。
  4. 与えられた2つの正の整数n, mに対して、その最大公約数を求める。アルゴリズムユークリッド互除法を用いる。

VM(のインストラクションセット)には、最低限の制御構造は必要。手続き呼び出しはなくてもよい。機械語しか使えない大変さと不便さを体験して、どうしたら楽で便利になるかを考えて、欲しいものを列挙する。