2020-08-06

プログラミングなんて大して面白くはないぞ

プログラミングでやっていることは、本質的にはデータの変換だ。

たとえば、

a b c d

という横一列のデータ

a b
c d

みたいに2行2列にするとかな。もちろん、これは分かりやすいがつまらない例だ。もう少し意味のある例としては、たとえば100万個の数が与えられたとして、それらの合計や平均を求めたり、各数を2倍したり、条件に合う数のみを抜き出したり、といったことだ。

プログラミングというのは、どんなに専門的になろうが、本質的にこれしかやっていない。これは何も、「この世の現象はすべて物質間の相互作用に過ぎない」みたいなナンセンスな話をしているのではない。MicrosoftGoogleエンジニアだろうが、「プログラミング」に関しては本当にこれしかやっていないのである。そして正直、これはつまらない。

もちろん、あらゆる仕事は究極的に言えば、上と同じような単純作業の組み合わせかも知れない。しかしそれでも、一定以上の知的労働なら、好奇心創造意欲をかき立てられるものがあるだろう。たとえば力学を応用して機械設計するとか、回帰分析で将来のデータ予測するとかは、それなりに面白いと思う。一方、プログラミングにそういうものはない。ひたすら、原理的には小中学生でも理解できるデータ変換器を書くだけである

プログラミングが他の科学技術と最も異なる点は、技術進歩がないことである。だいたいどんな領域でも、「今まで無かった技術発見されて、昔できなかったことができるようになる」ということがある。しかし、プログラミングにはそういうことは一切無い。たしかに、スマートフォンなどは昔は無かったが、それらはすべてハードウェア進歩である

かわりにプログラミング世界にあるのは、「やり方」の流行り廃りだけである。つまり、上の小学生でも分かるデータ変換を「どう書くか」が時代によって変わる。この「どう書くか」っていうのは、書き方によってソフトウェアの性能が著しく変わるとかではない。たとえば、日本語文章で3つの項目を並列するときに、

A、B、C

と読点で区切って並べるか

  • A
  • B
  • C

と箇条書きにするか、というレベルの話である。これによって、伝わる内容自体が変わるわけでも、文章がより洗練されるわけでもない。プログラミング進歩というのはこういうレベルのことしかない。

誤解のないように言っておくと、プログラミング進歩がないからと言って、新しい技術を学ばなくて良いことにはならない。2020年現在に、BASICとか初期のJavaなんかでソースコードを書く意味は無いし、そんなことは迷惑からするべきではない。プログラミングの新技術は、プログラミング範疇では昔の技術より優れていることが多いし、組織で開発をする上で共通知識になり得るから積極的に学ぶべきである。ここで言っているのは、プログラミング自体進歩が無いということだ。

  • プログラミングに進歩がないというより、コンピュータサイエンスという分野自体が、数世紀レベルで遅れてて低レベル クヌース-モリス-プラット法 https://ja.m.wikipedia.org/wiki/%E3%82%AF%E3%...

  • 「全てのプログラムはフィルタである」の1行で済むのではないかと思う

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん