プログラムを組むとなぜ論理的な思考が身につくのか




皆さんこんにちは、プロクラスの野間です。

なぜプログラムを組めるようになると論理的な思考ができるようになるのでしょうか?

以前に「プログラムを組むには論理的な思考が必要」と話していましたが、
実は論理的な思考がなくても組めたりもします。
ただ、続けていると何故か論理的な思考になっていくことが期待できるのです。

■やっていると作り方が徐々に変わってきます

以前のブログでピタゴラ的装置を例に出したことがあります。
転がってきた玉が飛びすぎる場合にどうするか対処を考える。

0102

対処の結果、まだ問題があるなら、またその対処を・・・と色々と解決策を考えて問題がなくなるまでひたすら繰り返して作り上げます。
これは論理的ではないですね。表現するなら「場当たり的」でしょうか。
「だめじゃん」と思いますよね?
ですが、これは論理的思考につながる非常に重要な工程なのです。

この学習の段階としては「考える事」を覚える段階になります。
「上手くいかないのは何故だろう?」と考え、「どうやったら上手くいくだろう?」と考える。
そして、上手くいくためには原因を調べる(考える)必要があり、原因がわかったら対応する必要があります。
場当たり的に動いているだけなのですが、最後までやりきるためには問題の「要点」をとらえる必要が出てくるのです。
問題の根本を上手くとらえるかで「対処方法」が的確なものになっていきます。
これを繰り返していると、どうでしょう?
毎回100%場当たり的に作っていると、とてもとても面倒になってきませんか?
いつも同じ失敗をするのです。同じようなレールを組むと毎回玉が飛んで行っちゃいます。ならば最初の段階で一緒に対処したものを作るようになりませんか?
それが「衝立」なのか、飛んでいく場所を感覚で「このあたりまで飛びそう?」と着地点を移動させることなのかはわかりませんが、段々と作る速度が上がるはずです。
それは「あらかじめ対処しておく」事で可能になった事、つまり「論理的に対処」した結果です。

■段々と出来るようになる事

一口に論理的な思考と言っても色々表現できると思います。

簡単に思いつくだけで、プログラムを組んでいると以下の2点が伸びてきます。
・分類
・順序

●分類

同じものをグループでわけます。
「同じものを見つける = 違うものを見つける」です。
先のピタゴラの例で考えると、「前に似たようなものを作ったな・・・」と思えるかどうかです。
これは逆に「今回はこの部分が違うから注意が必要だな」につながります。
例えば、皆さんは以下をどのように分類しますか?
03

上記の例では特に「答え」は無いのですが、プログラムを組んでいると「何か共通点はないかな?」と探すよう用になります。
それは物事の「要点」を指します。
この部分は同じだから「同じものを使えばいいよね~」とか「この部分は変えられるようにしないとね」とか
作る前に楽になるように「考える」ようになります。

必要なものを限定したり、パターンを見つけたり・・・
算数の文章問題で何が必要な情報で、何が不要な情報で、どのように計算式を組む必要があるのか。等の考え方です。

●順序

事前に物を考えるとは次のような物も含みます。
皆さんが手を洗うとき

・手を濡らす
・石鹸を付ける
・手をこすり合わせる
・洗い流す
・手をふく

ってやりますよね。
これを

・石鹸を付ける
・手をふく
・洗い流す
・手をこすり合わせる
・手を濡らす

とやる方はいないでしょう。なぜですか?
プログラムを組む時、常に「順序」が重要になります。
何故かって?それは、誰もダメな方の手順で手を洗わないのと同じ理由で、思った通りの結果にならないからです。
プログラムは何かの結果を求めて手順を書くものです。手順が違えば当然結果が異なります。

ちなみに、手を洗う順序で挙げた項目。この「項目に何を書くか」は分類の項目で話した「要点」です。
常に必要になるものだと感じられると思います。

■何故プログラム?

コンピュータが世に出る前は「十年一昔(じゅうねんひとむかし)」と言われていました。
これは「10年もしたら世の中がガラッと変わっている」の意味ですが、コンピュータが出来てからは「五年一昔」とか「一年一昔」なんて呼ぶ人も出るようになりました(※勝手な造語です)。
コンピュータで学ぶことの利点は何といっても「結果が早い」事でしょう。
作るものにもよりますが、結果はすぐに目の前に現れます。目で見、音で聞き、思った通りにならない口惜しさと、苦労した分の出来上がったときの喜びがあります。
全体が完成した時だけではありません。ピタゴラの例で挙げると、一か所の装置が出来た時、単に落下予想地点に上手く玉が落ちてきた時等非常に細かい単位で「成功」「失敗」体験を得られます。
出来なかったことが出来るようになったら嬉しくありませんか?
プログラムは早々いきなり思った通りに動くものは出来ません。目の前に次々と問題(思った通りに動かない=出来ない)事が出てきます。それを一つずつ直す(思った通りの動きにする=出来るようになる)成功体験を繰り返せるものです。
成功体験も失敗体験も早く、失敗してもケガをすることもありません。そして成功報酬は目の前で思った通りに動く何かです。

「プログラムを組むこと=論理的思考が出来てる」ではありませんが、なんとなく「あ~確かに論理的思考になっていくだろうなぁ」と思ってもらえたでしょうか。

もちろん好みにもよりますが、ちいさな「よしっ!」と思える方はハマるんじゃないかと思いますよ。