コンパイラ用途

ILogが、コンパイラとして使いやすいかどうかは、死活問題なのだ。それは、Perlが文字列処理に便利だとか、そういう便利/便利じゃない程度の話ではなくて、そう、ILog自身のアイデンティティに関わる問題なのだ、とか、そういう話。


まず、用途を限定した、小さな言語の話(DSLとかいうらしい)だ。
それなりにプログラムを書いたことのある人ならば、状況によっては、ライブラリを用意したり、開発環境を整えたりするよりも、用途にあった言語を使用するほうが、何十倍も効果があることを実感したことがあると思う。
で、それとは別に、一般人がコンピュータに触れる機会が多くなった現在、これからは一般人がプログラムを書くような場面も増えてくるかもしれない、ということを考えると、必要なことだけを最低限やれて、かつ、誰でも利用できる簡単な言語っていうのは需要が増えてくるんじゃないだろうか。
つまり、DSLは今までも十分に重要な立場にあったし、これからもそれは変わらないだろう、と、僕は思うのである。


それで、だ。DSLは今のところほとんどがインタプリタであると思う。その原因は、極めて単純な話、「機械語コンパイラを書く」、というのは、敷居が高すぎるからだ(特に、移植性を考えた場合、個人でなんとかなる問題ではなくなってくる)。けど、インタプリタ、となると、やっぱり、ちょっとした問題でも富豪的解決になってしまうことは否めない。
まあ、富豪的に解決するのは別に良いんだけど、他に選択肢が無いからそうするしかないっていうのは、やっぱりおもしろくない。やっぱり機械リソースを最低限に抑えられるDSLっていうのがあってもいいんじゃないか、と思う。
で、要するに、話としては、「DSLが必要→今後は機械語に変換できるDSLっていうのもありじゃないか→じゃあ、機械語を簡単に出せたらいいじゃないか」っていうような流れだ。それで、そうなったとしたら、機械語を出すコンパイラが簡単に書けるILogの必要性っていうのが生まれてくるだろうと思う。


しかし、この話は、DSLが重要になってくる、という話が前提になっているので、ここで、「DSLが便利であったとしても、言語を用意したり勉強したりする手間を考えれば、過去のリソースが大量に残っている既存の言語を使った方が総合的にみて良い」と、いうような話になってしまえばILogの存在意義っていうのは生まれてこなくなってしまうわけだ。

つまり、ILogが必要である、とするには、用途限定言語が重要である、ということを示せなくてはいけない、と、いうことである。



そして、ILogというのは、コンパイラという用途に限定した言語、ということになっている。もし、ここで「他のリソースを捨ててでも、コンパイラを書くにはILogが良い」っていうような話にすることができれば、それは「便利である」以上に重要な意味を持つことになると思う。逆に、「やっぱり、それでも既存のモノで書いたほうがいいよねぇ」っていうような話になれば、それは結局、「じゃあ、最初からいらないんじゃネーノ」っていうような話になってしまうのである。