数学とプログラミングと、今後なくなる仕事
「数学が得意な人は、プログラミングも得意なことが多い」
という経験則は、なぜなのかと思っていたのですが
『コンピュータが仕事を奪う』(新井紀子)を読んで謎が解けました。
.
いわく、プログラミングとは次の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系の主流になってくるのでしょう。