オン コールオン コールへようこそ。オン コールは、電話の着信音で制御不能に震え上がる人々が住む絶望の地下牢を覗くThe Register の週刊誌です。
今日の物語は、私たちが「Theo」と呼ぶ読者からのものであり、コードに気の利いたエラー メッセージを挿入しようとするすべての人にとって警告となるはずです。
物語はVGAとVESAローカルバスが大流行していた時代へと遡ります。テオ曰く「ドキュメントイメージングの黎明期」だそうです。
「文書のインデックス作成プログラムを書いていたのですが、クリティカルセクションがありました」と彼は言いました。簡単に言うと、コードは変数を格納し、アトミックな操作を実行し、その後、その変数に対して処理を行うというものでした。
コードは厳密に線形だった。「神自身が機械の中に手を伸ばして電子を動かす以外に、私の変数を変更できるものは何一つなかった」とテオは言った。
だめだ。無理だ。ありえない。テオの変数を邪魔できるものは何もない。考えられない。
当時、テオは大学でコンピュータサイエンスを専攻し、週40時間勤務をしていました。そのため、彼は少々疲れており、実際には「もし…だったらどうだろう?」と、昔ながらの妄想にとらわれていました。
ラックの静寂は耳をつんざくほどで、制作機材は暗くなってしまった – では、どのワイヤーを切断すればいいのでしょうか?
続きを読む
「そこで、変数を 2 つの場所に書き込み、アトミック操作を実行し、2 つの変数を比較し、一致している限り、そのまま処理を進めるコードを追加しました。」
変数は整数であり、何らかの理由で 2 つが一致しない場合 (そんなことは絶対に起こり得ないことを覚えていますか?)、Theo のコードはユーザーの画面にエラーを吐き出し、強制的にリセットします。
今日のまともなコードアナライザーなら、おそらく Theo の妄想的なメッセージに気付いたでしょうが、当時はそのようなツールは手に入らなかったのです。
コードがテストされ、アプリケーションがロールアウトされ、Theo はそれをすっかり忘れてしまいました。
テオが大学を卒業し、新しい会社に転職してからしばらく経ってから、深夜のコーディングに対する妄想が再び彼を悩ませるようになった。
それは彼の自宅の固定電話(覚えていますか?)への電話の形で来ました。
「テオさんですか?」と電話の相手はアメリカ南東部なまりの口調で尋ねた。
「ああ、そうだよ...」とテオは答えた。彼は今頃、自分が事故に遭ったとか、昔PPIを服用していたかもしれないとか言われるのではないかと、きっと不思議に思っただろう。
「私のコンピューターは人種差別主義者のバットマンで、あなたに電話するように指示したんです」と電話をかけてきた人物は言った。
最初はその文章の明らかに奇妙な単語の並び方に当惑したセオは、電話をかけてきた相手が画面に表示された Windows のダイアログ ボックスについて説明するまで、言葉に詰まった。
そして、Theo が妄想に陥ってコーディングに熱中していたときにコードに残した文を読み返します。「なんて競合状態なんだ、バットマン! X は X と等しくない! <自宅の電話番号> でこのメッセージを見たら、すぐに Theo に電話してください!」
「どうやら」とテオは私たちに言った。「何年も前に私が恐れていたことが現実になったんだ。ミシシッピの奥地のどこかで、コンピューターが、2 つの異なる場所に書き込まれた同じ値が突然異なる値になったと判断し、私が混乱した状態でコーディングしたエラー メッセージを表示したんだよ。」
その後、ラッキー・テオは、電話の向こう側にいる若いスキャナーオペレーターに「競合状態」の意味を説明する貴重な即席のオンコールタイムを過ごすことができました。
それは、テオのポップカルチャーに関する言及もプログラマー用語も理解できなかった気の毒な電話の相手にとっては「救いの源」だったと彼は言った。
絶対にアクセスされるべきではないコードを書いていたのに、都合の悪い時に自分の気の利いた言葉が表示されてしまった経験はありませんか?あるいは、上司から「こんなはずではなかった」というメッセージボックスが画面に表示されている理由を尋ねられた経験はありませんか?もちろん、そんな経験はありますよね。On Call にメールでその瞬間を共有してください。
20年前、あなたはどこにいましたか? COBOLを必死にカットしたり、日付フィールドに重要なバイトを1、2バイト追加したりしていましたか? それとも、2050年まで持ちこたえ、爆発するかもしれないお手製のものを作っていましたか? 誰ですか? 私ですか? オンコールは、皆さんの忌まわしいY2K体験談も聞きたいと思っています。失敗寸前で難を逃れた話で、楽しいひとときをお過ごしください。®