教師の道具箱

教師の業務の効率を高めるソフトウェアや情報を提供

ユーザ用ツール

サイト用ツール


programming:necessity

2017/06/10

プログラミング学習の必要性

政府は、プログラミング学習を小中学校で2020年から段階的に必修にする方針を固めたそうですが、その必要性が話題になっています。

現実として、プログラミング言語はいくつもあり、分野によって使う言語は異なります。しかも流行り廃りがあります。

現在、iPhoneやマックのソフトウェア開発には、Objective-CからSwiftへシフト。アンドロイドはJava、ウェブプログラミングは、PerlやPHPなどをSQL(データベース)と組み合わせてプログラミングします。Windowsは、今でもC++でしょうか、それともC#でしょうか。ソフトウェアの会社によっても使っている言語が違うことが多々あります。

大雑把にいえば、上記のプログラミング言語は、C言語からの派生です。英語を勉強した後に、フランス語やドイツ語を勉強するよりは、簡単で、C言語からの方言程度と考えていいと思います。かといって、初心者が最初にC言語を勉強すればいいというわけでもありません。

C言語では、iPhoneやアンドロイドのアプリを作るためのオブジェクトの考え方がないので、C言語からObjective-CやC++へ派生していきました。なので、C言語の勉強は無意味ではないのですが、実践力にはなりません。

プログラミング言語は、コンピュータと使う人が直接目にする画面との間で、橋渡しをするものです。使う人が、画面上に数字を入力し、OKボタンをクリックした時に、どのような処理をするのかということを記述していきます。

重要なのは、どのプログラミング言語を勉強するかではなく、どのプログラミング言語でも基本となる、独特の使い回しです。変数の考え方や、条件分岐や繰り返し処理などの使い方をマスターすることが基本です。Objective-CやC++などのオブジェクト指向のプログラミング言語には、クラスを使ったカプセル化を理解する必要もあります。

小学生用のビジュアルプログラミング言語が、プログラミングのどのレベルまで対応するかというのが気になります。MITメディアラボの開発したScratchは、条件分岐や繰り返し処理に対応しています。プログラミングの考え方を身につけるのには、良い入り口かもしれません。

しかし、プログラミング言語を勉強しても、わかる人にはわかるし、わからない人にはわからないという現実が待ち構えています。子供用のビジュアルプログラミング言語を楽しんだとしても、ある一定以上のプログラミングの考え方の壁にぶち当たってしまいます。また、それを乗り越える意味もそれほどないように思います。

実は、プログラミングより重要なのは、ソフトウェアのアイディア、あるいは仕様のあたり。プログラミング言語は、外国語を学ぶより、はるかに簡単です。外国語の文法や単語に相当する部分はシンプルで覚えることも少ないのです。それよりもどのように組み立てるか、どんなソフトウェアにするのかということのほうが難しいのです。外国語の勉強でも、文法や単語を勉強するより、実際に勉強した外国語を使いこなすことのほうが、苦労が多いのではないでしょうか。

そんな発想力を身につけることのほうが重要です。iPhoneやアンドロイドでどんなアプリがあったら、より便利になるのか、楽しく使えるようになるのか、というアイディアの部分です。それをどのように実現するか、どのようなしくみにするのか、という部分が重要で、プログラミングは、それらをコンピュータが理解できる手順に書き換えるだけなのです。

すでに日本人の中には、有能なプログラマーが世界中で活躍しています。問題は世界で通用するアプリを作る発想力がないことでしょう。

それでは、そのような発想力を育てるにはどうしたらよいのか。より便利に、より楽しく使えるようにしたいという気持ちが起きるまでiPhoneやアンドロイドを使っていくことなのかもしれません。なかなかハードルは高いです。だから一部のプログラマーと多数の使う人に別れてしまうのですから。

報道では、「人工知能(AI)などの普及を見据え、新しい技術を使いこなして付加価値の高い仕事につく人材を増やす狙い」とありますが、それはプログラミング学習では育たないということです。

ちなみに日本が外貨を稼いでいるのは、自動車、産業機械、電子部品、電化製品、鉄鋼といった工業製品です。アニメやゲームも話題に上がります。しかしどれも教育の中で重要視していません。コンピュータの学習を重要視した結果、手先が不器用な人間を増やしてしまっただけです。

programming/necessity.txt · 最終更新: 2022/09/27 (外部編集)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki