本文へジャンプ

研究流儀の四面体

研究はどのように進んでいったのでしょうか?

博士論文では、モデルと証明法を取り上げました。かなり精密に定義した仕様言語を設計し、「並列・平行性を持つオブジェクト」が言語の仕様を満たすかどうかを形式的に検証したのです。半年かかって論文が完成したのが77年。

78年に帰国して東工大の助手になったあと、この研究についてはしばらく何もしてないんです。並列オブジェクトについてはいろいろ考え続けていましたが、身近に計算機もなかったし(笑)。

本格的に研究を再開したのは83年、助教授になってからです。優秀な学生が集まり、柴山悦哉さん(現在は東京大学教授)も助手として着任して、「並列オブジェクト」を記述するプログラミング言語を考え、同時にコンパイラやインタープリタを作っていくことができました。

それが「ABCL」というプログラミング言語ですね。

<図:言語研究の四面体>言語研究の四面体。プログラミング言語を設計したら、処理系の実装、数学的意味論、応用プログラムも研究すべし!

そうです。最初の実装は、比較的簡単な疑似並列でプログラムを実行させるものでした。

この成果は86年に、OOPSLAというオブジェクト指向プログラミングの国際的な学会で発表して、大きな反響を得ました。国内でも、「オブジェクト指向に基づく並列情報処理モデルABCM/1とその記述言語ABCL/1」という論文を発表しています。

私は理論による裏付けと実装の両面を重視しているので、一連の並列オブジェクトの研究でも、

  1. 並列オブジェクトに基づいた計算・情報処理モデルの確立(理論)
  2. モデルを記述するプログラミング言語の設計(設計)
  3. 設計した言語に対する厳密な意味論の確立(意味論)
  4. 効率のよいコンパイラやインタープリタの開発(実装)
  5. 言語の実用(応用)

というふうに進んできました。

その経験から、プログラミング言語の研究アプローチとして、設計、意味論、実装を、「言語研究の三位一体」、それに応用を加えて立体化したものを「言語研究の四面体」と勝手に呼んで提唱しているんです。

理論と実装、実世界での利用は、相互に作用します。これらの方向性を考えていくなかで、新しい着想に出会い、さらに発展が期待できます。実際、リフレクション(自己反映計算)の概念も、そのようなところから生まれました。

「リフレクション」とはどのようなものですか?

リフレクションは、オブジェクトが自分で自分を考える、自分で自分を書き換えるというシステムです。

オブジェクト(ソフトウェア)はいろんなコンポーネント(モジュール)の集まりでできていますが、核になるモジュールが動作を停止することなく周囲をどんどん新しいものに変えていくんです。核のモジュールが自身を変えることもあるでしょう。

インタープリタも、自身を書き換えることができますよね。私はずっとプログラミング言語に興味を持っているので、そのあたりがリフレクションの発想に結びついたのかもしれません。

ABCLの評判はどうでしたか?

ABCLの論文は、本当によく参照されました。

ABCLは当初、並列計算機のようなお金のかかる環境はなかったので、普通のシーケンシャル計算機を使って実装していました。その後、私が東工大から東大に移ってから、助手さんや学生さんたちの力を借りて並列計算機上への本格的な実装が始まりました。富士通製の分散メモリ・マルチプロセッサ、AP1000への実装です。

このときに田浦健次朗さんが作った、並列計算機の上で軽量なスレッドを何万、何十万と動かす技術は、その後かなり応用されました。

この30年間、コンピュータのCPU性能は急激に向上したので、プログラムの実行速度も割合に楽に向上させられましたよね。そのため、並列技術への関心が薄れていました。最近はCPU速度向上にも限界が見え、マルチコアCPUが身近になって、また注目されるようになっています。

かつて磨かれた並列の技術が、再び関心を集めるだろうと思っています。

ページトップへ戻る