プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

コンピュータの仕組みを学ぶにはどうしたらいいの?

さすが古くからコンピュータに親しんでいらっしゃる、すがや先生!本質を掴んでいらっしゃいますね :)

- 子供がプログラミングする意味についてどう思われますか。

 論理的に考えられるということと、仕組みを理解できるということが大事ではないかと思います。問題解決というか物事を判断して実行するときには、論理的に考えて冷静に行動すべきときがいろんな局面であるでしょう。また、物事のブラックボックス化に甘んじるのではなく、中身を理解することも重要です。例えば、Javaプログラミングでもライブラリを使うだけではなくて、その中身も理解しておくべきだと思います。そうでないと、いざというときに応用が利かないと思います。そもそも私自身、仕組みが見えないと嫌なんです。

(3/3)子どもたちにプログラミングを教えよう!イベントレポート - 自分が楽しい世界を知らせたくて描いた『こんにちはマイコン』:ITpro

子供達がプログラミングを学ぶ上では、両方学んだ方がいいと思うのだけど、前者はともかく、後者はなかなか難しいかなあ。

プログラミングの本質であるアルゴリズムや論理的な思考力という意味では、scratchとかがいいと思う。小学校四年生の息子にscratchを消化したら、ちょこっと説明しただけで基本的なところは出来るようになってしまった。きっと感覚的に覚えられる世代なんだね。いいなあ、脳みそが柔軟で :)

さて

コンピュータの仕組みとなると、どうだろう。昔はプログラミングの本の最初の方には必ずコンピュータの原理の説明がしてあって(今も書いてある本はあるけど)プログラミングを学ぶと、自然に学ぶことができた。ハードウェアが今よりずっと単純で分かりやすかったことも良かったのだと思う。BASICからI/Oを叩いて動きを確かめるなんてことも簡単にできた。基本的にコンピュータはハード/ソフト含めて全部自分の手のひらの中にあった、または個人でどうにか出来そうと思わせるぐらいコンパクトだった、というのは大きいと思う。

今はハードウェアもソフトウェアも高度化した。今のコンピュータは抽象度が上がり、中身は完全にブラックボックスだ。とてもじゃないけど、個人で簡単にできそうってレベルじゃない。今やアセンブラですら書いた通りのバイナリコードにならない…

プログラミングに限らず、コンピュータの動作原理を理解するには実践あるのみだと思っている。本を読んで完璧に理解したと思っても、実際に動かしてみると想像をつかなかったことが起こる。そこで初めて本に書いてあった「なんでこんな注意が書いてあるんだろ」が実感できる。いや、書いてないことの方が多いだろう。そういうことを繰り返すことで、初めてコンピュータは理解できるものだと思っている。

今コンピュータが学べそうなのは

Arduinoとかかな。でもLEDを光らせるぐらいだとちょっと地味すぎるし、とっつきも悪い気がする。IchigoJamあたりはいい線いってる気がするけど、ちょっと大きなプログラムを作るには容量が足りないかな。いずれもハードウェアに詳しい人のオモチャで、初心者が気軽にという感じじゃないんだよな。

そういう意味で

昔のパソコンの復活を希望します。

それが言いたかったんだろうって!?そらそうよ。yasuhoの脳みそは8bitで出来てるんで、しょうがないっす :b