2006年06月08日

金槌は役に立たない

 あらゆる人々と同じく、プログラマの耳に入る情報も、かなりの部分がテンプレでできている。
 「××は役に立たない」というテンプレを聞かずに一週間を終えることはまずない。それでも、××の中身によっては煽られる人がいるのだから面白い(コメント欄)
 登場したばかりの新技術は、それがどのくらい役に立つのか、誰も知らない。だから、「金槌を使えば、ネジ回しなんかなくても、木材に木ネジを打ち込めますよ」というような極論を唱える人が出てくる。実際に木ネジを打っている人がこう主張するならまだいい。しかし、自分では打ちもせずに主張する糞野郎がぞろぞろと出てくるのだから目障りだ。その反動として、「金槌は役に立たない」という声の大合唱が始まる。
 だから、「××は役に立たない」という声はいつものことであって、なんの問題もない。そういう声がやかましく聞こえてきたなら、××をかじっておいたほうがいい。他の人が、木ネジを打ち込むような真似をたっぷりやらかしてくれた後なので、同じ轍を踏まずにすむ。
 
 問題は、そういう声が聞こえない技術だ。
 「××は役に立たない」と言われないような技術は、以下のどちらかだ。
1. わずかな数の信者以外は誰も使っていない
2. おぞましいことが起こっている
 1については解説不要なので、2について。
 この世界では、本当に恐ろしいことが、現実に起こる。人間はそういうものをなかなか認識することができない。第二次大戦中の連合国では、アウシュビッツの存在など、ほとんど誰も信じなかった。ある意味では、アウシュビッツに収容された当のユダヤ人さえも、十分に信じてはいなかった。「絶滅収容所」なんてものは、どう考えても、ありそうにないことではないか?
 プログラマの世界にも、そういうことが起こった――C言語だ。
 「C言語は役に立たない」という声を、私はほとんど聞いた覚えがない。
 もちろん、C言語は全能ではなかった。しかし全能でなければならなかった。だから、C言語の全能性を否定するようなものが、すべて抹殺されたのだ。「C言語は役に立たない」という声を発する人々が抹殺された。そういう人々のする仕事が抹殺された。C言語が人々を助けたのではなく、人々がC言語の鋳型に合わせて鋳直された。
 幸いなことに、抹殺は完全ではなかった。C言語の全能性を否定するような仕事と人々も、ごく一部で生き残った。たとえば数値計算である。「C言語は速い」という神話では、彼らを抹殺することはできなかった。
 C言語には、コンパイラによる最適化を妨げるような特徴がいくつもある。たとえば、参照がなく、そのかわりにポインタを使わせることだ。参照ではできてポインタではできない種類の最適化があり、これは数値計算の性能に致命的な影響を与えることがある。この性能の差はそのまま計算機時間の差に、計算機時間の差はそのままコストの差になり、このようにして示されるコストの差は、経営判断を決定的に左右した。
 C言語は数値計算を支配することができなかったので、そのかわりに、「数値計算の世界にはFORTRANの資産が山ほどあって、しがらみを断ち切れない」というプロパガンダで取り繕うことになった。これにはいくらか真実も含まれている。それは、Pascalなどに移行せずFORTRANにとどまる理由ではあった。しかしC言語に移行しない理由ではなかった。
 C言語の全能性のために、何が失われたか。
 過去10年間のセキュリティ脆弱性情報から、メモリ管理関連のものだけを抜き出して眺めてみるといい。しかもこれは半永久的に続く。
 だがこれは氷山の一角にすぎない。より巨大な損失は、生産性の分野にある。メモリ管理のために費やされたコストを測定する方法はない。だが、もし測れたとしたら、セキュリティ脆弱性による損失よりも百倍のオーダーで大きいだろう。
 そして、量の損失ならまだ救いがある。質の損失はどうか。メモリ管理や文字列操作の難しさのために書かれなかったソフトウェアは、夢のなかにさえ出てこない。
 おわかりだろうか。
 人は、金槌で木ネジを打つ。その愚かさに気づかず、打ち続ける。けっして愚かではない何百万人もの人々が、何十年にもわたって。
 おぞましいことだ。
 
 「××は役に立たない」という声が聞こえるのは素晴らしいことだ。特に××にとって素晴らしいことだ。祝福といってもいい。
 「××は必要だ」「使える」とばかり言われて、「役に立たない」と言われない××は危険だ。特に、たくさんの人が実際に××にかかわっているなら、それは、知性と決断力を総動員すべしというサインだ。
 
 ところで、これは技術ではないが、祝福されない危険な××を思いついた。あなたはこんな声を聞いたことがあるだろうか。私はない。
 「実務経験は役に立たない」

Posted by hajime at 2006年06月08日 22:39
Comments