数学とプログラミング② ~プログラミングを学ぶべき理由~
公開日
2020年9月14日
更新日
2020年9月14日
数学教室和(なごみ)講師の松中です。
私は数学教室で講師をしながら、教室のシステム周りも担当しています。前回の記事では私が行ったシステム改修を紹介させていただきました。
今回は続く記事として、私が思うプログラミングを学ぶべき理由についてお話ししたいと思います。
作ったプログラムは最高の部下
私は数学もプログラミングも大好きです。数学はただ単に好きなだけなので、「他の人も絶対に学ぶべきだ!」と強くはお勧めはしていません。しかし、プログラミングは誰しもが学んだほうが良いと思う必須技術だと思っています。中学生以下のお子さんを持つ知人には、プログラミングの有用さを語り、習い事としておすすめしています。
私が思うプログラミングを学ぶべき理由は、以下の要件を満たす「最高の部下」を手に入れることができるからです。
・お願いしたことを忠実に、高速でやってくれる
・いろいろな分野に精通している
・24時間働かせても疲れない
・給料は電気代だけ
・文句を言わない
本記事では、上の2点「お願いしたことを忠実に、高速でやってくれる」、「いろいろな分野に精通している」について解説していきます。
お願いしたことを忠実に、高速でやってくれる
例えば人間の部下に「テキストファイルに”松中”という文字列を10,000個分記載してください」と作業命令を与えると、回数の間違いや、”松中松永松中”や”松中松松中松中”のような入力間違いが発生するでしょう。しかもそれなりに時間もかかるし、こんな不毛な命令をすると部下に嫌われてしまうかもしれません。
しかしプログラミングができると、以下のようにプログラムを書くだけでこの処理を正確に間違いなく実行してもらうことができます。そして処理時間も1秒もかかりません。
for(int i=0;i<10000;i++){
System.out.print(“松中”);
}
そして例えば、人間の部下が作業を終える頃に作業命令の間違いに気づいたとします。「ごめん、”松中”を10,000回じゃなくて、”田中”を7,777回だった」と部下に伝えると、もう絶対に嫌われますね。
しかし、プログラムの場合は以下のように該当箇所を少し書き直すだけで、一瞬で作業をやり直してくれます。
for(int i=0;i<7777;i++){
System.out.print(“田中”);
}
注意したいのは、プログラムは良くも悪くも言われたことしかできないことです。間違った命令を与えれば、命令に忠実に間違います。人間の部下なら「察する」とか「空気を読む」ことで間違った命令でも期待していた作業をしてくれることがありますが、プログラムは「そのくらいわかってよ」というような常識は一切通用しません。プログラムは忠実で純真で世の中のことを何も知らないあなたの部下です。どんなことも一から教えてあげる必要があります。
一から教えるのは大変ですが、「どのような入力があって、どのように処理して、どのような出力をさせるのか」ということを考えることで、自分の頭の整理にもなります。プログラミングに慣れればどんどん教えることが早くできるようになりますし、過去に作ったプログラムを流用することで教える量は徐々に減っていきます。
よく考えると、これまで私も忠実で純真なプログラムという部下に様々な非人道的な命令をしてきました。
・素数を1,000,000個列挙させ、0~9の出現回数の割合を調べさせる。
・四則演算や分数、割合など様々な種類の計算プリントと解答を何百種類も作らせる。
・1年間365日休ませず、毎朝同じ時間に明日の授業の予定を確認させ、授業のお客様にリマインドメールをさせる。
これらは一例中の一例ですが、特に数学の数値計算に関するプログラムは口では言い表せれないほど非人道的なものが多いです。しかし、プログラムという部下は文句も言わずに忠実に命令に従ってくれるのです。
いろいろな分野に精通している
前節でプログラムという部下は”世の中のことを何も知らない”と書きました。それに矛盾するようですが、実はその部下はいろいろな分野に精通しています。例を挙げて解説します。
プログラミングができれば生活や仕事で役立ついろいろなサービス作り出すことができます。例えば、
・写真に撮った文章から単語を抜き出し、WEB辞書でその意味を列挙する
・自分がいる場所を定期的にツイートする
です。「サイトから情報を抜き出す」、「LINEに通知」、「文章の写真からテキストを抽出する」、「位置情報を取得する」、「ツイートを行う」等々、なかなか素人には難しいような処理が出てきましたね。
実はこれらの処理は既存のライブラリやWEBサービスのAPIを使うことで簡単に実現することができます。難しい処理は天才エンジニアたちが作ってくれているので、私たちはそれを組み合わせて実現したいサービスを作ればよいのです。そういった意味でプログラムという部下はいろいろな分野に精通しているのです。
実際私が昔作った素数コレクターというアプリも、写真からテキストを抽出したり、位置情報を取得したり、素数判定を行ったりと様々な外部のサービスを利用しています。
まとめ
今回は私が思うプログラミングを学ぶべき理由についてお話ししました。このような忠実で、純真で、仕事が早くて、いろいろな分野に精通している部下を1人雇おうと思ったら年間数百万かかるでしょう。しかし、プログラミングを勉強するだけで優秀な部下を何十人も従えることができるのです。このようなことは本来はやってはいけないことかもしれませんが、上司に隠れてプログラミングで仕事を自動化し、仕事をしているふりをしてYouTubeを見ていても上司にはばれないのです。どうですか、プログラミングを学びたくなりませんか?
<文/松中>