2000年問題のしくみ

Apr 01 2000
最近まで、コンピュータープログラマーは、ソフトウェアで日付の年の部分に2桁のプレースホルダーを使用していました。システムが最初の2つの数値を説明できないことに気付いたときに何が起こったと思いますか?集団パニック。

今年のニュースでは、「2000年問題」について常に耳にします。そして、あなたはその過程で多くの矛盾する情報を聞くでしょう。インターネットには、「世界の終わり」というレトリックがたくさん浮かんでいます。あなたは何を信じるべきですか?

ハウスタッフワークスのこの版では、2000年問題(Y2K問題とも呼ばれます)について説明し、何が起こっているのか、何が行われているのかを正確に理解できるようにします。また、さまざまなリンクを探索することもできます。この情報から、あなたはあなた自身の情報に基づいた結論を導き出します。

Y2K問題とは何ですか?

Y2K問題の原因は非常に単純です。最近まで、コンピュータープログラマーは、ソフトウェアで日付の年の部分に2桁のプレースホルダーを使用する習慣がありました。たとえば、一般的な保険証券またはクレジットカードの有効期限は、コンピュータファイルにMM / DD / YY形式で保存されます(例:-08/31/99)。プログラマーは、次のようなさまざまな理由でこれを行ってきました。

  • それが、誰もが通常の生活でそれを行う方法です。手で小切手を書き、日付に「スラッシュ」形式を使用する場合、そのように書きます。
  • 4桁ではなく2桁を保存するのに必要なスペースが少なくて済みます(ハードディスクは非常に安価であるため、今では大したことではありませんが、古いマシンではかつては大したことでした)。
  • 標準化機関は最近まで4桁の日付形式を推奨していませんでした。
  • このソフトウェアの多くがこれほど長い寿命を持つとは誰も予想していませんでした。1970年にソフトウェアを書いた人々は、そのソフトウェアが30年後もまだ使用されていると信じる理由がありませんでした。

2桁の年形式では、年に「00」を入力すると、ほとんどのプログラムで問題が発生します。ソフトウェアは、「00」を「1900」と解釈するか「2000」と解釈するかを認識していません。したがって、ほとんどのプログラムはデフォルトで1900になります。つまり、ほとんどのプログラマーが作成したコードは、2桁の日付の前に「19」を付けるか、世紀を想定していないため、デフォルトでは「19」になります。 。プログラムが日付に対して多くの計算を実行することを除いて、これは問題にはなりません。たとえば、プログラムの年齢を計算するには、今日の日付を取得し、そこから生年月日を差し引きます。この減算は、今日の日付と生年月日が異なる世紀になるまで、2桁の年の日付で正常に機能します。その後、計算は機能しなくなります。例えば、プログラムが今日の日付が1/1/00で、誕生日が1/1/65であると判断した場合、35歳ではなく-65歳であると計算される場合があります。その結果、日付の計算で誤った出力が発生し、ソフトウェアがクラッシュしたり、間違った結果が生成されたりします。

認識しておくべき重要なことは、それだけです。それが2000年問題全体です。多くのプログラマーは、プログラムで1年に2桁の形式を使用していたため、日付の計算では2000年1月1日に正しい答えが得られませんでした。それ以上のものはありません。

解決策は、明らかに、プログラムが正しく機能するように修正することです。標準的な解決策がいくつかあります。

  • 00、01、02などのような年が実際には2000、2001、2002などを意味することを理解するように、ソフトウェアを再コーディングします。
  • 4桁のプレースホルダーを何年も使用し、すべてのソフトウェアを再コーディングして4桁の日付を処理することにより、「問題を真に修正」します。 [興味深い考えの質問-なぜ年に4桁を使用するのですか? 5、さらには6を使用してみませんか?ほとんどの人は、8000年後には誰もこのソフトウェアを使用しないと想定しているため、それは合理的な想定のようです。これで、2000年問題にどのように取り組んだかがわかります...]

これらの修正はどちらも概念レベルで簡単に実行できます。コードにアクセスし、すべての日付計算を見つけて、適切に処理するように変更します。ソフトウェアには何百万もの修正が必要な場所があり、各修正は手作業で行ってからテストする必要があります。たとえば、保険会社には、保険計算を実行する2,000万行または3,000万行のコードがあるとします。コード内には、100,000または200,000の日付計算がある場合があります。コードの記述方法によっては、プログラマーが手作業で入り、日付を使用するプログラムの各ポイントを変更する必要がある場合があります。次に、各変更をテストする必要があります。ほとんどの場合、テストは難しい部分です。多くの時間がかかる可能性があります。

それぞれの変更を行ってテストするのに1日かかり、10万件の変更があり、1人が年間200日働いているとすると、すべての変更を行うのに年間500人かかることになります。また、ほとんどの企業が1年間500人のアイドルプログラマーを抱えておらず、それらの人々を雇わなければならないことを理解している場合、これがかなり高価な問題になる理由がわかります。プログラマーの費用が年間15万ドル程度であると考えると(プログラマーの給与、福利厚生、オフィススペース、設備、管理、トレーニングなどすべてを含めると)、企業に数千万ドルの費用がかかる可能性があることがわかります。大規模なプログラムですべての日付計算を修正するためのドル。

2000年1月に2000年問題が発生し、発生しましたが、その歴史的価値のために、この記事をアーカイブ版として保存しました。メディアでの2000年問題のパニックの真っ最中に1999年の初めに公開されたこの記事は、「実際には何も起こらない」という文で注目に値します。振り返ってみると、その文は完全に正しかったが、1999年1月には、それは間違いなく主流メディアが描いていた絵ではなかった。この単純な予測を行うために、かなりの炎上する電子メールを受け取りました。

