一、迪斯尼的狮子王,1994-1995
1994年秋天,迪斯尼公司发布了第一个面向儿童的多媒体光盘游戏—狮子王动画故事书。尽管已经有许多其他公司再儿童游戏市场上运作多年,但是这次是迪斯尼公司首次进军这个市场,所以进行了大量促销宣传。结果,销售额非常可观,该游戏成为孩子们那年节假日的“必买游戏”。然而后来却飞来横祸。12月26日,圣诞节的后一天,迪斯尼公司的客户支持电话开始响个不停。很快,电话支持技术员们就淹没在来自于愤怒的家长并伴随着玩不成游戏的孩子们哭叫的电话之中。报纸和电视新闻进行了大量的报道。
后来证实,迪斯尼公司未能对市面上投入的许多不同类型的PC机型进行广泛的测试,软件啊在极少数系统中工作正常(迪斯尼程序开发游戏的新系统),但在大多数公众使用的系统中却不能运行。
二、爱国者导弹防御系统,1991
美国爱国者导弹防御系统是里根总统提出的战略防御计划(即星球大战计划)的缩略版本,它首次应用在海湾战争中对抗伊拉克飞毛腿导弹的防御战中。尽管对此系统赞誉的报道不绝于耳,但是它确实在对抗几枚导弹中失利,包括一次在很小的计时错误积累起来到14小时后,跟踪系统不再准确。在多哈的这次袭击中,系统已经运行了100多个小时。
三、千年虫,大约1974
在计算机初期,由于技术限制和昂贵的存储成本,程序员们在编写代码时必须精打细算每一个字符。为了节省内存,有位名为格雷斯霍珀的女性程序员巧妙地提出了用6位数表示时间的方法,例如将1989年10月1日简写为891001。然而,正是这一看似巧妙的解决方案,为后来的混乱埋下了伏笔。
霍珀所发明的6位数时间记录法,因其简单且内存节省的特性,被广泛采纳。然而,这种方法的广泛应用也为千年虫的潜伏提供了契机。当千禧年到来时,这种时间记录法的缺陷终于暴露无遗。由于年份的前两位被抹去(例如,1989年简写为89),计算机在进入21世纪时无法正确识别时间,导致时间回退的现象。具体来说,2000年时,计算机误以为当前仍是1900年,从而引发时间混乱。
时间流转至20世纪90年代,随着计算机的日益普及,越来越多的人开始认识到千年虫问题的紧迫性。特别是在1999年,由于计算机的误判,三大日子相继出现大规模的bug,这无疑给人们敲响了警钟,预示着千年虫的影响可能比预想的更为严重。
当时,虽然计算机尚未广泛普及至普通家庭,但在银行、证券、股票交易、工厂、机场、发电站等关键领域,计算机已经深度渗透,且这些地方几乎都潜藏着千年虫的威胁。这些领域无一不关系到人类的生存与发展。
一旦千年虫爆发,后果将不堪设想。银行账户可能被清零,交通秩序将陷入混乱,电力和水利系统可能面临瘫痪,飞机航线可能会消失。最令人恐惧的是,核电站可能面临核弹爆炸般的危机,直接经济损失可能高达1.6万亿元。
这种恐慌情绪迅速在全球蔓延,人们纷纷从银行提取现金,抢购食物和生活用品,甚至有人开始寻找附近的防空洞,仿佛世界末日即将来临。
程序员们采用了windowing修复法来应对千年虫,然而这种方法并未从根本上解决问题,仅仅是将千年虫的爆发时间推迟了二十年。因此,在2020年,除了新冠疫情这一大挑战外,千年虫这一老问题也再次浮出水面。
幸运的是,人们在过去的二十年里并未忘记千年虫,已经做好了充分的准备。所以,尽管千年虫再次出现,但并未造成重大损失,当年人们对它的感知也相对较小。
除了6位数时间表达法导致的明显Bug外,还有一种更为隐蔽的问题——2038年问题。这种问题是如何产生的呢?了解计算机的朋友都知道,计算机的计时基准是1970年1月1日。我们的电脑内部时间就是以此为起点,统计从那时起到现在的秒数。
在过去,32位操作系统是主流,其时间表达极限是2147483647(第一位是符号位),换算成时间就是2038年01月19日03时14分07秒。这意味着,当时间超过这个极限时,电脑就可能无法正确处理时间数据,从而引发各种问题。
为了解决2038年问题,我们扩展了Unix时间长度,采用64位来表示时间,从而能够支持到292,277,026,596年12月4日15时30分08秒。然而,那个时间点对于人类文明而言可能已经不复存在。