こんにちは。
髪を切ったらいつもより寝癖が付きやすくなった川口です。
2020年度よりプログラミングが必修化されるみたいですね。
それに関する記事をいろいろ見ていると、プログラミング教育の現状や意味などが書かれています。
しかし、プログラミングがどういうものなのか書いてある記事が非常に少ない…。
これは大問題です…。
ということで、工業大生がプログラミング未経験の方向けに少しだけ書いていこうかと思います。
※わかりやすくするために、実際とは異なるように説明している部分もあります。
どこで使われているの?
まずプログラミングが何かを知るために、どこで使われているかを知らなくてはなりません。
わかりやすいのは…
- スマホのアプリ
- パソコンのソフト
- ゲーム
- スマホ、パソコン、ゲーム機のOS(アプリなどを動かしたり、基本的な機能やインターネットへ接続する仕組みを用意するソフト)
他にも
- Twitter、Facebook、クックパッドのようなウェブサイト
それだけではありません…
- テレビ、エアコン、冷蔵庫、全自動洗濯機、炊飯器などの家電製品
上記以外にもまだまだたくさんあります。
まとめて言えば、「コンピュータを動かす場面」では、基本的にプログラミングが必要となります。
プログラミングとは?
では本題です。
簡単に言うと、プログラミングとは「コンピュータへの指示を書いていくこと」です。
だから「コンピュータを動かす場面」では、基本的にプログラミングが必要なんですね。
とはいっても、どうやって書いていくのでしょうか…。
コンピュータには、コンピュータが理解できる命令というものがあります。
昔はそれを人間が書いていたりしましたが、コンピュータが理解できる命令というものはいろいろと大変なんですね。(今も全く書かないわけではありません…。)
そこで使われているのが「プログラミング言語」というものです。
このプログラミング言語というものは、人間が読みやすい、コンピュータが理解できる命令を簡単に扱えるようにした言語です。
C言語やJava、日本生まれのRubyという言語など、いろいろあります。
それぞれの言語に出来ることと出来ないこと、得意なことと不得意なことがあったりします。
これらのプログラミング言語は、コンピュータが理解できるように翻訳されます。
プログラミング言語(人間が読みやすい言語)→[翻訳]→機械語(コンピュータが理解できる命令)
となって、コンピュータへの指示が書きやすい世の中になっているわけですね。
実際には、プログラミングは「プログラミング言語でコンピュータへの指示を書いていくこと」を指すことが多いです。
実際の現場とプログラミング教育の違い
実際にプログラムを書くときは、いろいろと調べながら書いていきます。
和英辞書や例文を使って英作文を書いていくような感覚です。
プログラミングではそれに加え、変数、引数(ひきすう)、戻り値などなどいろいろ考えなくてはなりません。
それに、概念的なものを捏ねくり回していきます…。
プログラミング入門では、「おまじない」や「データを入れる箱」といった言葉が飛び交います…。
これを小学生全員がやるとなったら、先生や時間がいくらあっても足りないです…。(できちゃう子もいますが。)
そのため、先生にもよりますが、小学校でのプログラミング教育では、ビジュアルプログラミングというものを扱うことになると思います。
これは、機能を持った積み木やブロックを組み立てていくようにプログラミングができるものです。
概念的なものを触ることになるのは変わりませんが、視覚的にわかりやすくなっているため、より簡単に触ることができます。
しかし、これらは基本的に学習用であるため、実際の現場では使われません。
プログラミング必修化と言われますが、「プログラミングの考え方必修化」と言った方が近いかもしれません。
プログラミング教育って必要なの?
わかりません。
しかし、コンピュータに囲まれた現代において、魔法の板や魔法の箱をただありがたがるのではなく、そこにプログラミングという工程が存在して、どうやって動いているかを考えるきっかけが生まれるのは良いのではないでしょうか。
そして、もしかしたら、効率的&論理的な思考力も養われるかもしれません。
例えば、「相手が見えている間、手を振る」ということをプログラミングで表現したとき、
もし[相手が見えている]なら 右手の角度←+30度
↓
もし[相手が見えている]なら 右手の角度←-30度
↓
もし[相手が見えている]なら 右手の角度←+30度
↓
もし[相手が見えている]なら 右手の角度←-30度
↓
もし…
という風に書けば良いでしょう。
でも、プログラミングの世界ではもっと効率的に書くことができます。
もし[相手が見えている]なら 右手の角度←+30度
↓
[相手が見えている]間くり返す 右手の角度←-1×右手の角度
結果はほとんど変わりませんが、こちらのほうが不具合も起きにくく、これだけで済んでしまいます。
この効率的&論理的な考え方は、今後重要になると思います。
最後に
なんとなく、プログラミングのイメージと、プログラミング教育のイメージを掴んでいただけたのなら幸いです。
わかりにくい箇所がありましたら、コメントに書いていただくか、お問い合わせいただければと思います。
蛇足:プログラム?プログラミング?
よく混同されるんですが、プログラマ(人)がプログラミング(行動)した結果できるものがプログラム(モノ)です。
蛇足:バグって?
その昔、コンピュータに不具合が起き、原因を調査した結果、コンピュータの内部にバグ(bug、虫)がいたことが原因だったことに由来すると言われています。
バグとは、プログラムの設計ミスや記述ミスのことを指します。
よく、画面の表示がおかしくなったりすることを「バグった」という人がいますが、それはバグや他の要因が原因となって表示が異常になっているだけです。
画面の表示が変=バグ というわけではありません。
そして、よく「バグをなくせ」というコメントがアプリストアに書かれたりしますが、そんなことは不可能です。
バグは減らすことはできても、完全になくすことはできません。
10年分の新聞の中から誤字を見つけるようなものです。