Good bye “Hello World”

 

大型書店のプログラミング関連書籍の本棚を一望してみる。
その大半は入門者向けであることに気付く。
上級者向けの本と入門者向けのそれとでは、
販売部数の桁が変わること(場合によっては2桁?)は容易に想像がつく。
出版不況のなかで、本屋が売れる本を出すのは、まあ当然のことだ。

しかし、入門書飽和状態の理由はこれだけではないだろう。
もし、初心者がある入門書で学び、これをマスターした暁には、
彼はステップアップして、中級者向けの本を欲するはずだ。
だが、本屋には中級者以上の本はほとんど存在しない。

ひょっとして、入門者向けの本ばかりなのは、
多くの読者が、入門レベルで挫折しているからではないのか?
読者は中級にステップアップすることなく、
似たような「入門向け」の中であがいているのではないか?

だとするとその原因は、
プログラミング教授法それ自体にあると言わざるを得ない。

私はこの元凶こそ、入門書冒頭に必ず登場する、
例の”Hello World”だと思うのだ。

プログラミングの基礎とは、それがいかなるタイプの言語であれ、
変数、if文、for文などの意味論的な実感をつかむことであって、
「世界よ、こんにちは」とか、そんなものどうでも良いのである。
これに続く無味乾燥なシンタックスの羅列にもうんざりだ。

入門者がプログラミングを「実感」するためには、
記号(文字列・数値)を記号(シンタックス)で操作することは
端的に苦痛でしかない。
それは彼らに混乱と倦怠感のみを与える。

古今東西、マリオで遊んだ子供たちは、
自分もオリジナルのマリオを作ってみたいと思い、
プログラミング関連の本をパラパラめくってみるものだ。
しかし、そこにはマリオみたいなキャラクターなど一切登場せず、
ひたすらchar(文字列)が暗号文のように敷き詰められている。

「おい、マリオはどこにいるんだよ!」

これは小学生のころの私の声である。
プログラミング入門は、記号を記号で操作するのではなく、
ビジュアルなモノをコードで操作することから始めたほうが良い。

聞くところによれば、FC版スーパーマリオのソースコードは、
かなり美しいらしいではないか。

[note]4 :デフォルトの名無しさん:05/03/05 15:08:18
>>3
解析してみたら面白いよ、あの時代にして、すでにオブジェクト指向のはしりのような物が入っている、
よくよく見るとデザイパーンモドキのような構造も見受けられる。
オブジェクト指向らしいものが実際に流行り始めたのはそれから十年以上も後というのは、考えさせられます。
[/note]

閑話休題。既存ゲームの改造というアプローチもアリだが、
しかし、そもそも逆アセンブル自体が素人にとって敷居が高い。

よりシンプルに、
モノ(とモノの関係)をコントロールできる環境が良い。
一例を挙げるならば、
マルチエージェント・シミュレーションがこれに相当する。
まあ、誤解を恐れずに言えば、
ビデオゲームだって、マルチエージェント・シミュレーションだ。
東京大学と構造計画研究所が開発したartisocはすばらしい。

オブジェクト指向が云々・・・と小賢しいことを言う前に、そもそも
これの源流であるsimulaは今風に言えば
マルチエージェント・シミュレーション実行環境だった。
すなわち、エージェント=モノを動かすための体系だったのである。

これに関連して、MITのprocessingもまた、モノを動かし、
ビジュアルを制御することによってプログラミングを学ばせる言語だ。
視覚効果はそれ自体がデバッグとなり、同時にさらなる応用を喚起させる。

また、アートではない、
より実用的なビジュアル・プログラミング学習として、
Google Maps APIによるオリジナル地図作成も有効だと思われる。

  • 『人工社会構築指南』山影進
  • 『Built with Processing』田中孝太郎・前川峻志
  • 『Google Maps APIプログラミング入門 改訂2版』勝又雅史

さよなら「世界よ、こんにちは」。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください