空想犬猫記

※当日記では、犬も猫も空想も扱っておりません。(旧・エト記)

プログラミングの何を楽しんでいるか?

私は,自分自身で「プログラミングが好きだ」と思っているが,どうも世の「プログラム好き」な連中とは違うような気がしてきた。連中の大半は,主に「アルゴリズム萌え」と「記法萌え」に分類される。

アルゴリズム萌えの連中は O(n) だの Ω(n) だのNP完全だのチューリングマシン云々と,プログラミングの学問としての数学的な側面にこだわる。

一方で「記法萌え」な連中は「○○ならこう書ける」とか,クロージャ云々とか,そこまで行かなくてもどのライブラリが旬だとか,同じ問題をどう解くか,そこにどれだけオリジナリティを持たせられるかに,とてもこだわっている気がする「俺ならこう書く」とか「勝手に添削」とか。強いて言えばパズル的な側面にこだわる。数学が苦手な人も,この部類には入れる。

で,考えてみたんだけど,私はそのどちらでもない。いうなれば「構造萌え」。モジュール,クラス,インスタンスが組み合わさって,相互作用して,全体として巨大なものが動く,そういうものを構築するプロセスに一番こだわる。コーディングももちろんするけど,一番ワクワクしているのはUMLで作図している時かも知れない。数学的な側面は実用的でありさえすれば気にしない。パズル的な要素を駆使するのは手段であって目的にはならない。上手くは言えないが,自分の作ったオブジェクトが,定められた役割を果たし,天命を全うするのを眺めることに興味がある。

そういう意味では,たんにプログラミングをやってるのは,手っ取り早いからというだけの理由しかない。本当は,料理でも,外科手術でも,バイオリン作りでも,電子工作でも,プラント設計でも,組織運営でも,何でもいい。所作に用いる道具や部品の種類一つ一つがプログラムで言ったらクラスで,実際に手に取って使う道具や,組み込まれる部品は,インスタンスに相当する。プログラマだったら,職人が手で作業するところをコンピュータがやってくれる。楽だね(笑)。

うーん,考えてみたら,普通の人はみな「構造萌え」で,一部の「アルゴリズム」や「記法」好きが勝手に盛り上がってるだけかも知れない。というのは,それらは,簡単に客観的な比較・検証(ベンチマーク)ができるから,話題としては盛り上げやすいのだ。

プログラミングで「構造萌え」の嗜好を満たす一般的な話題といったら,デザインパターンになるのだろうか。でもデザインパターンも,限られたケーススタディで,一般化できているとは言い難い。一般的な話題で「俺ならこう設計する」みたいなことが議論できる場所ってないのかなぁ。

ここまで書いて得た今日の収穫

  1. 私が何事も道具(形)から入る道具マニアであることと「構造萌え」なところが関連していることを発見。
  2. 自分はプログラマよりも,もっと上流でも楽しめる。