ホームページ目次前の話次の話

頭が良過ぎるプログラマは汚いプログラムを書く

2008年10月1日

ずいぶん間が開いてしまった。 これというのも、いろいろ面倒なことが次から次へと降りかかって来たからである。

そんな中で、前から1つ気になっていることがあるので、それについて論考(?)しようかと思っている。

努力でプログラムを書き上げる人のプログラムは、もの凄く、スパゲッティーどころではない状況を何度か見た。 何とかしてくれと頼まれたことはあったが、もちろん、ほぼすべての場合、修正依頼は断った。 修正するくらいだったら、作り直した方がよほど楽だし、メンテナンスまで考えたら捨てて作り直すしかないことは多い。

努力でプログラムを組むという危険性については、今までにも何度も書いた。 とくに、力でプログラムを書いている、力で設計しているときには、 その設計やプログラムがその力の影響で歪んでしまっている。 修正作業以前に、その影響を直さないと、手を入れる、機能追加をするなど到底できないものだ。 「よく努力しているなぁ」と思ったり口走ったりするときは、ほぼすべて上記の意味であり、 「やめてくれ〜」と心の中では叫んでいることがほとんどだ。

努力ではなくて、IQが高いことも、酷い、汚いプログラムを生む原因ではないかと最近考えるに至った。 逆に言えば、頭が良いことと、綺麗な、わかりやすいプログラムの間には、 相関関係は無いのではないかという考えが沸いた。 それどころか、非常に頭がよいことは、汚いプログラムの発生源と考えざるを得ない事件に遭遇したり、 巻き込まれることがあったのだ。

頭が良いということは、どんな汚い、ぐちゃぐちゃのプログラムでも気楽に理解できてしまって、 我々凡人には見るのもおぞましいようなプログラムでさえ、気にならないのではないかと思っている。 長くて汚いプログラムで、なおかつ動くのを作れるというのは驚異的な能力の持ち主に違いない。

プログラミングには、ある程度の知能は必要であろう。 まあ、人並み、IQが100くらいはあった方が良い気がする。 しかし、そこから先は本当に良いかどうかは疑問である。

プログラマたるもの、非常にIQが高ければ、プログラムが汚いなど誰も気にしなくなって、 無限に汚いプログラムになっていくのではないだろうか。 ここは、頭の悪いプログラマがいること、そして、頭の悪いプログラマにも理解可能なように プログラムを書くことで、プログラムの可読性が何とか保たれているのではないかと思っている次第である。

最長不到関数(最長不到クラス)というのがあるが、本当に長くて汚くて、 一体どこまで続くのかとうんざりするプログラムが実在する。 諸般の事情で、どうしても捨てられないという恐ろしい状況に追い込まれることがあるのだが、 なんとか裂くことができる個所を見つけて、自分の足りない頭でも理解可能な状況に変更する。 しかし、この作業は猛烈に面倒だ。そもそも長くて汚過ぎて理解できている自信が持てないので、 裂くごとに確認しなくてはならず、いつ動かなくなるか心臓に悪い作業である。

結局、頭が良過ぎない方が、誰にでも分かるプログラムを書けると結論付けられる。 一番良いのは、理解困難なプログラムを書けるほどはIQが高くなく、 でも作業は早いというのが理想のプログラマなのだろう。

O'Reilly Japan刊

3/14発売
増刷:第3刷決定♪

オープンソース
Scheme言語処理系
Gaucheの愛好者団体

詳細はブログで


ホームページ目次前の話次の話