プログラミング環境と言語処理系研究室
岩澤京子教授
NEWS
1
プログラムをコンピュータの命令へ
-
Qなぜ、研究を?
-
A私は、若い頃からプログラムを書くのが好きで、単純な処理を組み合わせて複雑なシステムを作り、間違いを探し出して直し、実行させるというというプロセスが本当に楽しいと思っていました。
特にコンピュータを動かすシステムソフトウェアに興味があり、メーカーに勤務していた時には、同僚たちと喧々諤々の議論をしながら、世界一速いスーパーコンピュータを目指して、新しいコンパイラを研究・開発してきました。
その時に、最新の高度なハードウェアを生かすも殺すもプログラムを解析して命令語を生成するコンパイラの能力次第、ということを実感し、コンパイラの重要性と面白さに魅かれて研究をしています。
また、最近は、高度なコンパイラの解析能力を、命令の生成ばかりでなく、プログラミング支援に応用することができないかと、プログラム開発環境の研究も行っています。
その時に、最新の高度なハードウェアを生かすも殺すもプログラムを解析して命令語を生成するコンパイラの能力次第、ということを実感し、コンパイラの重要性と面白さに魅かれて研究をしています。
また、最近は、高度なコンパイラの解析能力を、命令の生成ばかりでなく、プログラミング支援に応用することができないかと、プログラム開発環境の研究も行っています。
ポイント!
コンパイラとはプログラミング言語で書かれた指令を、コンピュータが理解できる機械言語に変換するソフトウェアのことを示します。通常はそのソフトウェアがあることで、プログラムを実行すれば、自動的にコンピュータがそれを処理する仕組みです。
コンパイラとはプログラミング言語で書かれた指令を、コンピュータが理解できる機械言語に変換するソフトウェアのことを示します。通常はそのソフトウェアがあることで、プログラムを実行すれば、自動的にコンピュータがそれを処理する仕組みです。
-
Qどこがよいか
-
A処理速度の高速化はコンピュータにとって重要な機能です。
その手段の一つに様々なレベルでの並列実行が取り入れられています。
並列実行は複数の処理を同時に進めるものですが、並列プログラムは開発するのが難しく、再現性がないことから誤りを修正するのが困難です。
そこで、自動的に並列に実行することができる実行文を見つけだしたり、並列に実行できるようにプログラムを変更したりできます。
特に複雑なプログラムを解析して、並列に処理できるよう実行文を並べ替えたり、複雑さゆえにかかりすぎてしまう処理時間(オーバヘッド)が小さくなるよう、大きなかたまりで捉えることができるのが特徴です。
並列実行は複数の処理を同時に進めるものですが、並列プログラムは開発するのが難しく、再現性がないことから誤りを修正するのが困難です。
そこで、自動的に並列に実行することができる実行文を見つけだしたり、並列に実行できるようにプログラムを変更したりできます。
特に複雑なプログラムを解析して、並列に処理できるよう実行文を並べ替えたり、複雑さゆえにかかりすぎてしまう処理時間(オーバヘッド)が小さくなるよう、大きなかたまりで捉えることができるのが特徴です。
-
Q造ったモノ
-
A新しいコンピュータシステムや新しいプログラミング言語が、考案されると、それらに対する新しいコンパイラが必要になります。
しかし、その開発は、量的にも時間的にも非常に困難です。
そこで、他の大学や企業の人たちと、新しく高度なコンパイラを簡単に開発できるような誰もが利用できる形のコンパイラ・インフラストラクチャを研究開発してきました。
> COINSコンパイラ・インフラストラクチャ ( http://coins-compiler.osdn.jp/ )
これは、ただ構文解析して、命令語を生成するだけでなく、プログラムの実行の順番はデータの動きを解析して、より早く動くような命令を生成したり、並列化する機能があります。
-
Q現在の研究
-
Aより高度な並列化を進めるための解析や、プログラム変換技術の研究開発を進めています。
完全に自動化するだけでなく、プログラムのことを一番よく知っているユーザからプログラム作成時に意味のある情報をもらったり実行した時の情報を取りこんで、最適化・並列化することを考えています。
一方このような情報は、プログラムの作成やデバッグにも役に立つ情報が多いので、ユーザにわかりやすい形で提供して、プログラム開発を支援するシステム開発に取り組んでいます。