プログラミングが退屈だ

Posted on June 6, 2015

最近、プログラミングが退屈に感じる。もはやルーチンと言っても差し支えな いとまで思うこともある。プログラミングというと一般的には創造的な活動だ と思われているが、実際のところその大部分は定型的な作業であり、多少頭を 使うというだけである。

諸説あるだろうが、自分にとってプログラミングとはコンピュータ上で仮説を 実証する作業なのだ。プログラミングを学び始めたころは、実証作業だけで十 分に刺激的だったし、それによって新たな仮説を生み出すこともできた。しか し、最近は実装作業による学びがほとんどなく、いまいち楽しみを見出せない。 逆に言えば、仮説を考える楽しさの純度が増したとも言える。でも実証のない 仮説は説得力に欠けるし、そもそも仮説と実証をそんなに簡単に分業できるか という話もある。そういうわけでできればプログラミングをもっと楽しみたい。

ところで、プログラミングにはどうしても退屈にならざるを得ない傾向がある ようだ。よく言われるのは、プログラミングの大部分はソフトウェアの保守に 割かれるという話である。では新規開発なら退屈でないのかと言えばそうでも ない。ある機能なり製品を開発するには、さまざまな問題を解決しなくてはな らないが、経済や淘汰が適切に機能していれば、多くの(有意義で面白い)問 題がすでに解かれており、プログラミングと言えば単にそれらを結合したり瑣 末な実装をするといった定型的でありきたりな作業を指すようになるのである。 いわば知的雑務なのだ。

とはいえ定型的な作業がまったくもって楽しくないということはないと思う。 ただその楽しみが感じにくいだけである。問題なのは、プログラミングにとも なう面倒な作業がそれを上まわることではないだろうか。面倒なことを挙げれ ば切りがないが、例えば変数名を考えたり、データ構造を考えたり、モジュー ルの依存関係を考えたり、もっと言えばファイル名を決めることすら、はっき り言って面倒だ。

チューリングマシンやラムダ計算といった計算モデルは知的雑務によく適して いると言えるだろう。雑務である以上、多種多様な作業をこなせる必要がある。 そのためできるだけ原始的な演算で閉じていると都合がいい。こういった低レ ベルな計算モデルにおいては、理論を積み上げることでどこまで到達できるか が主な研究テーマになるのだが、よく考えればその計算モデルを採用する必然 性はない。それどころか、それが本当に効率的で現実に即しているかを疑って みるべきだ。例えばもっと大胆な仮説を設定することもできるはずだ。もちろ んこういった試みの大半は失敗に終わる。でもやってみないことには成功しな いし、そもそも他人の思想の上で踊らされるのがいやだ。

話を戻すと、プログラミングを楽しくする当てが実はすでにある。といっても 私がすべて考えたわけではないが。詳しい話はここではしないがポイントは以 下である。

どのような形になるか分からないが、イメージを伝えるとこうなる。まず、プ ログラムの状態やデータは木構造ではなくグラフ構造で表現される。さらに、 状態は常に一貫する。つまり、状態の関係式さえ書いておけば適切に更新が行 なわれる。また、性能に関する関心は分離される。その他、式の表現力が高い 点も挙げられる。

うまく実現できれば、このモデルは多くの問題を解決するし、プログラミング がもっと楽しくなるに違いない。