2000年1月1日に何が起こりますか?

2000年1月1日に、修正されていないソフトウェアは動作を停止するか、正しくない出力を生成します。大きな問題は、「私たちが知っているように、それが世界にどれほど大きな影響を与えるのか」ということです。

一部の人々は世界が終わると予測しています。たとえば、世界的な停電、交通インフラの完全な故障(食料が店に届かないなど)、飛行機が空から落ちるなど、これらの人々が予測するシナリオです。社会の構造が崩壊し、世界中の人々が暴動を起こし、世界が燃え尽きるという予測があります。もちろん、これらの予測を行う人々はすべて、A)民兵、B)生存者、C)宗教的熱狂者である傾向があります。これらの予測の出所を認識することが重要です。

実際には、何も起こりません。予期しない問題が発生し、回避されるため、1〜2週間の不便が生じる可能性があります。それ以外の場合は効果がありません。これは、次の理由で簡単に予測できます。

  1. ほとんどの企業や政府機関は、1999年末までにソフトウェアを修正するか、回避策を講じる予定です。そうでない場合、廃業することになり、それは仕事を成し遂げるための強力なインセンティブになります。
  2. 私たちがコンピューターにどれほど依存していると思っても、ほとんどすべてがシリコンではなく人によって運営されています。食べ物を例にとってみましょう。トマトとレタスは成長し続け、それを選ぶ人々はそれを選び続けます、そして缶詰工場はまだそれをすることができます、トラック運転手はまだ彼らのトラックを運転し、食料品店はそれを売るでしょう。言い換えれば、たとえ数台のコンピューターが停止しても、世界は停止しません。
  3. 一部の企業は一緒に行動を起こさず、問題を抱えることになります。彼らは廃業するでしょう。それは仕事での通常の資本主義です。勝者と敗者がそれを整理するときに少し混乱がありますが、他に何が新しいのですか?

もう一つ覚えておくべきことは、私たちはいつも不便を経験していて、それは私たちにほとんどまたはまったく影響を与えないということです。たとえば、UPS(United Parcel Service)が1997年にストライキを行ったとき、米国の宅配インフラストラクチャの80%のようなものがシャットダウンされました。世界は終わりませんでした。代わりに、誰もが郵便局とFedexを使用しました。 1999年1月3日、シカゴとデトロイトは30年間で最悪の吹雪を経験しました。全国の空の旅を止め、デトロイトモーターショーの開幕を遅らせ、何万人もの人々を立ち往生させた。どういうわけか私たちは不便を乗り越えて生き残った。 2000年1月1日に、問題を抱えている企業がいくつかあります。しかし、そうでない会社は他にもたくさんあります。ご不便をおかけする場合がありますが、それだけで2週間後に整理いたします。それ'大吹雪や大ストライキと何ら変わりはありません。私たちは問題を回避する方法を見つけ出し、人生は続きます。

2000年問題の前後で使用される多くの恐ろしい戦術と誇張があります。それらのすべてにおいて、人々はもはや彼らの仕事をすることができないというかなり広い仮定があります。認識しておくべき重要なことは、世界中の多くのコンピューターが2000年1月1日に突然シャットダウンしたとしても、人々は自分が何をしているのかを知っているので、全体的な影響は最小限になるということです。理由をお見せしましょう。

  • 米国のすべてのATMが機能しなくなったとしましょう。まだ出納係がいて、通常の営業時間内に銀行の出納係と話し合って入出金を行うことができます。
  • UPSのすべてのコンピューターがシャットダウンしたとしましょう。UPSは茶色のトラックを運転している人々の集まりであり、全員が住所ラベルを読むことができます。パッケージは引き続き配信されます。
  • 店舗内のすべてのバーコードスキャナーが機能しなくなったとしましょう。キャッシャーは引き続き価格を入力できます。
  • FAAのすべてのコンピューターがシャットダウンし、飛行機のすべての自動操縦コンピューターが機能しなくなったとしましょう。航空管制官は人であり、パイロットはまだ飛行機を飛ばすことができます。混雑した空港では毎分2機の飛行機を着陸させることができないかもしれませんが、飛行機はまだ飛んでいます。
  • Y2K問題の周りで使用される最大の恐怖戦術の1つは、「電力網の故障」です。どこかで問題が発生したとしましょう。電力網を管理および修理する有能な人々は何千人もいます。これらは、大規模なハリケーンや暴風雨などが発生するたびに電力網を元に戻すのと同じ人々です。また、電力網は魔法のようなものではないことに注意してください。パワーグリッドのしくみを読んで自分自身を教育してください。グリッドは、パッシブワイヤとトランスで構成されています。電子は2000年1月1日でもワイヤーを通って流れます。

終末論者の間では、2000年1月1日に、すべてのコンピューターが何らかの形で故障し(これはばかげている)、すべての人間も何らかの形で「故障」するという仮定があります。あなたがそれについて考えるならば、あなたはそれがどれほど真実でないかを見ることができます。私たちは皆、仕事のやり方を知っており、自分たちの生活を送りたいと思っています。2000年1月1日、私たちは皆同じになります。私たちは車に乗り込み、何かを買いに行きたいと思うでしょう。何かを売っている人々は、彼らがお金を稼ぐことができるように、それでもそれを売りたいと思うでしょう。それは決して変わることはありません。

リンク

  • 2000年問題-JPモルガン
  • 2000年情報センター