ソフトウエアサイエンスは何処に行くのか?
僕は数年前までソフトウエアサイエンスをやっていた。「ソフトウエアサイエンス」ってのは
かなり新しい名前のようで、昔はプログラム理論だのソフトウエア基礎論だのと呼ばれていたと思う。
1980年代に大きく発展して、それ以前のプログラムの検証や自動合成を中心に研究されていた
「プログラム理論」とはどうも感じが違うという事で、「ソフトウエア基礎論」っていう言葉が使われる
ようになったと思う。「ソフトウエア基礎論」は、数学基礎論に対応するものとして考えられた
言葉ではないかと思うが、机の上で基礎理論だけを論じるばかりでなく、かなり実践的な応用も含めて
研究されるようになってきて、「基礎論」のままではまずかろうという事になり、「ソフトウエアサイエンス」
という名前が生まれたのだと想像している。僕自身は、つい最近「ソフトウエアサイエンス分野の
研究者募集」という某大学の教員公募で始めて知った名前である。
名前はまあカッコ良く(?)なったのだけど、この分野から足を洗う直前には、
この学問が一体何を目指しているのか、どこへ向かって行けば良いのか よくわからなくなっていた。
-
ソフトウエアサイエンスとは
ソフトウエアサイエンスというのは、プログラミング言語の数学的モデル
を研究する学問で、数学基礎論の証明論や帰納関数論の方法から強い影響を受
けている。むしろ、数学基礎論の一部であると考えることもできる。証明論や
帰納関数論とは、数学で当り前のように使っている計算や論理の構造につ いて深く研究する学問だが、計算や論理という点では、計算機のプログラミングで
も同じ事が問題になる。だから、その方法を使えばプログラミング言語の数学
的モデルが作れて、それを研究することができるというわけだ。 良い数学的モデルを作ること、数学的モデルの性質を調べること、そして
数学的モデルをつかって、ソフトウエアの色々な技術上の問題を解決すること、
の三つが中心的な研究テーマになる。
-
ソフトウエアサイエンスのモティベーション
じゃあ、何のためにプログラミング言語の数学的モデルを研究するのだろ
う?考えられる事としては、知的好奇心からというのと計算機科学への貢献の
二つが挙げられる。知的好奇心の問題は後回しにするとして、「計算機科学へ
の貢献」って一体何なのか? 商業的世界では、計算機技術は目まぐるしく変 化し
て、技術者は日々それに対応していかなければならない。でも、目まぐ るしい変化といっても、本質的な部分はそれほど変わっている訳でもない。
次々とリリースされる新製品、新プロダクトが、必ずしもソフトウエアの 本質的な問題を解決した結果生まれたものではないし、むしろ
小手先の工夫の結果でしかないことが多い。 そういった、表面的な技術の 改良ではなく、本質的な所をきっちり研究することにより、計算機
技術が経験科学としての計算機エンジニアリングではなく、より普遍 性をもった計算機科学として大きく発展させられるのではないか?こ
のあたりが、ソフトウエアサイエンスのモティベーションであろう。
-
でもやっぱり虚しいよ
しかし、僕はそういうモティベーションで行うソフトウエアサイエンスの
研究って、とても虚しい気がする。だって、計算機科学だか計算機エンジニア
リングだか知らないけど、この分野は表面的な技術を追いかける事にしか興味
が無い人達が動かしているのであって、ソフトウエアサイエンスの人がいくら
良い研究成果を出しても誰も見向きもしない。下世話な話をすれば、例えば大
学の工学部みたいな所でソフトウエアサイエンスの研究者のためのポストはほ
とんど無い。また、そういう研究者がいる大学でも、学生がほとんど集まらな
い。学生を中心とした人が集まらないと、理論的成果の実証研究が進まないか
ら、ますます研究成果を広く認知させるのが難しくなる。また、実証研究をや
らないと理論研究も先細りになりがちになる。後継者は育たないし、ソフトウ
エアサイエンスの素養を持った人材を安定的に世の中に送り出すシステムも存
在しないし、その必要性も認識されていない。
-
何だか閉塞状況みたい
僕は、そういう状況を打開すべく努力している人達に最大限の敬意を払う
べきだとは思う。だけど、計算機屋の大きな世界の中で、小さな集団が孤立し
ているというのは、状況としてかなりきつい。何か良い研究をやっても、小さ
なコミュニティーの中の内輪ウケだけに終るわけだし、少ないポストや予算の
取り合いから、つまらない足の引っ張り合いが横行しないとも限らない。実際、
ヨーロッパやアメリカ合州国あたりでは、論文の査読妨害などのいわゆるアカ
デミック・ハラスメントが、数学などに比べて多いような気がする。僕のまわ
りでも、少なくとも三人は査読妨害の被害を受けている。僕自身も、ヨーロッ
パ系の国際会議や学術雑誌に論文を投稿して、実に下らない査読妨害をたびた
びうけたので、かなり頭に来ている。そうなると、学問のレベルや質を維持す
るのも、かなり大変になってくるのではなかろうか。
-
いっそ工学から離れしてみれば?
ソフトウエアサイエンスは、歴史も浅いし、固有の価値観や方法論が確立
した分野ではないのだから、小さな世界に閉じ籠っていてはだめである。近接
分野と交流したり、自然淘汰を前提とした多様な価値観での研究が必要だと思
う。現実問題として、計算機屋の世界で孤立している訳だから、いっそのこと
数学の世界と合流してはどうか?海外の大学では、伝統的に数学と計算機科学
は同じ学科で一緒にやっている事が多いし、純粋数学至上主義と数学基礎論へ
の偏見が強かった日本の大学の数学科でも、理論系の計算機科学の人が採用さ
れるようになってきている。計算機科学は経験科学で十分なのであって、理論
的体系化など誰も望んでいない。工学部での教育・研究は、今日明日の技術を追いか
けていればよろしい。ソフトウエアサイエンスは数理科学として新たな発展を
図るのだ、と方針転換を図る良い時期に来ているのではないか。
-
数理科学としてのソフトウエアサイエンス
しかし「数理科学としてのソフトウエアサイエンス」という路線も、それほど
容易な道ではないと思う。この場合、ほとんど知的好奇心だけがモティベーショ
ンになる。僕自身は昔から純粋数学至上主義者だし、数学基礎論への偏見も持っ
ているから、数学として見た場合、ソフトウエアサイエンスがそれほど面白い
とは思えない。たとえば、一見全く異なる現象が深いところで実に美しく結び
ついている、というような結果がいくつかあれば面白いだろう。ソフトウエア
サイエンスにおいて、そういうタイプの結果はたまに発見されるけれど、今の
ところそれ程多くはないし、結果の深さにおいてはるかに優る定理は数学には
山程ある。また、今や数学の世界は、従来の代数、幾何、解析、応用数学といった
垣根がほとんど意味を持たなくなるほど相互に深いつながりの中で研究されて
いる。「数学は一つ」という感じが強くなってきているし、代数、幾何、解析、
応用数学がからみあっている部分が研究として面白いのだ、という価値観もあるよ
うに思う。しかし数学基礎論は、数論や代数幾何との間で深い関連があるもの
の、「総体としての数学」からちょっと孤立した観がある。数学基礎論の子供
とも言えるソフトウエアサイエンスが、「総体としての数学」との間に、親の数
学基礎論に優るとも劣らない深い関連を見出せるとは、今の所信じ難い。例え
ば、ソフトウエアサイエンスでもトポスや層(シーフ)の理論を使っているでは
ないか、と言うかも知れないが、ソフトウエアサイエンスで使っている層は、
層の抜け殻のようなものでしかない。(コホモロジーを使わずして何の層ぞ!?)
-
ソフトウエアサイエンスは何処へ向かうのでしょうかね?
数学の物差しから見て、ソフトウエアサイエンスが現在の数学に対抗でき
るぐらいの学問に成長するには、まだ時間がかかるだろうが、この分野の研究者
の全てがそういった事を目指しているとも思えない。だらか、ソフトウエアサ
イエンスの研究者も、数学の世界の中では、しばらくきつい状況が続くのでは
ないかとも思う。数学科みたいなところに採用された研究者も、何となく孤立
感にさいなまれているのではないだろうか。まあ、人の事だからどどうでもい
いけれど。当面、工学の世界にも数理科学の世界にも広がって行きそうに無い
し、一体ソフトウエアサイエンスは何処へ向かっているのでしょうかね?まあ、
僕はもう足を洗ったから関係ないけど。