QED

私はこの世界について驚くべき真理を発見した。だが、それを記すにはこのブログは狭すぎる。

数学とプログラミングと、今後なくなる仕事

「数学が得意な人は、プログラミングも得意なことが多い」

という経験則は、なぜなのかと思っていたのですが

『コンピュータが仕事を奪う』(新井紀子)を読んで謎が解けました。
.

 

いわく、プログラミングとは次の2ステップでなっています。

[1](僕らが日常使う)人間の言葉を、数学の言葉(ロジック)に変換する

[2] 数学の言葉を、プログラム(コンピュータの言葉)に変換する
.

ちょうど、英訳をするときにも、

一度、英語に訳しやすい日本語に直してから、英訳するようなもの。

もう少し詳しく言うと
.

[1](僕らが日常使う)人間の言葉を、数学の言葉(ロジック)に変換する

僕らが日常使う言葉というのは(良かれ悪かれ)非常にあいまいです。

たとえば、仕事でも、

「会議の参加人数+予備の分だけコピーとっておいて」

と言われても”予備”が何人分かはあいまいで人によって違います。

これを”誰が読んでも間違いの無い”論理(ロジック)に直すのが [1]です。

中でも数学は、論理として純粋なので、

著者は”数学の言葉”と言っているのでしょう。

先ほどの例ならば

「参加人数が、5人以下ならば、(参加人数+1)人分
 参加人数が、5人より多く10人以下ならば、(参加人数+2)人分
 参加人数が、10人以上ならば、(参加人数+3)人分
 のコピーをとる」

というのがロジックです。
.

[2] 数学の言葉を、プログラム(コンピュータの言葉)に変換する

さて、”誰が読んでも間違いのない”ロジックはできましたが、

このままでは、コンピュータが理解できません。

そこでコンピュータが分かる言葉(プログラム)にする必要があります。

先ほどの例を変換すれば

 N = 参加人数
 if (N <= 5) {
   copy(N+1)
 } else if (N <= 10) {
   copy(N+2)
 } else {
   copy(N+3)
 }

みたいな形になります。
.

で、ここまで来ればお分かりの通り、

数学が得意な人は、[1]の作業に慣れているため、

プログラミングも比較的得意なのではないかと思う次第。

また、ちまたに言われる「SE」と「プログラマー」の違いも

[1] を主にやるのが「SE」で

[2] をするのが「プログラマー」と理解できます。
.

で、このうち [2] は、今後どんどん単価が下がっていくと思われます。

インドや中国に発注すれば、コミュニケーションリスクはあるものの

人月20万円以下で、プログラマーが雇える時代です。

クラウドソーシングもその流れを加速させるでしょう。

さらには、このような自動プログラミングツールも出てきているので
http://www.nikkei.com/article/DGXNASFK0800Q_Y0A201C1000000/

やがて「プログラマー」という職業は消滅するかも知れません。
.

しかし、たとえプログラマーという仕事が消滅しても

[1] の作業は、残り続けることでしょう。

コミュニケーションのコストもかかるため、海外への発注も壁があり、

また自然言語解析は、いまだにコンピュータが苦手とするところです。

特に言語の意味やバックボーンを理解することは、

コンピューターにはきわめて難しいことが分かっています。
.

顧客の要望を聞き、それをロジックに落とし込む、

人とコンピュータの橋渡しをするような仕事が、

将来のIT系の主流になってくるのでしょう。