人気ブログランキング | 話題のタグを見る

Beautiful Code

『Beautiful Code (ビューティフルコード)』 Andy Oram, Greg Wilson 編を読んだ。

残念ながら、管理人の知識では読みこなせなかった。「美しいコード」という言葉はよく聞いていたが、一流のプログラマーたちの考える美しさが多様なのに驚いた。無駄を省いたコンパクトなコードを美しいとい人もあるし、コードは少々長くなっても実行速度の速いコードを紹介する人もあるかと思えば、読みやすさこそが美しさだと主張する人もあり、また、大規模なソフトウェアが高信頼性で動くのを美しいと感じる人もある。

しかし、それらの主張には共通するものがあるように感じられた。つまり、コードの美しさとはコードの簡潔さや単なる読みやすさによるものではなく、問題を「あざやかに」解決するやり方に対して感じられるものであるということだ。Rubyのイテレータは、見た目の読みやすさを提供するので美しいのではなく、オブジェクトの要素をひとつずつ取り出してブロックに渡すという概念が巧妙なのだ。

この本の冒頭ではカーニハンによる記事があり、ロブの作った基本的な正規表現の処理プログラムを行う30行のCプログラムが紹介してあった。たった30行のCプログラムで、冒頭マッチ、末尾マッチ、繰り返しのある正規表現のマッチを実行できてしまうが、このプログラムがこのような芸当をすることができるのは、ポインタと再帰呼び出しを巧妙に組み合わせてあるからだ。

ところで、正規表現のオートマトンもCのポインタも再帰呼び出しも実はアルゴリズムだ。美しいコードの秘密はアルゴリズムやその組み合わせのやり方のスマートさにあったのだ。
by tnomura9 | 2008-11-16 22:05 | Ruby | Comments(0)
<< 要点 2008年6月以降の記事 >>