インターネットのような分散ネットワークや Sun Enterprise シリーズのような並列マシンが急速に普及するにともない、複数のプロセスが相互に通信しながら計算を行う並行プログラミング (Concurrent Programming) が注目されています。たとえ分散・並列環境でなくても、ウィンドウ・システムのような本質的に並行性のある対象には、やはり並行プログラミングが有効であろうと考えられています。
関数プログラミングのモデルに λ-calculus があるように、並行プログラミングのモデルとしては π-calculus や HACL といった並行プロセス計算 (Concurrent Process Calculi) が提案されています。また、並行プログラミングをサポートする言語としては、Concurrent ML や Pict、HACL などがあります。
本課題では、π-calculus にもとづいた Pict という言語に関する論文の一つを読んでもらってから、Pict の核に相当する簡単な並行プログラミング言語のインタプリタを作ってもらおうと考えています。最低限の機能だけなら、ML でうまく書けば(parser を除いて)数十行で実装できますので、自分なりにいろいろな拡張を試みるとおもしろいでしょう。もし自分で作ることはできなくても、既存の処理系を使って、並行プログラミングを体験することは可能です。
並行プログラミングには、通信のオーバーヘッドや非決定性・デッドロックなどの、逐次プログラミングにはない特有の問題が存在します。そのような問題に対して当研究室では型システムを利用した解決策を研究しています。これは、この数年の国際学術会議・学会誌で発表された、最新の話題です。詳細は課題2に譲りますが、意欲のある人はそれら(の一部)を組み込んでみるのも良いと思います。