やっぱ言語から作らないとダメだな〜(ヲイ)

先日のCTFE時パーサで自爆してから色々考えた。

どうもdmdのCTFEの実装が怪しくて(メモリリーク?)それでメモリ不足に陥っているんじゃないかしら……。GDCでも同じコードを使っているはずなので、interpret.cあたりを修正してみて試せばOKだろう。

が、まあそれは置いておいて。

D言語は変化が速いし、プログラミングしている最中に言語仕様の方がどんどん変わってしまう。コンパイラのバグ抜きもオープンソースでないのでできない。それに、D言語が切り拓いてくれた場所から未来のコンパイラが何となく見えた気がする……。

だから、ここはひとつ理想の言語を自分で作ってみようかと思う。


真のハッカーは、OS・エディタ・コンパイラ作らなければならないという格言があるが、ボンクラひよっこプログラマの僕もそれに乗ってみようという魂胆だ。

妄想としては、

  1. 理想言語コンパイラD言語で実装。
  2. 理想言語コンパイラで理想言語コンパイラを実装。
  3. 理想言語コンパイラでOSを作成。
  4. 理想言語コンパイラでエディタを作成。
  5. OS上でエディタを動かして理想言語コンパイラをメンテナンス。

といった感じになるだろう。

理想言語には以下のような要素が含まれると思われる。

  • C系の普通の文法。
  • 完全なCTFE。
  • CTFEによるコード生成支援機能。
  • CTFEで構文木にアクセス・編集可能。
  • いっそ組み込みPEGパーサ。
  • もっとスマートなテンプレート。(引数の制限とか特殊化とかどうにかできそうな気がする)
  • 関数の引数束縛(bind)とかも組み込みでやっちゃう?
  • テンプレートの引数束縛も必要。
  • 仮想マシンでも動かせるしネイティブコードも吐ける。LLVM風。
  • プラグイン機能。いっそほとんどの言語機能をプラグイン化とか。
  • $iとか$_とか使える。
  • ドキュメントコメントは言語の一部。helpプロパティで説明が読めるとか。
  • オブジェクトの生存期間を記憶クラスで指定可能。(heap Objectとstack Object、heapはstackに暗黙変換可能とか)
  • まだ何も考えてないけど外部イテレータもどうにかできると良いなあ。

などなど。他にも何かアイディアがあれば教えてください……。

参考資料

コンパイラの構成と最適化

コンパイラの構成と最適化

C++の設計と進化

C++の設計と進化