Toshiyuki Kawanishi Blog


2009
3 . 6

頑張れC言語: K&R;とリファクタリング

「ThoughtWorksアンソロジー」という本を買いました。ThoughtWorks社の社員によるエッセーを集めた本なのですが、「オブジェクト指向エクササイズ」というエッセーなどとても興味深いですし、テストについても結構書かれているのでとても素敵な本です。内容については、読み終わってからでも、紹介できればと思っています。





さて、この本の「まえがき」では、C言語の原典であるK&Rの「プログラミング言語 C」について触れられています。ThougthWorks社副社長のMike Aguilar曰く、

「K&Rの中で、文字列コピーの関数が数回のイテレーションを経て簡潔で優雅な形に書き換えられていくのを読み、私は感動しました。」

確かに、K&Rの中では、ポインタを使ったり、省略文を使ったりして、振る舞いの変わらない文字列コピー関数が徐々に書き換えられていく様が描かれています。自分でも何回も読んでいるハズですが、この様な視点はありませんでした。確かに再読してみると、テストこそついていないものの、インタフェースを変更せずに実装を美しくしていくリファクタリングの原点のようなものを感じました。

やはり、「C言語だから」とか環境に関係なく、アジャイルの発想って生きてくるのだなと、あらためて感じました。C言語使いとしては、Rubyなどをとてもうらやましく思う事もありますが、このように「C言語でもまだまだ工夫の余地があるな」と様々なところで感じる瞬間があるのは嬉しく思います。C言語使いの皆さん、C言語のアジリティを加速するために、共々頑張っていきましょう。Rubyは確かにDSLを書くのに優れた言語かもしれませんが、そのDSLを書くための言語を書くためにはC言語が使われている、つまりメタメタDSLはC言語だとも言えますから。

そういえば、最近全然読んでいないですが、K&Rは3冊持っているな......。さすがに3冊持っている本って他にはないです。やはり何らかのオーラがあるんでしょうか、さすがK&R。



2009/03/11 yojik > "やはり、「C言語だから」とか環境に関係なく、アジャイルの発想って生きてくるのだなと、あらためて感じました。" ThoughtWorksAnthology