大阪府豊中市でホームページ制作|スマートフォンアプリ開発を行なっているImpreateSoft(インプレイトソフト)です。
今回のブログのテーマは「プログラミングを学ぶことの意味って何?」です。
最近、巷ではよくプログラミングを学ばせることの重要性や義務教育化される・・・かも?といったお話が出てきます。
今回はそういった話題が出ているプログラミングが「実際に学んで意味があるのか?」という疑問に私なりに答えてみたいと思います。
プログラム=機械に命令を与える
そもそもプログラミングというのはプログラムを作成することを指します。
詳細は下記の記事をご覧ください。
そもそもプログラミングって何?
プログラムとは主に機械に命令を与えて、その命令通りに機械を動かさせる技術のことです。
ここがポイントなのですが、人間を動かすのではなく機械を動かす必要があります。
人間同士でしたら同じ言葉(日本人同士でしたら日本語)である程度、命令やお願いをすれば相手にも伝わり動いてくれます。
しかし、相手が機械となるとこれがなかなかうまくいきません。
なぜなら相手は機械なので、人間の言葉がわからないからです。
例ですが、人間同士ですと「そこにある醤油を取って」とお願い(命令)すれば相手は醤油を取って渡してくれます。
しかし、機械ですと「そこにある醤油を取って」の意味がわかりません。
どの部分がわからないか・・・?
そこ→どの場所?自分の位置から何メートル先?地面なの?テーブルなの?
醤油→どの醤油?キッコーマン?色は?
取って→どうやって取る?アームで?握る力はどのぐらい?
そして肝心の渡すという言葉がないので、醤油を取ってそのままになります。
このように人間ですとある程度ぼやかした言い方でも、相手もある程度自動的に解釈・判断して行動してくれます。
ですが機械はこういった曖昧な表現がわかりません。
なので、プログラミングをする際は機械にわかるように、徹底的に細かく指示を出す必要があります。
曖昧な表現は許されないんですね。
プログラムは数値で表現される
曖昧な表現を理解できない機械を相手にするために、プログラムというのは実質的に数値で表現されます。
数値と言っても、“0”と“1”の2つの数字だけで行います。これを2進法といいますが今は覚えなくても大丈夫です。
なぜ数値なのかといいますと、数値は曖昧な表現がないからです。
1+1=2になります。
これ以外の答えは存在しません。ですので、機械はこの一つの答え(命令)に対して動作します。
先ほどの例題を少し機械風に表現してみます。
例題:そこにある醤油を取って
そこ→現在いる位置(北緯35°、東経135°)から、現在向いている方向を基準に45°回転し、2m先にあるテーブルまで移動する。
醤油→キッコーマンの醤油で黒色の液体。円柱のボトル。
取って→機械のアームを30°曲げて、30cmアームを伸ばして、5kgの握力で握る。
渡す→180°回転して、2m移動して戻ってくる。
※数値は適当です。
みたいな感じで細かく命令を記述してようやく醤油を取ってくれます。
上の形はあくまで例題なのでかなり適当です(実際にはもっと大変な作業があります)
このようにプログラミングをする際は、細かく物事を考えていく必要があります。
プログラミングを学ぶ意味
ようやくメインのところにたどり着きました。
プログラミングを学ぶ意味ですが、プログラミングをする際は上記のように曖昧な表現が許されません。
そのために必要な知識がいくつかあります。
- 数学
- 論理思考
- 分析力
などなど。
こうやって書くと難しそうに感じるかもしれませんが、一つ一つの知識はそこまで必要ではありません。
※バリバリのプログラマになろう!とかでない限りは大丈夫です。
少し細かく見ていきます。
数学
数学と書くと微積やら物理学の難しい方程式を解いていくイメージが有るかもしれませんが、そんな難しい知識はほぼ使いません。
主に使うのは四則演算(足し算、引き算、掛け算、割り算)と比較演算(10と20だとどっちが大きい? 10 < 20)、後は一次方程式(x = a + b)などがメインです。
なので中学生レベルの数学知識があれば基本的には問題なく扱えます。
数学している!と意識してプログラミングを組むことはあまりないので、数学が苦手な方でもある程度なんとかなります。
論理思考
これは物事を順序立てて考えていく力になります。
先ほどの醤油の例でも少し出しているのですが、醤油を取る際にまずは
移動→醤油を発見→醤油を取る→移動
という行動を取っています。
この順序を間違えると醤油は取れません。
移動せずに醤油を取ろうとしても、醤油を取れる位置にいないのでいくら頑張っても醤油はずっと取れません。
このように物事を順序立てて表現する力が必要になります。
分析力
先ほどの論理思考に繋がる部分でもあるのですが、物事を順序立てて組み立てる際に、どこまで物事を分解できるか。
「そこにある醤油を取って」というプログラム(命令)を作る際に、この言葉をどうやって機械に理解させるかを分析して考える力が必要になります。
このようにプログラミングをしていくうえでいろいろな知識が必要となります。
ですが、逆に言うとこの必要な知識がプログラミングを学ぶことによって育成されていきます。
特に論理思考力や分析力は社会に出ていく上でも重要なスキルとなっています。
まとめ
今回も長くなってしまいました・・・。
さて、今回の記事をまとめます。
- プログラム=機械に命令を与える
- プログラムは数値で表現される
- プログラミングを学ぶ意味は以下の3つの知識を育成してくれる
- 数学的知識の育成
- 論理思考力の育成
- 分析力の育成
プログラミングを学べば実際にはそれ以外にも色々なメリットを享受できるようになるのですが、その辺のお話はまた次回機会がありましたら書きたいと思います。