プログラミング的思考って何?
最近、プログラミング教室のサイトやパンフレットを見ると、よくこんな言葉を見かけます。
「プログラミング的思考が身につきます」
ただ、そこでふと疑問が湧きます。
それって、具体的に何のことを指しているのでしょうか?
そしてもう一つ。
どうやって身につけるのでしょうか?
実はここ、あまり説明されていないことが多いと感じています。
「プログラミング的思考が身につきます」
ただ、そこでふと疑問が湧きます。
それって、具体的に何のことを指しているのでしょうか?
そしてもう一つ。
どうやって身につけるのでしょうか?
実はここ、あまり説明されていないことが多いと感じています。
「なんとなくできる」と「説明できる」は違う
例えば、次の数字を小さい順に並べてみてください。
4,3,8,12,11,9,39
ほとんどの人は、特に悩むことなく
3,4,8,9,11,12,39
と並べられるはずです。
では、そのやり方を説明してください、と言われたらどうでしょうか?
ここで少し手が止まる人も多いはずです。
4,3,8,12,11,9,39
ほとんどの人は、特に悩むことなく
3,4,8,9,11,12,39
と並べられるはずです。
では、そのやり方を説明してください、と言われたらどうでしょうか?
ここで少し手が止まる人も多いはずです。
コンピュータには「なんとなく」が通じない
人間は
・全体を見て判断する
・感覚的に理解する
ことができます。
でも、コンピュータにはそれができません。
「小さい順に並べて」と言われても、
何をすればいいのか分からないのです。
・全体を見て判断する
・感覚的に理解する
ことができます。
でも、コンピュータにはそれができません。
「小さい順に並べて」と言われても、
何をすればいいのか分からないのです。
手順を細かく分解する
コンピュータに処理させるには、こう言い換える必要があります。
1.左から順に、隣り合う2つの数字を比較する
2.左の方が大きければ、位置を入れ替える
3.最後まで進んだら、もう一度最初から繰り返す
4.一度も入れ替えが起こらなければ終了する
これなら、コンピュータでも実行できます。
1.左から順に、隣り合う2つの数字を比較する
2.左の方が大きければ、位置を入れ替える
3.最後まで進んだら、もう一度最初から繰り返す
4.一度も入れ替えが起こらなければ終了する
これなら、コンピュータでも実行できます。
プログラミング的思考
ここで大事なのは、
「説明できる」だけでは足りないという点です。
例えば、
「小さい順に並べるんだよ」
と説明することはできます。
でも、それではコンピュータは動きません。
なぜなら、何をすればいいのかが、まだ曖昧だからです。
では、どうすればいいのか?
答えはシンプルです。
もっと細かく、具体的な動きに分けること。
例えば、こうです。
2つの数字を比べる
大きかったら入れ替える
それを何度も繰り返す
人間からすると当たり前すぎる動きですが、
コンピュータができるのは、このレベルまでです。
つまり、
「並べる」ではなく
「比べる・分ける・繰り返す」に分解する
この変換こそが、プログラミング的思考です。
「説明できる」だけでは足りないという点です。
例えば、
「小さい順に並べるんだよ」
と説明することはできます。
でも、それではコンピュータは動きません。
なぜなら、何をすればいいのかが、まだ曖昧だからです。
では、どうすればいいのか?
答えはシンプルです。
もっと細かく、具体的な動きに分けること。
例えば、こうです。
2つの数字を比べる
大きかったら入れ替える
それを何度も繰り返す
人間からすると当たり前すぎる動きですが、
コンピュータができるのは、このレベルまでです。
つまり、
「並べる」ではなく
「比べる・分ける・繰り返す」に分解する
この変換こそが、プログラミング的思考です。
どうやって身につくのか?
ここが一番大事なところです。
プログラミング的思考は、
お手本通りにコードを書くこと
完成されたゲームをなぞって作ること
だけでは、なかなか身につきません。
なぜなら、考える必要がないからです。
少しだけ厳しい話をすると
「この通りにやればできます」という教材は、確かに分かりやすいです。
ただ、それは
**“ほかの誰かの思考をなぞっているだけ”**の状態です。
そこには
なぜこの処理なのか
他のやり方はないのか
どこで条件分岐しているのか
といった思考が入り込む余地があまりありません。
プログラミング的思考は、
お手本通りにコードを書くこと
完成されたゲームをなぞって作ること
だけでは、なかなか身につきません。
なぜなら、考える必要がないからです。
少しだけ厳しい話をすると
「この通りにやればできます」という教材は、確かに分かりやすいです。
ただ、それは
**“ほかの誰かの思考をなぞっているだけ”**の状態です。
そこには
なぜこの処理なのか
他のやり方はないのか
どこで条件分岐しているのか
といった思考が入り込む余地があまりありません。
本当に必要なのは「試行錯誤」
プログラミング的思考を身につけるには、
自分で考える
試す
うまくいかない
修正する
この繰り返しが不可欠です。
少し遠回りに見えるかもしれませんが、この過程こそが本質です。
自分で考える
試す
うまくいかない
修正する
この繰り返しが不可欠です。
少し遠回りに見えるかもしれませんが、この過程こそが本質です。
まとめ
プログラミング的思考とは、
人間の“なんとなく”を、
コンピュータが実行できる形に分解する力です。
そしてそれは、与えられた答えをなぞるだけでは身につきません。
考えて、試して、失敗して、修正する。
その積み重ねの中で、はじめて身についていきます。
人間の“なんとなく”を、
コンピュータが実行できる形に分解する力です。
そしてそれは、与えられた答えをなぞるだけでは身につきません。
考えて、試して、失敗して、修正する。
その積み重ねの中で、はじめて身についていきます。