本ブログは2009年4月21日で終了しました。
今後はアイビースターでブログを運営していますので
そちらをご覧ください。
Posted by Hibi at 09:23
少々大げさなタイトルをつけてしまいましたが、実際否定できないような状態になるかもしれません。

今から31年後はどういう世界になっているのでしょうか?
  • タイムマシーンが存在している。
  • 車が空を飛んでいる。
  • ドラえもんやアトムが日常にいる。
などといろいろな発想が出てきます。実際にはそこまでいくことはないと思いますが、今よりも進歩しているのは間違いないでしょう。

では、なぜこのようなタイトルをつけたのかというと、今から31年後は何なんになるでしょうか?
  2007年+31年=2038年
この2038年と聞いて「ピン!」と来る方もいれば、「何それ?」という方もいることでしょう。

実は2038年になるとあらゆるコンピュータが動作しなくなるか、誤動作を起こす可能性があるのです。一般的に2038年問題といわれています。

この理由はコンピュータが動いているのはハードウェア以外にソフトウェアも動いています。このソフトウェアは今の世の中ではC言語というプログラムを多く使用しています。たとえば皆さんが使用しているWindowsもC言語がベースで動いています(正確にはC++の方がいいかな?)。

このC言語は32ビットの符号付整数を使用しているのです。32ビットの符号付整数とはどういう数字化というと、コンピュータは0と1の集合で動いていることは知っているかと思うのですが、下記のような0と1を32こ並べて数字にすると2147483647という数字になります。
 01111111111111111111111111111111

試しにWindowsが標準で持っている計算機で計算すると同じ結果になります。やり方は電卓を起動した後、メニューの[表示]-[関数電卓]を選択し、さらにメニューの[表示]-[2進(B)]を選択します。そして、実際に上記の0と1を入力します(先頭の0は表示されません)。入力後、メニューの[表示]-[10進(D)]を選択すると2147483647が表示されたはずです。これが上記の数字の結果になります。

ちなみに上記の0と1の羅列の先頭は符号文字になるので0の場合はプラス(+)、1の場合はマイナス(-)を意味します。

実はこのC言語は1970年1月1日午前0時から時間を計算しているのですが、この時間から2147483647秒後が2038年1月19日3時14分7秒(世界標準時、日本時間では同日12時14分7秒)になるわけです。C言語はそれ以上の計算を行うとマイナスとなってしまい1970年1月1日午前0時から時間をさかのぼってしまうわけです。

そうするとコンピュータはどうなるかというと先にも書いたとおり正常な動作ができなくなって停止、もしくは誤動作を起こしてしまうわけです。

今から31年後といえばコンピュータがフル活用している時代だということは予想できますから、日本を始め世界各国は止まってしまうわけです。

ただ、こうやって長々と書きましたが、既にこの問題はわかっていることで64ビット対策にするなどの各エンジニアは対策を考えています。また、今から生まれてくる赤ちゃんがきっと考えてくれるでしょう。だって今日、生まれた赤ちゃんが31年後には31歳のバリバリエンジニアですからね。

同じカテゴリー(OS)の記事
WindowsとOfficeの歴史
WindowsとOfficeの歴史(2007-01-16 10:00)

 
Category is OS.
<%PingExcerpt%>
<%PingBlogName%> at <%PingDateTime%>
削除
31年後に世界は止まる!?