ビスケットのあれこれ

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

コンピュータ入門

2010-10-06 02:32:01 | 1
コンピュータ入門

これはコンピュータの操作法を教えるためではない.コンピュータというのがいったいどんなものなのかを教えるもの.

たとえば,猫入門.猫とはどういう動物で,飼うにはどうしたらよいか.猫も哺乳類なので,体温があるし,ご飯を食べないと死んじゃうし,踏んだりしても,水に沈めても死んじゃう.そういう哺乳類として基本的なことは,猫入門では(たぶん)教えなくてよい.逆に,うちの猫はこういう仕草をする.ご飯はこれが好きだ.こういう個別のことももちろん猫入門では教える必要はない.一般的な猫のことについて,哺乳類で常識なことは省略して説明する.これが猫入門.

では,コンピュータ入門.コンピュータとはどういうものか.便利.使いにくい.使いやすい.難しい.いろんな感想があると思うが,それらは全部,コンピュータの上で動いているソフトウェアの性質について言っていることである.ソフトウェアを入れ替えるとどんなものにでもなるから,ソフトウェア個別の性質を知っても仕方が無い.ソフトウェア全体について共通したことを知るということが大事である.ソフトウェアは使いやすいものから使いにくいものまでなんでもあるから,ソフトウェアに共通したことを知るためには,どうやってソフトウェアが作られて,どうやって動いているか,ということを知るしかない.しかも,コンピュータというのは人類史上はじまって以来の特殊な装置だから,それに類似したものはない.なので非常に基本的なところから丁寧に教えないとダメなのである.

コンピュータは2進数で動いている.こういったことを教えるのがコンピュータ入門か.専門家になるならどこかでは理解しなければならないことだ.でも入門では早過ぎる.第一,2進数はコンピュータの作り方の基礎ではあるけれど,普遍的ではない.3進数で動くコンピュータだって作れる.シリコンの上ではたまたま2進数のコンピュータが作りやすかっただけだ.だから,もっと基礎的なことを教えるべきだ.

では,アルゴリズムを教えるのか.それは一つの考え方だが,アルゴリズムは個別のことなので,アルゴリズムそのものというより,どうしてアルゴリズムとして考えなければならないのかを教えるべきだ.

ずばり言うと,コンピュータとは,小さな変化を積み重ねて動く機械である.その小さな変化がすごく高速に起きるから,複雑な動きになる.変化の組み合わせ方を簡単に変えることができて,ちょっと変えただけでも,最終的な動きが大きく変わる.これがコンピュータ入門で理解して欲しいことである.

大人になってから獲得する知識のほとんどは,文字として,概念が抽象化されてから,頭に入ってくる.しかし,コンピュータの「小さな変化の積み重ねで複雑な動きを作る」という性質は,これまでに世の中には無かった装置なので,何かにたとえて理解することは難しい.抽象化された知識として獲得するよりも,コンピュータを直接触って,体験して理解するのが近道だと思う.コンピュータの上で動くソフトウェアをいくつか触ってみたところで,「小さな変化...」ということが理解できるはずはない.ソフトウェアの作り方,つまりプログラミングをやるしかない.

ここから先は,プログラミングを,たとえばビスケットのワークショップなどで,体験した人を前提に書いている.作り方を体で覚えると,どういうご利益があるか.

まず,コンピュータとはどういうものかをはっきりと理解できる.過剰な期待をしなくていいし,どういうことが苦手で,どういうことが得意かもわかる.この先のコンピュータとの付き合い方に大きく影響するだろう.

コンピュータは万能ではないということ.万能に見えるように人間が作っているだけだ.よくある誤解に,コンピュータが人間の言葉を理解できれば,コンピュータは使いやすくなる,というのがあるが,「人間の言葉を理解する」ということを「小さな変化を積み重ねて」作らなければならない.これを作るのは人間である.理解するってどういうこと?こんな難しい問題に挑戦するよりも,直接,使いやすいコンピュータを作った方が近道である.

ほとんどのソフトウェアには,バグというのが入っている.プログラムの間違いのことだ.人間が作るものに間違いが入ってしまうのは仕方が無い.そしてそのバグは非常に見つけにくい.バグを見つける方法,バグが出ても致命的にならない方法,バグが入りにくくする方法などなど,ソフトウェアの研究は日々進められてしているけれど,人間が絡んでいる以上,なくすのは難しい.ちなみに,OSやソフトウェアが自動的にアップデートすることがあるが,それはそのバグを修正しているのである.

悪意のあるソフトウェアは本当にひどい.ソフトウェアそのものには善も悪もないけれど,コンピュータの能力としては極悪なソフトウェアであっても,実に簡単に作ることができる.というより,コンピュータそのものの性質として,いつでも戻せるように作るのと,絶対に元には戻せないように作るのでは,後者の方が圧倒的に簡単だ.取り返しの付かないことは簡単にできてしまう.適当にソフトウェアを作ったら,大部分は毒にも薬にもならない意味のないものだろうが,次に多いのは悪いことが起きるソフトウェアになるだろう.役に立つのはほんの少数である.

こういったことを,ビスケットのワークショップに参加すれば,言葉ではなくて体で理解できるようになる.

しかし,僕が一番知って欲しいのは,作っている最中が一番面白いと感じることだ.ビスケットでテレビゲームを作るワークショップがある.子どもたちはちょっと改良しては遊び,を繰り返している.一応制限時間がある中での制作だから終了するが,それがなければいつまでも作り続けているかもしれない.「小さな変化の積み重ね」のどの変化を修正すれば全体の動きがどう変わるのか.自分で作ったものなら全体を完璧に理解できているから,自由自在に修正できる.この面白さはやめられない.

世の中に出回っているソフトウェアはそういう意味では死んでいる.一番面白い部分が開放されていない.それだけでなく,アプリケーションを設計する人,それをプログラムする人が分業していて,両者が仕様書で責任分担をはっきり分けられているから,作っている側もその一番面白い部分を捨てて
しまっている.そんなんで使う側が面白いわけがない.

ムービーカード(moviecards.org) というワークショップを開発している福山大の杉本さんは,この修正可能な遊びの部分を「ハッカブル」と呼んでいる( http://www.scribd.com/doc/38740695 ).このハッカブルの重要さを理解するにはプログラミングで遊んでみるしかない.

そしてなにより,自分で全部制御できる感覚.成功しても失敗しても,それはコンピュータのせいではなくて,全部自分が原因だということ.この手のひらの上にコンピュータを乗せている感じを理解して欲しい.

コンピュータには近づきたくないという人にはぜひ.コンピュータは猫くらいかわいいものです.