時々パパ日記

共働きで妻と2歳半の長男と3人、日々の出来事や思ったことを書いています。

プログラミング教育は子どもを進化させるか(3)


なぜ、早いプログラミング教育が必要なのかという話

(技術的な用語が出てきますが、無視しても問題ないです)

前回の投稿のまとめと矛盾するけれど、今回は早いうちからプログラミング教育を行う必要性の話。

プログラミングに限らず、英語でも、スケートでも、どんな事でも早いうちから始めれば習得が早いというのは誰でも納得できるけれど、プログラミングに限って言えば、早く始める一つ目の理由として、習得したほうが良いことが多すぎるというのがあると思う。

僕は小学生の頃にBASICという今では使われなくなった言語でプログラムを開始し、高校の時にCやC++といった言語を使っていた。最近は使う機会が減ってしまったけれど、これらの言語を使った経験が無駄だとは思っていない。

無駄だとは思っていないけれど、今からプログラムを始める人は、BASICもCも、C++も、いちいち覚える事はないだろうと思う。なぜかというと、そんな時間は無いから。今はWeb開発ならPHPといいうユーザーの多い言語があるし、Pythonというとても整った言語も注目を集めている。速度が必要なシーンではC++Javaにも出番があるけれど、これらは入門向けとは言い難い。そして、習得しやすいPHPPythonでさえ、基礎から覚えてやっと使えるようになる頃には、別のもっと便利な言語が登場している可能性が高い。

プログラミングの知識には普遍的な部分も多いけれど、実務的な部分は絶えずその時代のITを取り巻く環境に左右されて移り変わっている。また、普遍的な部分ですら定期的に画期的な考え方が現れて追加されていく。流れている川と一緒で、飛び込むタイミングが変われば、立ち位置や周りの風景が違ったものになってしまう。

だから、早い方が良いというのは一つの意見として重要だと思う。おそらくは小学校では昔で言うLOGOのようなビジュアル言語で始めて処理の手続きを把握し、中学校で時の流行りの言語に入るのが順当かもしれない。流行りの言語の良さや不便さを感じられるようになれば、新しい言語を選択する際に誤ることが少なくなると思う。

もう一つの理由として、プログラミングには抽象的なものの考え方が必要だというのがあると思う。説明するのも、説明されるのも大変だけれど、一旦把握してしまえば感動するほど便利な概念というのが山ほどある。

僕が高校生の頃、ちょうどC++でクラスの概念を把握した頃にJavaが注目を浴び始めた。当時は実行速度が遅すぎてイマイチだったけれど、Javaの入門書には必ず、オブジェクト思考の便利さ、といった説明がくっついていたと思う。

関数?、クラス?、継承?、数え切れない抽象的な概念を早いうちに習得して使いこなせるようになることのメリットは大きいと思う。それに、使い古された概念に飽き飽きした頭脳から、次のもっと便利な概念が生まれてくるという事も考えれば、アラン・ケイが熱心に子どもにプログラミングを教えようとする理由も理解できる。

もしかしたら、アラン・ケイなどは、「もし、自分が小学生の頃に、今と同じくらいプログラミングができたら、今頃はどんなにすごい発明をしているだろう」といった夢を子どもに託したいのかもしれない、と思う。

そういうニュアンスが、早いうちからのプログラミング教育、という言葉には含まれているようにも感じられる。