「自動販売機の気持ちになって考える」
プログラミングの課題で「自動販売機のシミュレータを作れ」というのはいい問題ではないかとよく思う。易しいものから、難しいものまで、仕様しだいでいろいろできる。GUIの有無、商品の種類、在庫管理、金種管理、各種アラート…
— 結城浩 (@hyuki) 2017年11月24日
というのがあって,続きの tweets から見ても(プログラミングというよりは)システム設計(もしくは base design)のことを指しているのは明らかなんだけど,私が連想したのは梅津信幸さんの『あなたはコンピュータを理解していますか?』だった。
この本は2002年に出版されていて,これ自体は恐らく絶版なのだが,2007年にリニュール本が出ているようだ。 さっそく発注してしまった(笑)
この本で一番印象に残っていたのが第3章の「自動販売機はコンピュータ理解の始まり」である。 この章では
- 客がお金を入れる
- 客が商品(ジュース1本)を注文する
- 自動販売機が商品を出す
- 自動販売機がお釣りを返す
という流れを人間がシミュレーションしていて,特に「機械がお金を計算する」方法について図解で説明されているのが秀逸だった。 つまり「自動販売機の気持ちになって考える」わけだ。
機械は人間のようには考えない。 「機械(=コンピュータ)が考える」というのはどういうことなのか。 これを過不足なく説明するのは意外に難しい。 用語を並べ立てて煙に巻くか,頭の悪い擬人化でお茶を濁すのがせいぜいだろう。 私もちゃんと説明できるか自信がない。 でも,それを考えるのがプログラミングの最初の1フィートである。
どうせ学校教育でプログラミングを教えるのなら,「自動販売機の気持ちになって考える」からやっていただきたいものだ。 「プログラミング言語」なんか必要ないのである。 機械が人間の書いたプログラムを「理解」して実行する,というのは大いなる誤解である。 たとえば,そうした誤解が「シンギュラリティ神話」へ向かわせるのなら「プログラミング言語」を習うとかむしろ有害かもしれない。
学生の時に読んだ「日経サイエンス」の記事にティンカートイで3目並べを解くプログラムを組む話があったが1,どんなにコンピュータ技術が発達しても(量子コンピュータが登場しても)スタートラインは常に「ここ」なので,それを忘れないでほしいのですよ。
まぁ,本気で AI が発達してノイマン型コンピュータが廃れたら説明の根本が変わるだろうけど,それは当分先の話(多分)。
参考図書
- あなたはコンピュータを理解していますか? 10年後、20年後まで必ず役立つ根っこの部分がきっちりわかる! (サイエンス・アイ新書)
- 梅津 信幸 (著)
- ソフトバンククリエイティブ 2007-03-16
- 新書
- 4797339497 (ASIN), 9784797339499 (EAN), 4797339497 (ISBN)
- 評価
2002年に技術評論社から出た同名タイトルのリニューアルらしい。
-
この話「三目並べをするティンカートイ・コンピュータ」は『別冊日経サイエンス コンピューターレクリエーション 4 遊びの展開』に収録されていたのだが,絶版本とは言え,どえらい値段がついてるな(笑) ↩︎