新・闘わないプログラマ No.24

迷信の世界


コンピュータの世界って、知らない人から見ると、合理的・論理的な世界で、曖昧さ・いい加減さのようなものが全く無く、全てがきちんと割り切れるように見られがちですが、ご承知のようにけっこういい加減な世界ではあります。

「○○がうまく動かないんだけど」なんて聞かれても、確固たる理由も無く
「××とは相性が悪いらしいよ」とか
「OSを再インストールすると直るかも知れない」とか
いう答えしか出来ないのは日常茶飯事で、挙げ句の果てに
「立ち上げる前にちゃんとお祈りした?」とか
「それは、使っている人間の日頃の行いが悪いせいだよ」とか
言って煙に巻くくらいしか出来ないことも多かったりします。
そう言えば、私はMacやUNIXな人なのでよく知らないのですが、最近のWindowsはPnPって言うんですか、拡張スロットにボードを差したらお祈りしなければいけないらしいですね、「どうかこのボードを認識してください」って・・・Plug and Pray :-p

ソフトウェアが正常に動作しない原因のほとんどはソフトウェアのバグなわけですが(「バグではなくて仕様です」という有名な言葉もありますけどね)、最近、プログラマの監督をする仕事をしていて、なんというか基本が出来ていないというか、そういう人が多すぎて、とんでもないバグに出くわすことが多いです。
特に、今作っているプログラムは、イベントドリブン型だったり、マルチスレッドを使ったりするのですが、このあたりの概念が分かっていないプログラマが多すぎます。特にこういったプログラムはタイミングによってバグが顕在化したりしなかったりするので、現象を捕まえるのが難しかったり(デバッガを使うとバグが顕在化しなかったり)するので、結構面倒です。結局ソースプログラムを追ってゆくことも多いです(しかし、他人の書いた汚いソースを読むのは出来れば避けたいのですけど)。
こうやって、作ったプログラムのバグをつぶしていっても、実は、まだまだ難関があるんですね。ほとんどの場合、一つのプログラムは、それ単体で動くわけでは無く、他のプログラム(他プロセスやライブラリ、それにOS)と協調して動作するわけです。するとですね、そっちの方のバグが顕在化したり、仕様のあいまいさのせいで正しい動作が行われなかったり、とかするわけです。有名なところでは、WindowsにInternet Explorer 4.0(IE4)を入れると、OSのAPIの仕様が変わって、今まで動いていたプログラムが突如動かなくなったり、なんてことがありましたよね。
あとは、複数のプログラムが協調して動くようなシステムの場合、これらのプログラムがどのような情報をどういう風にやりとりするか(言ってみれば「プロトコル」ですね)、正確に定義しておく必要があります。ところが、これが結構難しい。以前、私が経験した例では、「○○という情報を渡す場合には、先頭1バイト目は1にする。◇◇の場合は2にする」なんていうのがありました。ところが、この「1」とか「2」ってやつが曲者で、ある人は数値(0x01,0x02)と解釈し、またある人は文字('1','2')と解釈してプログラムを作ってしまいました。これ、総合テストで発覚したのですが、原因が解るまで3日間もかかってしまいました(私はその間、一睡もせず(;_;) あ、一応断っておきますが、この仕様を考えたのは私ではありません)
そんなこんなで、作ったシステムの総合テストの時なんか、(普段、そんなん信用もしていないくせに)神サマ仏サマ稲尾サマ(稲尾サマは無いか)状態になったりするわけです。そう言えば、今日は日が悪いから明日にしよう、とか言った人もいたっけ(あのぉ〜、もうかなりスケジュールが押しているですけど・・・、って言ったら、じゃあ明日の午前0時からやる、とか言い出して・・・(^^;))

昔に比べて、今のコンピュータシステムは複雑になりすぎていて、プログラマとしても、自分の知らないところで知らない処理が勝手に動いている、という部分が大変多いわけです。昔は機械命令レベルで動きを確認したり、とかよくやったものですが、最近はあまりに複雑でそこまでやる根性がありません。そういう我々から見えない部分が多くなってくるにつれて、迷信が入りこむ余地が増えてきているような気がします。

最後にひとつエピソードを。
以前のコラムでも少し書きましたが、私は今、職場でフリーUNIXを今後作るシステムに採用させるよう画策しています。なかなか理解者が少なくて苦労しているのですが、その中で、こんな会話がありました。
「フリーUNIXなんて、メーカーのサポートが無いから仕事じゃ使えないんじゃないの?」
「じゃあ聞きますけど、Microsoftの製品で満足の行くサポートはしてもらってます? 確か毎年数百万円払っているはずですよね」
「確かにMicrosoftのサポート体制はかなり不安だな。でも全くサポートが無いというのも・・・」
「UNIXってそんなにサポートが要りますか? 私の経験ではメーカーに問いあわせたことなんかほとんど皆無ですけど、Windowsと違って。しかも、フリーUNIXにはソースがありますから、いざとなればソースを読む事だって出来るんですよ」
「いくらなんでもOSのソースを読むなんて・・・・」(半分、馬鹿にしている)
ソースが手元にあることがどれだけ安心感に繋がるか、どうも理解してもらえなかったようです。OSのソースを読むったって、必要なところから追ってゆけばいいだけであって、そんなに大変では無いと思うんですけどね。
とにかく、変な迷信がたくさんあるOSとはできるだけ関わりたくない、というのが本音です。

[前へ] [次へ]

[Home] [戻る]


mailto:lepton@amy.hi-ho.ne.jp