ビスケットのあれこれ

ビジュアル言語ビスケット(Viscuit)に関するあれこれを書いてゆきます.

プログラミングはサイエンスか

2013-11-12 01:47:54 | 1
先週末に,お台場でサイエンスアゴラという科学コミュニケーションの祭典にビスケットを出展してきました.
「ビスケットによるプログラミング入門」
サイエンスアゴラは6年目だそうで,ビスケットは初出展です.

やってみた感想としては,子供たちに大人気.幼稚園児でも楽しんでできるので,二日間で何度も足を運んでくれた人もいて,僕らのブースだけちょっと違う雰囲気でした(お隣の黒ラブ教授も他所とは違う雰囲気でしたが).僕たちは,もっといろんな客層を相手にビスケットのイベントをやっていますから,こんな科学教育に理解のあるご家庭のお子さんたちには,ものすごくやり易かったです.みんな頭も良いし,素直だし.それと僕は,色々な科学館の方達ともお話できたし,熱心な親御さんともお話できたし,出展してよかったです.

サイエンスアゴラは前から知ってましたが,これまで出展するのに少し抵抗がありました.その理由は「プログラミングはサイエンスか」ということです.僕自身はサイエンスであると強く思っていますが,一般人はともかく,隣の分野の人たち(たとえば,物理とか化学とかがっちりサイエンスな人たち)からみて,まったくサイエンスであると思われていない,ということをうすうす感じているからです.

僕が学生の頃所属した研究室の教授はすごく理解がありましたが,そこの助教授がガチガチの理論物理でコンピュータを軽蔑していました.コンピュータは学問ではなく就職に有利だからやっているのだろう,と言われました.30年くらい前の話ですけどね.他の科学者たちも,その人ほど思ったことを口にはしないとは思いますが,でもそんなものだろうとは思っています.

いろんな科学館に行ったって,FAXの原理とか,0と1でなんとかとか,底の浅そうなあんまり面白くない展示が多いですから.

コンピュータは何かやりたいことを作るための道具としてはしっかりとした地位を確立したと思います.しかし,ものを作ることに重きを置き過ぎて,コンピュータとはいったいなんだろうか,といったことを考える対象としては見られなくなってしまった.僕が危惧するのは「コンピュータとはなにか」を深く考えずにすごい未来は作れないということです.

一つの例が,ビスケットによる感染のシミュレーションです.
動画
これを説明すると本当に皆さんに面白がってもらえました.この例は「情報とは何か」ということを非常にシンプルに説明しています.普通の物は二つに分けると,それぞれの分量は半分になります.物質は保存則が働くということですね.それに対して,情報はコピーしても減りません.コピーしたものは元のものと全く同じになります.言葉で言うと当たり前のようですが,この原理で動くので,感染は指数関数で広がって行きます.病気がうつった相手も自分と同じ感染源になるわけですから.よく「風邪は他人にうつしたら治る」という冗談を言ったりしますけれど,本当はうつしても治りませんね.病原菌がリソースであれば,相手に渡してしまえば自分は治りますけれど.つまりここでは病気は「情報」としての性質をもっているということなのです.

もう一つは,プログラミング言語の可能性ですね.どれくらいプログラミング言語は人間の発想を超えて自由になれるのか,ということです.ビスケットの入門で出てくる面白い例があります.

魚がボールをツンツンする,というプログラムです.

上のメガネは魚はまっすぐ進む.下のメガネは,魚がボールに当たったら,ボールは前に進んで,魚は後ろに下がる,です.
これを動かすと,魚はボールにツンツンする動きになります.ところが,このメガネのなかのボールと魚の配置を入れ替えると,まったく違った動きをします.

これは,魚とボールがぶつかると,魚とボールは後ろに下がります.その結果,魚はボールを加えて後ろに引っ張っているような動きをします.別の例では,魚がボールに乗っかって動いているように見えたり,ヘディングしたり.
動画

ビスケットの動作は,ステージ場の絵の配置に対して,メガネの中の絵の配置と近いものを探して,みつかったらそのメガネで定義している絵の配置の変化を適用する,というものです.コンピュータにとっては,絵の座標を書き換えているだけで,ツンツンとか,引っ張るといった動きの違いを考えてはいません.

一般的なプログラミング言語では,最初に言葉があります.つまり,ツンツンする動きには「ツンツン」という名前を付けて,引っ張る動きには「引っ張る」という名前をつけます.プログラミンだと,上に行く,下に行くといった動きの方向がすべて違う名前がつけられていますし,スクラッチだとまっすぐ進むことと回転することは違う名前で呼ばれています.動きだけじゃなく衝突判定はほとんど何もできてません.言葉で考えて,それをコンピュータに命令すると動く.それがごく普通のプログラミング言語です.

ところがビスケットの場合はどうでしょうか.動く方向や回転だけでなく,衝突についても色々なぶつかり方を区別できます.ボールが上に当たったとき,下に当たったとき.それらはすべて,絵の配置のバリエーションです.コンピュタにとっては絵の座標の計算だけをしています.人間とコンピュータとのやりとりに,人間用の言葉はでてきません.人間同士がわかり易いように,メガネの並べ方に対して「ツンツン」といった言葉を与える場合はあります.しかし人間がそれを何と言う名前で呼んでいようとコンピュータは関係なく動きます.

多くのビジュアルプログラミング言語が,単にシンタックスエラーを回避する目的にしかビジュアルの良さを使っていません.それに対して,ビスケットのビジュアルは,それが本質的な意味を持っています.そして,人間が使っている不自由な言葉を超えて,もっと多彩な表現力を失わずに残しています.これがビジュアル言語の可能性なわけです.

僕がスクラッチやプログラミンが嫌いなのは,情報とは何かとか,表現力の可能性を追求する,という深い話にならないからです.それで,プログラミングのごく浅い部分しか見せないから,ガチガチの科学者たちに馬鹿にされるわけです.


追記
スクラッチがサイエンスかどうかは,サイエンスをどう定義するかということですし.というより,ツールがサイエンスかどうかを決めるのではなく,どういう立場でツールを使うのかということで決まるのだと思います.スクラッチでもサイエンスにせまれると思います.だけど,僕が言っているプログラミング言語の奥深さには全然迫れていないですね.LOGOより退化してますよね.

ちなみに,サイエンスアゴラのサイトでは,

http://www.jst.go.jp/csc/scienceagora/about/
 ここでいう「サイエンス」は、生命科学、理学・工学のほか、人文・社会科学までも含む広い意味で用いています。

と書かれてあるので,かなり広くとらえてよいと思います.開催側はそう考えているとしても,実際に出展しているガチガチの科学者たちにどう見られているかは別です.

最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
動画を公開しました. (原田)
2013-11-13 11:50:41
ありがとうございました.
返信する
二つ目の動画が非公開です (あきやん)
2013-11-13 11:36:21
二つ目の魚の動画が非公開になっているようです。
取り急ぎ。
返信する

コメントを投稿