Web 鼎談:コンピュータ・サイエンスは21世紀の基礎科学になるか?

総集編 No.8

11月の鼎談

鼎談の表紙へ, 鼎談のあらすじへ, キーフレーズから見た鼎談へ,


8.1.理論計算機科学以外の観点からCSを語る

10月の鼎談から
松井: CSは新しい基礎科学かもしれません. だったら, それが連れていってくれる世界は何か新しいものなのです. それはどんな世界でしょう?

[0149] 根上 どうなっていけば CSが立派な基礎科学に昇格(?)するのかを考えましょう.

そういうことです.

渡辺さんが言っていることは, 現状のCS(のうちの理論)の動向を表現しているのだろうけれど, 私には渡辺さんの最初の「予言」を自ら成就させないように 話をもっていっているように聞こえてしまうわけですよ. 予言を成就させるために, やらせをするよりはいいですけどね.

というわけで, 「CSでは構造を前提としない」は認めてあげるとして, そういう研究分野が基礎科学に昇格 (基礎科学の方が偉いという偏見に満ちた発言)するためには, どうなっていけばよいかを考えるべきでしょう.

[0150] 根上 理論計算機科学からコンピュータへと目を向けてみませんか?

当初, 「コンピュータ・サイエンス」という言葉が一人歩きをしていて, 単なるソフトウェアの使い方の研究のように思われて困るという発言があったと思います. でも, 私たちの議論は渡辺さんが関係している理論計算機科学に終始していたように思います. つまり, 私たちがそういう意図ではないとしても, 本当のコンピュータ・サイエンスとは理論計算機科学なんだと 私たちが決め付けているように取られても仕方がないような議論をしてきたのではないでしょうか?

「コンピュータ・サイエンス」という言葉は, 無定義でもそれなりの雰囲気や意味を感じさせてくれる言葉ですよね. その感じは「計算」とか「構造の稀薄さ」のような議論だけで特徴づけられないように思うのですが. 計算機科学と書いてしまうと, 機械の「機」の字が目に付いて, 計算とかアルゴリズムとかばかりが想起されますが, 「コンピュータ」というと,もっと広い世界が感じられます.

あえて矮小化して言えば, いまどき「コンピュータ」と聞いて プログラムして計算する機械だという思う人なんかいないでしょう.

たとえば, パソコンを目にしたときにその背後に思い浮かぶ基礎科学は, 電気仕掛けなんだから電子科学,そしてその背後にある物理学でしょう. またCGを見て, それができるのも何らかの数学的な基礎があるからだ, と思ってくれる人も多いでしょう. 本当のところはわからないにしても, こういうふうに物理学も数学も基礎科学として認知されているわけです. 一方, パソコンのどこに計算機科学が隠れているのでしょうか? その隠れ方を考えると基礎科学としての位置が見えてくると思うのですが.

この時期, 松井氏も私も忙しくて議論にあまり参加できないでいました. でも理論偏重だったのを軌道修正してくれたのは, さすが根上師でした.

[0154] 根上 実際に目の前にあるコンピュータやソフトを見つめてみましょうよ.

みんな忙しそうだから私がもう少し独走してしまいます.

パソコンを見ていて思うことは, 「ディスプレイ上に現れている世界って他にないな」とうことです. たとえば私のパソコンだと, ディスプレイの壁紙は等身大のヨーダの写真だし, アイコンがいっぱい並んでいるし, 必要に応じてウィンドウが開くし, この鼎談の書き込みのできるし...

こういう世界は自然界を見回したところで見たりません. 数学が扱う抽象的な世界ほど抽象的ではなくて, 物理学が扱う具象の世界ほど具体的ではない. 人間が作り上げた世界ですよね.

ソフトウェアの使い方の話をするのなんてコンピュータ・サイエンスじゃない, とか言って目の前の世界から目を背けてしまうと, 大事なものを見失ってしまうような気がします.

目の前に展開されている人工的な世界. それを思うと渡辺さんがさんざん言っていた「人工物」という言葉が活きてくるのではないですか.

