「シニアプログラマーの学ぶプログラミング」~シニアさんや初心者さんが楽しく学べる~

「オンラインでコミュニティを広げたい」~プログラミングの無料サポートしますよ~

そもそも「論理的思考」ってこういう風に使えるものです

 2020年から教育の義務化が始まる事になっているプログラミング授業にて「論理的思考」の向上を求めるらしい。

 ところで、この論理的思考ってなんだろう?英語だとlogical「ロジカルシンキング」と呼ぶそうで、論理的の対義語はintuitive「直感的」なのだそうです。

 知的と野性的、暮らしに例えるなら都会と田舎みたいなものでしょうか。どちらが良いとか悪い、好きとか嫌いとかではない訳ですから、そういう考え方や発想が出来る人を育てると言う事なんですね。まぁ、意味は分かりますよね。

 しかし、そもそも自分の経験からすると国語頭か数学頭って少し前によく言われてましたが、人はそれぞれこの違いがあり、プログラミングにも向き不向きがあります。

 好みが非常に激しくて好きな人はどっぷりハマるけど、苦手な人は一向に興味さえも持ちません。

 何とかやり始めれば興味を示すだろうなんて、ゲームで遊ばせる様な事をさせても意味がない気さえします。

 ところで、最近のプログラミングはオブジェクト指向どころか、ゲーム感覚で画面操作でパーツをくっ付ける様に組んで行くものが多くなりました。零とは言いませんが、これで論理的思考が芽生え、育つような流れに結びつくとは考えにくいように思います。

 プログラミングに論理的な思考の気づきを求めるなら、もっと、根本的にアルゴリズムでの違いを体験させないといけないのではないかと思います。

 ここで自らの経験談をお話します。かなり前になりますが、同じ題材(パチンコ台)でアセンブラープログラミングを組む研修を受ける機会があり、その時の実習のお題は、パチンコ台を打ち「計10回、ある穴には言ったらチューリップが開く」→「チューリップに1回入る度に50個の球が出る」→「3回入ったらチューリップは閉じる」という簡単なものです。この一連の流れに予測される変化をプログラミングする事でした。同僚たちはシングルタスク的に上から下への流れに沿って組みます。日常の生活や経験を基にアルゴリズムを組むと一般的にこうなるものなんですが、まさに、お手本の様に「直感的」な答えを出したものです。この時点、これを指導していた方々もこの回答に満点を出そうとしていたんだと思います。ところが、「論理的思考」が出来る人材を排出するとなると、こういう一般的な考え方ではいけない訳です。

 私は、前後の値を考えて、その結果が普遍的に連続する、しかも、極力シンプルに少ないステップ数で作る様にしないと意味がないと考えています。

 その当時の業務経験から2進数の0と1のマシン語でプログラミングしていたので自然にこう意識したのかもしれません。

 ロジックを意識した組み方をして書いたところ、結果は正確に動いているものの見た目の流れでは追えず、当時の移動通信における位置登録の作りに似ていると驚かれ、意識して書いたのかと聞かれ、偶然そうなった事に何故か照れたのと、後に、このアルゴリズムは使えると確信しメモを残しまたのを覚えています。

 その後、配属された研究所の施設で通信衛星と地上基地局との通信におけるデータ補正の制御ロジックとして応用する機会を得て学会発表に至る事になりました。

 この様に「論理的思考」実際の仕事や生活の中では身につかない事が多いものです。しかし、経験を積むことで”ふと”した時の発想として生かせるものでもあります。

 人により向き不向きがある事も否めません。「プログラミング=論理的思考」が形をどう整えて生かせるのかを自らが考えられる人材とするが必要なのかと思います。