コードゴルフならぬシステムゴルフ
ふと、自分のプログラミングに対する趣味・趣向について振り返ってみた。
今まで自分の作ってきた作品には、共通項があるんじゃないか。
その結果「なるべく短いコードでシステムを作ろうとしている」という共通項が見えてきた。
いうなれば、コードゴルフならぬ「システムゴルフ」。
私は実行速度にはあまり拘らないほうだ、それよりは、書いたコードが短く収まるほうを選ぶ。 そのために、少しくらい読みにくいコードがあってもかまわない。コード行数が圧縮されれば。 読みにくい部分が局所化されていれば。ある程度のトレードオフはあるが。
人のライブラリを使うのも厭わないほうだ、選ぶのにも時間をかける。結果的に自分が見る範囲のコードが短くなるのなら努力を厭わない。 最近はプログラミング言語処理系の[Nendo]開発にまで手を出してしまったが、これも考えてみればシステムゴルフのためだと言えなくもない。
ライブラリが大量にあるRuby上にLispを構築したのは自分の潜在意識の中に「システムゴルフ」があるからだろう。 何かを作りたくなった時、MongoDBやRedisなど最新の技術を使ってみたくなる。最新の技術はとかくアプリケーション側のコードを短くするための工夫がされていることが多い。 それらは自分のシステムをなるべく短い行数でプログラムする努力を後押ししてくれる。 さらには、Lispのマクロによってコードを圧縮できる。
ただし、短いコードは意味が濃縮されているので、他人からはファーストインプレッションで拒否反応を起こされることもあるのが欠点。 実は拒否反応は括弧の多さ(見た目?)だけによるものかもしれないけど…
とにかく、自分は今後も「システムゴルフ」の上達を目指す姿勢は変わらないんだろうなぁと思う。