榎戸誠の情熱的読書のすすめ -3つの読書論・ことばのオアシス・国語力常識クイズ(一問一答!)-

子供も大人も、今すぐプログラミングの勉強を始めよう・・・【情熱的読書人間のないしょ話(222)】

【amazon 『子どもを億万長者にしたければプログラミングの基礎を教えなさい』 カスタマーレビュー 2015年11月10日】 情熱的読書人間のないしょ話(222)

私の書斎では、2人の魔女が飛び回っています。そのうちの小さいほうの魔女は、剥き出しのプリプリしたお尻が何ともチャーミングです。

P1040254

P1040455

閑話休題、『子どもを億万長者にしたければプログラミングの基礎を教えなさい』(松林弘治著、KADOKAWA)には、啓発されました。

「自分でプログラムを組み立て、思い通りに動かすことは、まさに創作活動そのもの。ただコンピューターを使っているだけでは得られない、モノ作りの醍醐味がそこにはあります」。

1995年のインタヴューで、スティーブ・ジョブズもこのように語っています。「私たち自身の思考プロセスを映し出す手段としてプログラミングを行っていました。すなわち、プログラミングを通じて、考え方を学んでいたのです。だから誰もがプログラミングを学ぶべきだと思うのです。私にとってコンピューター科学とはリベラルアーツ(一般教養)であり、誰もが学ぶべきものだと考えます」。

そもそも、プログラミングとはどういうものなのでしょうか。「『プログラミングとは、プログラムを書くことである』。では、『プログラム』とは何でしょう。『プログラムとは、コンピューターにやってもらいたいことを、コンピューターが理解できる方法で書いた手順書である』。そうです。コンピューターを自分の思い通りに操り、動かし、目的を達成したい。その手段としてプログラム(ソフトウェア)を書く。それが『プログラミング』なのです。コンピューターとは『計算機』です。計算・演算を、言われた手順に従い粛々と、しかし人間とは比較にならない超高速で行ってくれる機械(ハードウェア)です」。

プログラミングの基本となる構成要素が挙げられています。●処理(順次)=コンピューターに行わせる計算や作業などの処理、●分岐(条件分岐)=ある条件が成り立つ場合、成り立たない場合に合わせて、処理の流れを変える処理、●反復(繰り返し)=ある条件の間、一定の処理を繰り返す処理――の3つです。「プログラミングする人は、まずこれら3つの基本要素を組み合わせたプログラムを1つの処理としてまとめます。そして、そのまとめたプログラムを複数作り、階層的、構造的に組み立てていくことで、より大きなプログラムを作るのです。この『階層化』や『構造化』は、プログラミングにとってとても重要な意味を持ちます。プログラムを組み合わせて構造化していくことで、プログラム自体をよりわかりやすく、読みやすくでき、管理しやすくできる。このような方法論を1969年に『構造化プログラミング』という名前で最初に提唱したのは、オランダ人の計算機科学者、エドガー・ダイクストラです」。

プログラミングを行う上で欠かせないアルゴリズムとは何なのでしょう。「『アルゴリズム』とは、『問題を解く手順を表現したもの』です。『プログラム』に似ていますが、ひと言でいうと『アルゴリズムを手順として書いたものがプログラムである』ということになります」。「コンピューターを使って達成したい目的があるとしましょう。そうしたらまず、その目的をいかに効率良く、間違いが起こらないように達成すればいいのか、その具体的な手順(アルゴリズム)を考えます。場合によっては複数の手順の中から最も良いと思われるものを選び出します。そして手順をコンピューターがわかるように書き下した手順書(プログラム)を作ります。つまり、アルゴリズムとは問題を解く手順であり、その手順を矛盾なく厳密に表現する手段がプログラムなのです」。

子供やその親だけでなく、自身がプログラミングを始めたいと考えている人にも役立つ一冊です。