2000年まであと1ヶ月をきりました。(この文章は2000年以前に書いたものなので、2000年を越して読まれた方はごめんなさい。)
- いま、現実問題として話題になっているコンピューター2000年問題。
- 私自身、そんなに実感が湧かない(おいおい)ので、先週の土曜日(12/4)、
- NHKで夜9時から放映されていた『サイエンス・アイ』という番組を見ました。
- まだコンピューターが発達しだしてから50年あまり…。
- いままで人間が出現してからの長い歴史をみると、50年なんてほんの一部分でしかありません。
- コンピューターができ始めた当初は、メモリー等がものすごく高くて、『いかに効率よくメモリーを使うか?』ということに重点が置かれていました。
- そこで西暦の4桁のうちの上2桁を『19』と暗黙の了解にして、下2桁だけを入出力してきました。
- ということで、2000年になったら、コンピューターは1900年と間違えて考えちゃう。それが2000年問題です。
- 日付が狂うと、休みの日がこんがらがっちゃう。そして、工場とかの受注から家電製品までパニックを起こします。
- 銀行や郵便局の残高とかも1900年で考えるので、下手すると預金が0円になっちゃう。
-
- 今までののコンピュータープログラムをどう直すか?というと、修正方法はかなり簡単です。
- 1974年以前のプログラムはほとんどないので、それ以前の2桁は2000年台とみなし、
- 1975年以後のプログラムは1900年台とみなすプログラムを作るだけでOKです。
- 例えばC言語で表すと下のようになります。
-
- int suji; …1.変数sujiの定義(intは整数という意味です。)
- printf("2桁の数字を入力してください。\n"); …2.printfはメッセージを出力してください、という意味です。
- scanf("%d"&suji); …3.数字(suji)を読み込みます。(scanfは読み込みの指示)
- if(suji<=74)
…4.もしsujiが74以下なら、
- {suji+=2000;}
…5.sujiに2000をたしてください。
- else
…6.そうでなかったら(75以上だったら)
- {suji+=1900;}
…7.sujiに1900をたしてください。
- printf("%d",suji);
…8.sujiの出力
-
- 1〜3行目と8行目は、初めから定義されているものや便宜上のプログラムなので別にいりません。
- ここで、今までのプログラムは4〜7行目がsuji+=1900;という7行目しか書かれていませんでした。
- (suji+=1900というプログラムはsuji=suji+1900という意味で、『右辺のsuji+1900を、左辺のsujiに代入してください』という意味です。)
- もっと簡単にいうと、4〜7行目を西暦を示している部分に挿入するだけで、2000年問題はとりあえず解決です。
- 今のところほとんど、このようなプログラム形式をとっているようです。
- ただ、このプログラムをみてのとおり2075年になると、もっと厄介な問題が出てきます。
- どう処理をすればいいのか?というと今のところ対策なし…。
- その頃の私は100歳の大台を越えるかどうかという年齢だし、そうなった私をあまり考えたくないです(笑)。
- このプログラムは一見簡単そうです。しかしどこが西暦を示しているプログラムか?っていうのを探すのは大変大変。
- プログラムにもよりますが、だいたい1つの大きなプログラムは30万行にも及ぶといわれています。
- それに、変数(sujiとか、seirekiとか…)が分かりやすい文字で書かれていないものがほとんどらしいです。
- C言語に関しても変数をd1とかs1とか、プログラム作成者が好きなように設定できるので、それを見つけるのは大変大変。
-
- なぜ、この際に西暦2桁表示から4桁表示にしないか?というと、今の技術でははっきり言って不可能ではないはずです。
- それをしない理由は主に3つあります。(まだあるかも…)
-
- まずひとつ。コンピューターはすべて2進数計算をするので、10進数の99は2進数で(1100011)で7桁、
- 10進数の9999は(10011100001111)14桁です。(10進数→2進数変換の仕方は省略しますね。)
- 見てのとおり、10進数だったら1桁しか違わないのに、2進数だったら7桁違う…つまりメモリーが2倍必要となります。
- なぜ、コンピューター内で2進数計算しかしないの?っていうと、
- コンピューターってすべてそこに電源が入ってるか(ON→1)、入っていないか(OFF→0)で表してるからです。
- そのON,OFFを示すのが1bit、1byte=8bitですから、ハードディスクが6.4GBとかいうと、64億Byte=>512億個もの
- ON、OFFの組み合わせで構成されています。(ちなみに空いているところはすべてOFFです。)すごいですねー。
- なんかわき道にそれちゃいましたけど、4桁表示をすると2桁表示よりメモリーのお金が2倍いります。
- といった理由で、経費節減が叫ばれている現在は2桁表示をするようです。
-
- 2つ目の理由は、CPUの問題。4桁計算をさせると、2桁計算より演算時間がかかります。
- 1つ1つの計算はものすごく短いのですが、ちりも積もれば山となる…。
- たった、100年に一度の問題なのにそこまでする必要があるのか?って言われると…うーん。という感じです。
- 土曜のテレビでは、入力するとき上2桁の「20」まで押さなきゃいけない、そして出力も「20」を印字するスペースが無駄。
- とかおっしゃっていましたが、入力はマクロ定義とかで「20」を押さなくても、コンピューターに暗黙的に「20」対応するように作れますし、
- 印字も上2桁を省略するように簡単にできるので別に関係ないんじゃない?って思いましたが…。
- あれ?そしたら計算もそういうふうにできるんじゃないかな???(あまり私は知識ないのでよく分かりませんが…)
-
- 最後の理由は、まだ企業間でネットワークの標準化(統一)があまりなされていないこと。
- 4桁対応できるところもあれば、2桁対応しかできないところもある。
- 出力方式も入力方式も全く違う…といったような感じです。
- 現在、国際的にはEDI(電子データ交換)という、
- 「企業間のデータ交換において、人手を全く介さないで、コンピューター同士がネットワークを通じて、
- 各種のデータ交換を行う」取り決めがなされようとしています。
- 日本でもCI I
がその標準化としてなされようとしています。
- 大企業においてはどんどん統一化がされていますが、中小企業においてはコスト面の関係もあってまだまだです。
- でも近いうちに完全に統一されたOSとか出るかもしれませんね。
-
- とにかく無事に2000年を送れますように!
|