川合のプログラミング言語自作のためのテキスト第三版#10
(1) ここまでのまとめ
- ということで、HL-9aで言語の自作としてはいったん一区切りにしたいと思います(よい区切りなので)。続きもありますが、それは続編でやります。
- Windows版のHL-9aは、UPX圧縮をかけると11.5KBになります。つまり、この11.5KBさえあれば、gccなどのコンパイラを一切持っていなくても、a21_txt01_9aに示したサンプルプログラム程度ならすべて動いてしまうのです。・・・それはなかなかインパクトがある気がします。772行でこれだけできるのですから、やっぱり言語自作は楽しいなと思います。
- この表を眺めながら、どんな機能の追加が大規模な改造になるのか、そんなことを振り返れば、自分で言語を作るときの参考になるのではないかと思います。
(2) 残された課題
- 実行速度をもっと速くしたいとか、コンパイラに改造してプログラムを実行するのではなく実行ファイルを生成するにはどうしたらいいか、という大きなテーマがまずあります。それは真っ先にやるとして、それ以外にどんな発展があるかを考えてみます。
- [1]関数を作って呼び出せるようにする。
- HL-9aは関数が作れません。関数の呼び出しも組み込み関数に限られています。これはかなり残念な仕様なので、まずここをどうにかしたいです。
- [2]ローカル変数に対応する。
- HL-9aの変数はすべてグローバル変数で、ローカル変数がありません。関数が作れるようになったら、この点も何とかしたいところです。
- [3]整数型以外にも対応する。
- HL-9aは符号付きの整数型のみに対応しています。でも符号なし整数や浮動小数点型にも対応したいでしょう。さらには構造体やクラスにも対応したいところです。
- [4]プリプロセッサにも対応する。
- #defineや#includeなどができるようになれば、かなりC言語に近づく気がします。
- あれ?もっとたくさんの課題が残っている思っていましたが、実際に書き並べてみると意外と少ないなと感じました。もちろんより上を目指すならやることはさらに増えますが、C言語に追いつくだけならそんなに大変ではないかもしれません。
(3) 私はこの言語をどうしようと思っているのか?
- 私はこの「はりぼて言語」がかなり好きです。なぜなら、すごくシンプルで改造がしやすいからです。
- あと、C言語に似ているところも気に入っています。
- ということで、まずは「はりぼて言語」をJITコンパイラ化して高速化しようと思います。それを続編の最初の目標にします。
- 私は実行が速い言語が好きなので。
- 次に、私は「自分の生産性を上げるための言語」を作りたいと思っています。そう、独自の言語を作るからには、やっぱり既存言語よりも便利な言語にしたいのです。
- さて便利かどうかはどうやって実感すればいいでしょうか。それはやはり、この言語でプログラムを書けば、他の既存言語よりも短くかけるよと確認できればいいのだと思います。
- 私は理論的にあれこれと考えるのが得意ではないので、具体的にアプリケーションを想定して、それを複数の言語で書き分けることで、優劣を比較したいと思っています。
- そうすると、ではどんなアプリケーションを想定するか考えなければいけません。・・・私がここしばらくメインで開発しているもののほうがいいだろうと思いました。・・・ああ、プログラミング言語の処理系だ・・・。
- ということで、当面はプログラミング言語を作りやすくするための言語を作ることにします。
- また、当面は「はりぼて言語」の開発ばかりすることになると思うので、つまり私ははりぼて言語ではりぼて言語を作るように進めていくのが正解のように思います。ということで、セルフホストを目指そうと思います。
次回に続く
こめんと欄
|