ビスケットはJavascriptのような本物の言語を教えるのに役に立つのでしょうか.ビスケットを知ることはかえって邪魔になるのではないでしょうか.という長いこと疑問視されていた点に対して,ついに決着がついたように思います.
ビスケットでプログラムを作ることは,Javascriptのような言語の習得に必ず役に立ちます.
まず,お断りしておきますが,僕は一般の人にそういった言語でのプログラミングを教えた経験がないので,本当のところ彼らがどういうところでつまづくのか,ということはよくわかっていません.僕が得意なのは,難しいことをわかりやすく説明することです.なので,こういった言語のプログラムを説明するには,何ステップも分解して説明しないと理解してもらえないな,というところはわかります.
ですので,以下の話は半分想像です.
まず,こういったプログラミング言語のプログラミングを学ぶためには次の3段階が考えられます.
1)言語の文法・構文を学ぶ
2)小さなアルゴリズム(ソート,探索といった)を作る
3)それらを組み合わせて中規模のプログラムを作る
それぞれの段階で考えられる問題は,
1)言語の文法や構文を学ぶのは退屈なだけ.
2)小さなアルゴリズムに興味がわかない.これがなんに使えるかわからない.
3)突然難しくなる.
ではないでしょうか.スクラッチは1)の問題を解決しているので2)からスタートできるのは良い点ですが,3)は解決できていません.
それに対して,ビスケットでのプログラミングは
a) 構文は数分で覚えられる.
b) アルゴリズムは無しで,すぐに直接応用が作れる.
という特徴があります.b)も全然難しくありません.
実際にテトリスのプログラムをステップバイステップで作るような指導法は作れて,その通りやれば誰でもテトリスを作ることができるようになりますし.理解も容易なのでテトリスの改造も簡単にできるようになります.文字の言語の写経とはここが根本的に違うところです.
ところがビスケットのプログラミングの問題点は,似たようなメガネを大量に作らなければならない,ということにあります.完成させるには,ひたすら面倒な作業を延々とやらなければならないのです.
たとえば,テトリスの場合,似たようなメガネが全部で100個くらいは必要です.
これらのメガネは規則的になっていて,作り方のポイントがわかってしまえば,頭を使わずにパターン作業でどんどん作ることができます.ここがポイントです.面倒臭いだけで難しくはないのです.
メガネの規則性に気づくと,今度はどうやって作業を効率化できるかを考えます.たとえば,人間の代わりにロボットにメガネを作ってもらうということです.つまり,メガネを生成するプログラムを作るのです.メガネの規則性を理解して,それをプログラムにします.そこが,2)の小さなアルゴリズムをつくる,ことに相当します.
ここからどちらに進むか.面倒臭いけど難しくするくらいなら今のままがよい人がいます.それから,ビスケットにメガネの自動生成に興味がでた人もいます.
その人が,普通の言語を学ぶ素質のある人です.メガネの自動生成ができるということは,なにがしかの繰り返し構造があるということですから,そこはアルゴリズム化できます.そこから,小さなアルゴリズムがどのように使われるかを実際に見ることができて,普通の言語のありがたみがわかってきます.
ビスケットのメガネで,ベタにプログラムを書くことの良さは,もう一つあります.ベタに書くことで,問題の大きさの見通しが立つということです.最初からアルゴリズムを駆使してプログラムを作ってしまうと,問題の大きさが見えにくくなってしまいます.繰り返しを使って簡略化せずにベタな処理の羅列を見て大きさの直感を知る,というのは初学者にとって大事な視点なのではないでしょうか.