スポンサーリンク

プログラミング教育必修化の流れの中で、現在子供達を対象にしたプログラミング教室などに注目が集まっています。プログラミング教育自体はプログラマーの育成が目的ではなく、コンピュータに対する基本的な理解を深めることによって「プログラミング的思考」を育成することが教育の目的であるとされています。

今後ますます情報化が進む社会の中で、普遍的に求められる力としての「プログラミング的思考」を養う事は大事なことです。しかし、「プログラミング的思考」を養う手段として「プログラミング言語」を学ぶことが適切な方法であるかどうか、といった疑問については専門家の方々の中でも意見が分かれるのではないでしょうか。

私の個人的な意見としてはプログラミング言語、特にプロのエンジニアが使用しているような既存のプログラミング言語の習得は、子供が「プログラミング的思考」を養う手段としては、少し難しすぎるのではないかと考えています。それよりもまずコンピュータの仕組みそのものについて学ぶ方が応用できる範囲も広く、「プログラミング的思考」を養うにも役立つのではないかと思います。

もちろんプログラミング言語を学ぶことによって「プログラミング的思考」を養うことは可能です。しかし既存のプログラミング言語を使ってコードを書いていくような、ごく一般的なプログラミング言語習得のスタイルだけが「プログラミング的思考」を養う唯一の方法ではありません。プログラミング的思考を学ぶにはいろいろな道筋があり、学ぶ本人の興味に合わせて学びの道筋を変えた方が圧倒的に学習の効果は上がると思います。

少し私個人の経験について書きますが、私は学生の頃に大学の授業でC言語というプログラミング言語の授業を受けました。私はコンピュータの仕組みに興味があったので、プログラミングを学ぶことでコンピュータに関する理解を深められると期待してその授業を受けたのですが、カリキュラムを終えて実際にプログラミングができるようになっても、私の中にあったコンピュータに関する疑問のほとんどは解決されないままでした。

その後はプログラミングの授業だけでなく工学系の授業も受けていましたが、一向に自分の中にある疑問が解決できなかったので、いろいろと自分で調べていくことにしました。独学を始めてからかなりの時間を経て、ようやく自分の知りたかった答えにたどり着くことができました。これは個人差と言いますか、それぞれ興味を持っている方向が違うことで、たまたま当時の私と授業の内容が合わなかったのだと思います。

しかし、コンピュータの仕組みについては分かってみるとそれほど難しい内容ではなかったというのが正直な印象です。難しい内容ではないというと誤解を招く言い方になってしまうかもしれませんが、大学の教育課程で習うような高度な数学の理論や物理学の知識がなくても理解できるという意味では難しい内容ではなく、中学生で習う「オームの法則」さえ知っていれば理解できる内容です。もし今の自分が学生だった頃の自分に直接教えてあげられたなら、余計な回り道をせずに一直線に答えまで導いてあげられるのになぁ、と思うことがよくあります。

スポンサーリンク

プログラミング言語はエンジニアが効率よくソフトウェア開発を進められるように作られています。そのためコンピュータの構造というのはできるだけブラックボックス化された作りになっています。高級言語になればなるほどその傾向は顕著になります。その方が効率が良いからです。実際に目的となるソフトウェア、例えば作りたいゲームなどがあり、楽しんでプログラミング言語を学んでいる子供がいればそれはとても良いことです。ですが中には当時の私のような疑問を抱えている子供がいて、プログラミング言語自体には興味はないけれどもコンピュータの中身が知りたくてプログラミングを学んでみようとしているとしたら、他の選択肢もあるということを伝えたいと思い、この記事を書いています。

このサイトの内容は大学進学前の全く専門知識がなかった頃の私に向けて書かれています。できるだけ専門用語を使わずに、高校生や中学生だった頃の私にも伝わるようにと思って書きました。ですので既にある程度の知識のある方にとってはかえって分かりにくい表現になっていたり、精確さに欠けるような表現がたくさん出てくるかと思います。その点はご了承ください。まずは全体像をとらえることを第一の目的としています。全体像をとらえることができれば、自分で学んで行く上での地図のようなものができあがります。地図さえあれば部分的な詳細について知りたくなった時にでもどこへ行けば良いかがわかるようになり、その後の学習も円滑に進められるようになると思います。

以降の内容はコンピュータの仕組みについて書かれたものです。概念的な解説ではなく、より具体的な仕組みとしてコンピュータを理解するために必要となる知識だけをまとめました。トランジスタの基本動作から「NOT回路」「OR回路」「AND回路」の解説を行い、「加算回路」「マルチプレクサ回路」「比較回路」「フリップフロップ回路」「カウンタ回路」「メモリ回路」「クロック回路」の7つの基本回路の構造解説を通してコンピュータの動きを理解する内容になっています。全く専門知識のない状態を想定した内容になっていますが、少し学習が進んだ方向けにVerilog HDLを用いたCPUの作り方などにも触れています。こちらの内容はVerilog HDLやFPGAの基礎を学びたい人にも参考になるような内容になっていると思います。一度にすべてのページを理解する必要はないと思いますので、ご自身の理解に応じて読み進めてください。

 

次へ>

 

スポンサーリンク