プログラミングの授業
2020年度から、小学校でプログラミングの授業が始まるそうですね。
相手は素人、自分も素人では、例えば英語と日本語でコミュニケーションを取ろうとする位、難しいと思います。
私はフリーのプログラマです。
小学生の甥っ子にプログラミングを教えるにはどうしたら良いか少し考えてみました。
目的:プログラミングや、コンピュータに興味をもってもらう。
理由:開発手法や論理的な考え方が、様々な仕事でも役に立つと思うから。インターネットは偉大な発明であり、ユーチューブや料理(レストラン検索含む)やスマホゲームだけのものでは無いということを知ってほしいから。
ちなみに、教える内容は目的を達成するための手段であって、言語と文法ではありません。プログラムを組むのは彼自身に任せます。
通常、開発現場では完全にプログラマに任せるからです(プログラムの書き方について、現場の作法というか、ルールは守ってもらいますが)。
先ずは名詞。これが判らないと会話になりません。
コンピュータに関する、知っている単語を挙げていってもらっても良いですね。
コンピュータ:
パーソナルコンピュータ(パソコン)。サーバ。ホストコンピュータ(ホスト)。スマホ。タブレット。
付属している一部のハードウェア(キーボード、マウスやディスプレイ)は、マンマシンインターフェイスといって、人がコンピュータと会話するためのもの。無くてもコンピュータは困らない。困るのは人。
プログラムを組む人。(プログラムを「作る」、と言わない。言っても間違いではない。)
・・システム開発に必要なのは上記2点です。(人が書いたプログラムを、コンピュータが理解できる言葉に翻訳するためのコンパイラが必要な言語もあります。)
プログラミング:
プログラムを組む行為。コーディング。メイク。
プログラム:
ソフトウェア。アプリケーション。
Windows10、IOSとかAndroid等のオペレーティングシステム(OS)と呼ばれているものや、キーボードで入力した文字をディスプレイに表示したり、マウスカーソルを動かしたりするもの。コンパイラ。ゲーム。
運動会のプログラムは、pro(前もって)-gram(書かれたもの)、という、予め決めておいた動きを、機械がするのか、人がするのかの差なので、同じ扱いで良いと思います。
Hello WorldとI/O
プログラムは、「入力→処理→出力」です。この繰り返しです。
ゲームでいう、「Aボタン押された」→「内部処理」→「発射!」的な。
※言語的には、「条件分岐」、「ループ」、「コントロールブレイク」の3つさえ覚えてしまえば大概の事はできます(本稿では触れません。
ついでにプロシジャー指向とオブジェクト指向についても触れません。)
プログラミングの入門書を読むと最初の方に 「Hello World」の目次があります。前述の入力(input)、処理(process)、出力(output)を簡単に確認する事ができます。20言語以上、仕事で使ってきましたが、現在も環境確認等で使用していますよ。
使いなれた言語でも、どんどん忘れます(笑)。使い方が解らない関数もあったりします(汗)。やはり文法書は手放せません。
言語や文法は本やネットで調べれば、いくらでも答えがあります(ネットの情報が正しいかどうかは別問題としてありますが)。
ただ文法を調べるのではなく、どういった「目的があり、それを実現するために必要か」どうか、別の簡単な方法が無いか、という目線も必要になってくると思います。
真髄だとか奥義的なものは無いかも知れません。
仮にあったとして、それを教えてしまうと、私の仕事が無くなってしまいますからーーーー(笑)