本年度は、主に部分評価組み込みコンパイラの作成を行ない、そのコンパイラを使って応用プログラム(具体的には流体力学シミュレーション)のコンパイルを試みた。その結果、以下のようなことがわかった。 ・部分評価の知識を使うと、強力な関数展開を最適化として行なうコンパイラが作成可能である。ユーザが簡単な注釈を書くことで、きめ細かく関数展開を制御することができる。 ・注釈を書くのには、部分評価の知識は不要で、関数展開(インライニング)のことがわかっていれば大丈夫だが、一方で、いちいち書かなくてはならないのは煩雑である。これを自動化すべく、無限関数展開を防ぐような注釈の自動生成法についても研究を行ない、実装した。この部分は、まだシステムには組み込まれていないが、いくつかのプログラムについて、注釈の自動生成ができている。 ・流体力学シミュレーションのプログラムは、比較的、単純なループが多く、関数展開だけではそれほど大きな最適化はできない。より高度な最適化を行なうためには、Fortranなどで用いられている解析をする必要がありそうである。 ・別の応用として、部分評価が有効であると考えられている自己反映言語のコンパイル実験も行なった。その結果、適切な注釈をつければ、十分なコンパイルが行なえることがわかった。自己反映言語はアスペクト指向言語の一部の機能を実現できるので、ここでの手法はアスペクト指向言語のコンパイル法を与えていることになっている。 ・自己反映言語のコンパイル実験に付随して、自己反映言語を直接形武で書く研究も行ない、実際に直接形式の自己反映言語を設計した。従来、自己反映言語は継続渡し形式で書かれていたが、それをコントロールオペレータを使うことで直接形式でも書けることを示した。
|