『ルビィのぼうけん』勝手に超訳 Vol.03
今回は、3章「ルビィの計画」です。
アルゴリズムについて書いてあるので、わりと分かりやすい章ですね。
この本では
アルゴリズムとは、命令のセットであり、問題をとく手順である
と説明されています。
さらに
アルゴリズムは問題解決のために作られる
という説明もあります。
ここは少しだけ違和感がありますね。
ちょっと細かいですが、プログラムは必ずしも問題を解決するだけの手段ではないはずなので。
アルゴリズムは処理の実行手順を示すために作られる
という定義の方が汎用的に使えそうです。
要するに実行手順ですね。
先日、ワークショップをやったときに、アルゴリズムという言葉を知っているかどうか尋ねたところ、2/3くらいの子どもたちが手をあげたので驚きました。
詳しくは聞きそびれてしまったので、彼ら彼女らがどこでその言葉を覚えたのか、今度こそ確認してみようと思います。
さて、このアルゴリズムですが。
大人の私たちは、ルビィの本にあるように、まず全体を把握し、ゴールを明確にして、そこへ行くための最短距離をはかり、必要なものを予め準備をする
といったことを考えます。
なので、ルビィの行動に何ら疑問をもたず、子どもたちにもそうあってほしいと願い、そう伝えることでしょう。
でも、ちょっと待ってほしいのです。
それを伝えることが、本当に子どもたちにとって良い学びとなるのでしょうか?
まず、全体像の把握というのは大人が思う以上に子どもには難しいはずです。
我が家には8歳の男の子がいますが、彼の知っている世界はまだまだ狭く、自分の日常における生活圏内くらいしか把握できていません。
その狭い範囲を少しずつ、年齢を重ねたり経験を増やすことで広げていくのだと考えると
私たち大人が期待する「全体の把握」というものを最初から求めることは難しそうです。
それから、どれが最短で最も効率の良い道なのか?
と考えることは、それまでのたくさんの失敗経験があってこそ活きてくると私は考えています。
何も経験せずに、はじめから効率化というのは考え辛いはずなのです。
そうだとすれば、これを意味のある学習にするには、試行錯誤を重ねながら少しずつ世界を広げていけばいい
ということになります。
はじめから完璧になんて出来なくていい。
最初は無駄な寄り道ばかりで、先も見えてなくてすごく狭い範囲をぐるぐるまわってる・・・
という形だって構わないと思うのです。
その経験こそ、必要なはずなんです。
大人のプログラミング学習では、効率よくスキルを習得するために効率の良いやり方を学ぶことがありますが、それでも、やはり自分で失敗して学んだことと比べると、その学習効果は桁違いです。
最初からきれいなアルゴリズムを作ろうとせず
試行錯誤を重ねることで学ぶ。
そんな学習であってほしいと思っています。
探プロの学習プログラムの中では、学習フレームワークの中で
といった流れになっていますが、このアルゴリズム化とコーディングのステップは、前後したり一緒にやったり、いろいろなケースがあります。
プログラミング学習のレベルがそれなりに高く、学習者のスキルも高い場合には、最初にアルゴリズムを考えて、コーディングに臨む
といった流れが実現できると思うのですが、そうでなければこの流れは難しいと考えています。
そこで、littleBitsを使った学習プログラムでは、まずは自由にブロックを繋いで見る(=コーディング)。
そして、動くことを確認してから、そのブロックの繋がりをアルゴリズムとして可視化してみる
というようなことをやります。
これを繰り返すことで、最適なアルゴリズムとは何か?ということを体験を通じて学習できるようになると考えています。
そういった意味では、『ルビィのぼうけん』はちょっと出来過ぎた冒険なのかもしれません。
普通はこんなにうまくいかないし、地図なんて何が書いてあるのか読めないレベル、から始まっても構わないんです。
ただ、いつも試行錯誤ばかり、、、というのではよろしくない。
いつか、自分の力でかっこいい地図が描けるようになろう、という意識でこの本を活用するのがお勧めです。