@uents blog

Code wins arguments.

プログラミングとは何なのかの感想

はてブで興味深い記事を見つけたのでその感想。ブコメも含めておもしろい。

10年プログラマをやってきたけど、最近の僕の中ではプログラミング技術とは、 モデリング力とその処理系の実装スキル、だと思っている。

制御対象を分析し、抽象化・簡略化し、それを制御する処理システムを作る。まあこんな感じ。

現実世界は複雑なので、要件を分析して詳細仕様を詰めたり、 仕様を簡略化することももちろんプログラマとして必要な要素だと思う。 単にコードを書くだけのお仕事ではないはず。

古来から、プログラミングは数学なのか、芸術なのか、工学なのか、みたいな話題があるけど、最新の僕の感想では、勘だと思う。

勘というのが直観力やセンスのことなら一理あると思う。

よい実装にしろデバッグにしろ、良いプログラマは始めのアタリの付け所が上手い。

ただ、プログラミングに対する直観力は後天的なもので、 良いコードや良い本に出会って勉強すれば、いくらでも磨いていけると思う。

ソフトウェアが正しく動くかどうかは論理的に決められて、電卓アプリなら計算結果が狂ってたら間違っているけど、その電卓アプリがどのように作られたか、には正しさはない。逆立ちして作っても、猿にタイプライターを渡して作っても、計算結果合ってれば良い。

半分は合ってると思うけど、半分は思わない。

例えばアプリケーションではなく、ライブラリやフレームワークの開発ならどうだろう?

良いライブラリならAPIセットのインターフェースを眺めるだけで、 何ができるのか、何をさせたいのかが感覚的にわかる。

そういう仕事は、計算結果が合っていれば良いというだけではなく、 プログラミングの幅広い素養やセンスも大きく関わってくる。 そういうところに一種の工芸的な要素が含まれることは、 個人的にはいまのところ否定できない。

アプリケーションであっても、自分の書いたコードは (未来の自分も含めて)いつか誰かが読むわけで、きれいなコードに越したことはない。

きれいなコードとは、制御対象が客観的にかつ簡潔的にモデル化されており、 処理系として何がしたいのかが、読むだけですらすらと頭に入ってくる、そんなコード。

そう考えると、世の中がどう動いているか?という興味が尽きない限り、 プログラマとしてずっと生きていける気がして、少し勇気も湧いてきた。

これからも良いコードを書くために、もっともっと精進していきたい。