プログラミング学習の二歩目は「繰り返し」?それとも「関数」?
プログラミングの学びの最初のステップは大概「核となるコマンド(命令)」を実行するものです。
例えば、
Codemonkeyの最初のステージ然り、
Swift Playgroundsの「コードを学ぼう」然り。
最初の一歩は楽しく、かつ簡単に始められます。
しかし、その次のステップ、すなわち「二歩目」はいろいろな方法が模索されています。
今回は、プログラミング学習の二歩目について考えてみましょう。
コマンドの次に学ぶこと
コマンドの使い方、つまり
「使い手が意図したことを実現するための文章(プログラム)の作りかた」
を学んだ次には、更にそのコマンドの「組み合わせ」に焦点が移ります。
そうしたときに、プログラミング学習の二歩目として、大きく分けて2つのアプローチがあります。
1.繰り返し(ループ)を学ぶ
2.関数(ファンクション)を学ぶ
この2つです。では、それぞれの学習はどんなものか見てみましょう。
1.繰り返し(ループ)を学ぶ
コマンドを複数書けるようになったら、それらを「短く書くことはできないか?」というふうに焦点を移していく場合が最初のパターン、「繰り返し(ループ)を学ぶ」場合です。
例えばCodemonkey。カタログには、下記のように記載されています。
1と2で簡単なコマンドの使い方を学んだあとに、「ループ・アイランド」で繰り返し(ループ)を、関数などよりも先に学びます。
複数のコマンドから、繰り返しを活用して「まとまり」を見つけ出し、「繰り返す」というパターンです。
同様にして、Scratchで学ぶときにも二歩目は「繰り返し」を活用します。
(といっても、関数がないので二歩目に設定できないということもあります。)
ここで、ループを学ぶ二歩目に重要なのは、
繰り返される複数のコマンドの中から、パターンを発見する、
つまり「ひとまとまり」を発見する
ことだということがわかります。
2.関数(ファンクション)を学ぶ
そこで思うことは、やはり「ひとまとまり」を先に作る練習をしたほうが学習が早いのではないか?ということです。
そこで、二歩目に関数(ファンクション)を設定しているのが、Swift Playgroundsです。
Swift Playgroundsの二歩目
Swift Playgroundsのアプローチは、「左を向く」もしくは「前に進む」しか、使えない中で「右を向く」ことを考えます。
それを「コンポジション」とこのアプリでは言われていますが、これもつまるところ「ひとかたまり」のことを示しています。
どこを「ひとかたまり」とするのかに関して、二歩目では直接的に「ひとかたまり」を作りに行こう!というシンプルなアプローチがわかりやすいです。
解説も「靴紐を結ぶ」ことを「紐を通す」「紐を結ぶ」「紐を蝶結びする」という3つのコマンドで構成されることを意識させ、そこからプログラムを実装するようになります。
おすすめは二歩目の「関数」
結局の所「ループを書く」ためにはこの「ひとかたまり」を見つけなければなりません。しかしながら、「ループ」を学ぶときにはこのひとかたまりに関して明確に言及されていません。
それだったら、回りくどく複雑なコマンドの羅列からパターンを見つけるよりも、直接「ひとかたまり」をつくるプログラムを書いてしまったほうが楽ですよね。