ソースコードのmodularityの低さ(4)

長々と書いてしまった。全然話しが進みやしねぇ。

もう、ソースコードコンパイラの特定のバージョンを強要するのは別にあっても構わないと思う。COMインターフェースで特定のバージョンの実装を要求するのと同じである。

それが叶わないならば、コンパイラを自作してしまうことだ。欲を言えば、VM(Virtual Machine:仮想マシン)とJITコンパイラを用意して、その上に自分のコードを構築する。こうしておけば、新しい環境が出たとしてもVMを新しい環境に移植するだけの手間で済む。

VMの仕様を考えるのが面倒なら.NETのIL(Intermediate Language:中間言語)をそのまま使ってもいい。これ、使っておけば少なくともLinuxならmonoベースで動かせなくはないだろう。JITコンパイラも作るのが面倒なら、managed C++でもC#でも好きなのを使えばいい。まあ、.NETのIL用のコンパイラは比較的作りやすいので、簡単なコンパイラなら大学のプログラミングの演習程度の手間で作れなくはない。まあ、それこそ、1日か2日あれば十分だ。

ともかく、その上にいろいろ構築していく。そうすれば、コンパイラのバージョンが上がることはない。自作のコンパイラをバージョンアップしたいのならば少なくとも自己責任だし、納得はいく。(気がする)

さて、話を戻して、部品としての要件についてもう少し突っ込んで考えてゆこう。このへん、自作の言語なら何でもありだ。