初学者向けプログラミングパーク “LightBot”
マヌケの場合、プログラミングを学ぶ動機は今も昔もズボラである。
成果物という目標なくしてプログラミングの学習意欲が湧くのだろうか?
ロボットが全ての青いマスを点灯できるよう、ロボットを動かす一連のコマンド、つまりコードを完成させるパズル。
プログラミングのような内容のパズルは様々あるが、これはその中でもプログラミングそのものをモチーフにしているパズルの一つである。
この作品はプログラミング初学者向けの教育用コンテンツとしての趣向が強い。そのものを習熟するためではなく、そもそも触れるハードルを下げるためのものだ。
コマンドはブロックで表現され、コーディングはこのブロックを並べる作業となっていて、関数はその入れ物として分離されていてわかりやすい。
パズルの枠組は最終的にパターン化できるシーケンスを見出すことへと収まるが、これは現実のプログラミングにも通じる内容であり、大掛かりなプログラミングだけでなく日常的なプログラミングを行う動機にも繋がるものだ。
ただし、その内容が教育用として適切かどうかは疑問が残る。
この作品はプロシージャ・多重定義・ループ・if文の四つを章立てしているが、多重定義は書き手が行うのではなくゲーム側でコマンドの機能を追加するだけで、ループは再帰呼び出しによるもの、if文はelseが使用不可など、その表現は後の誤解や誤用を招きかねないものだ。
また、学習の最後を飾る応用問題集は単純化されたルールの中パズルとして最大限に歯応えが出るよう作られているが、壁に当たると前進をしても前に進まない、段差がない状態でジャンプをしてもその場に留まるだけ等、ルールの穴を突いた解答をせざるを得ず、パズルとしての解答としては適切でも、現実に基づいたプログラミングとしての解答として適切には見えない。
パターン化とは究極的には汎用性を持たせること、一般化へと繋がる行為である。
例えば、素数を列挙するプログラムの作成は頻出の課題だが、上限によってはあらかじめ用意した素数表を表示するだけでも正解である。なんなら計算する必要がない分速さでも計算機を上回る。だがその場合、課題を出したプログラマーの多くはその汎用性のなさに難色を示すだろう。
とんちの付け入る隙を潰せなければ、それはどこまでもゲームというただの娯楽でしかないというのがマヌケの結論である。