[0156] 渡辺 「前提なし」の話をTVゲームの例でいうと.

もう少し「かため」に話させてください.

松井さんは 「(CSは)構造を前提としていないから自由に形を変えられる」と言われました. もう少し正確に言うと, CSでは「どんな変な世界でも,ルールさえきっちり作れば, それは対象として受け入れられる」のです. 今までにコンピュータ・サイエンスで培われてきたものは, そうしたルール作りや, できたルールに従う世界を探求する手法なのです. この手法(パラダイム)が基礎科学へ昇格する鍵だと思うのです.

そんなのは数学でもやってきたと思われる方も多いでしょう. たとえば,非ユークリッド幾何などがその例です. まったく新しい公理(ルール)を設定して, その上での数学を構築しているのですから.

でも, コンピュータの世界では,それが極端なのです. 大げさにいえば, 一つ一つのプログラムが公理系になっているような世界です. たとえば, ゲームソフトのプログラムの一つ一つが, ある種の世界を作っていると言えばわかりやすいでしょうか? とても実現できない世界だったり, あるいは矛盾さえ含んでいる世界かもしれません. でも,一旦,そのソフトを走らせたら, コンピュータはその世界を仮想的に実現しているのです.

[0158] 根上 そのルールだってなんでもいいわけではないですよね.

なるほど.

その通りなのだろうけれど, 発想がボトムアップ的ではないでしょうか. 現在動いている計算機科学が中心になっていませんか? この後に,どうして人為的にルールを決めることがよいのか, という理由が語られるのでしょうか? それならば待っています.

そもそも,そのルールだってなんでもいいわけではないですよね.

一方,私の方は, コンピュータという人工的な世界を提示する機械を前にして, 何が見えてくるかを考えようと言っているわけです. その結果, 「人工的な世界を創造するには人為的なルールを決めることが重要」という結論になれば, 渡辺さんの言っていることにつながっってきます.

その後は, どういうルールがいいルールで, そのルールをどうやって表現するかとか, どうやって機械的に実現するかといった議論になっていけばよいのですが...

[0159] 渡辺 ルールだったら何でも O.K. です. 唯一の制約は記号で書き表すことができることです.

ルールだったら何でも O.K. です. 唯一の制約は,記号で書き表すことができる(つまりコンピュータにのる)ということです.

ただ,もちろん,矛盾だらけのルールに基づく世界では, まともな展開を期待はできません. (まともでないのがおもしろい場合もありますが, 残念ながら大抵の場合はおもしろくありません.)

8.2.「コンピュータにのる=記号で書ける」の構図

[0160] 根上 記号で書けるルールのよさとか必要性とかを表現してほしいです.

そもそも「記号で形式的に記述できればよい」というルールを誰が決めたのですか?

記号で書けるルールのよさとか必要性とかを表現してほしいです. そもそも「記号で形式的に書ける」とはどうことなのかも知りたいですね. だって,文字だって記号なわけだし,言葉だって,一つの形式として見ようとする人だっていますよ.

また, 「コンピュータにのる=記号で書ける」とい構図があるようですが, 普通の人にとって, この「=」は当たり前のことには見えないと思います.

[0161] 松井 「コンピュータにのる=記号で書ける」の話から切りこみませんか?

「記号で書き表すことができる」 と「文字だって記号なわけだし」の掛け合いは不毛な予感がします. 「記号で記述できればよいというルールを誰が決めたの?」は議論しなくていいですね.

それよりもむしろ, 「コンピュータにのる=記号で書ける」の話から切りこみませんか?

[0163] 根上 普通の人間の感覚では左辺と右辺の間には,かなり距離があると思います.

そうしましょう.

ゲームのたとえでいくならば, ただゲームで遊んでいるだけの人は

そのゲームが記号の連鎖として表現されている,もしくは実現されている
とは思わないでしょう.

「コンピュータにのる=記号で書ける」自体には私も同意します. でも普通の人間の感覚では, 左辺と右辺の間には,かなり距離があると思います. その距離を埋めるような話をまずすべきです.

[0164] 渡辺 う〜ん.どのようなことを説明したらいいのでしょう?

う〜ん.どのようなことを説明したらいいのでしょう?

コンピュータはプログラムというものに従って動いていて, そのプログラムは単純な命令(規則)の組み合わせを並べているものであって,... という説明は,大抵の人が知っているのではないでしょうか?

それともこういうことから始めますか?(読者を馬鹿にしているような気がするのですが.)

この時点では, 何が「普通の人にとって疑問」かを理解していませんでした. つまり「CSおたく」になっていたのですね. それにすら気がついていませんでした.

[0165] 根上 概念的にわかるのと実感するのでは違うのですよ.

よわったなぁ.

いつものごとく意図がわかってもらえないみたいなので, ちょっと昔話をします.

その昔,私がまだ東工大で助手をしていた頃のことですが, 3年間の歳月をゲーム作りに費やしていたことがあります. (他の仕事だってしていましたよ.これはあくまで私の趣味です.) ゲームの高速化を図るために, BASIC から C へ,さらにはアセンブラへと勉強を進めました.

こういう段階の話でとどめておけば, 「プログラミング=記号で書く」を誰もが当然のことと受け止めてくれるでしょう. でも, そういう機械的なことだけではゲームは作れません.

私が開発していたのは,いわゆる RPG のようなもので, 迷宮の中をモンスターをやっつけながらキャラクタが進んでいくわけです. というわけだから, モンスターの一挙一動をプログラミングしなければならない. それを昔のプログラミングスタイルでは, そこに登場するものすべての動きをコマ撮りするような間隔で分解して, それを1つの大きなループの中に納めて回さなければならなかった.

それに対し, モンスターの動きを個別にプログラミングできて, それをメインのプログラムにほうり込むだけでよい, といったスタイルのプログラミングができれば, どれほどに便利なものかと思いました. いま思えば, オブジェクト指向プログラミングのようなものを自前で用意していたような気がします.

そういう細かいことはさておき, 私も自慢しーだから, ゲームが出来上がると誰かに見せにいくわけです. で,私はその昔,北棟と呼ばれる建物の6階あたりに出没して, 松井さんの仲間のような人たちにそれを見せたわけです.

そのときの反応は 「こういうゲームって,いったいどうやってプログラミングするのですか?」でした.

プログラミングをしたことのない人が,その仕方を知らないのは当然ですが, 彼らは自分たちも普段からプログラムを作っている. いわば専門家です. でも,彼らのプログラミングとは全然別物に見えたのです.

彼らが普段やっているプログラミングの延長上に 私のプログラミングがあるようには思えなかった. 私が彼らに見せたプログラムは, 記号の列としてのプログラムとは実感できなかったのでしょう.

もちろん,私のプログラムといえども,ソースは記号の列です. モンスターやキャラクタや背景の絵などを表すビットパターンもある意味では記号です. 彼らだって,概念的には知っています. でも感覚的にはそう思えない.

要するに, 周期表(原子の表)を見て,この地球上の化学物質がすべて理解できる, 相対論だけから宇宙の森羅万象が理解できる,という発想です. 物理では, 素粒子や基本的な力の理論だけを解明すれば, 宇宙の森羅万象はすべて説明できるという感覚は, それなりの普及率があると思います. そして, その普及率と「物理学は基礎科学である」ということの認知度は比例関係にあるでしょう.

数学の場合も,...これは今度にします.

この比例関係を期待するならば, パソコンのディスプレーで展開している人工的な世界と 記号的に動いている機械語レベルの世界とをつなぐ価値観や それを包括する世界観を誰かが雄弁に語らないと, CSが基礎科学に昇格する日は遠いと思います.

つまり, 人間が表現できる世界・表現したい世界を, コンピュータというメディアを通してどう表現しようとしているのか, CSはそれをどう考えていくのか, このあたりを語って欲しいのです.

==> 12月の鼎談へと続く


鼎談の表紙へ, 鼎談のあらすじへ, キーフレーズから見た鼎談へ,