技术的发展一方面提升了人们的生活水平,另一方面也隐藏下了极大的隐患。
例如在传统领域,一小撮人对公司的影响是极其微小的,而到了互联网领域,有时一两个人的失误就能把公司推入万劫不复之地。
这样的例子不胜枚举,今天就给大家盘点一下软件历史上这些著名的bug:
在上个世纪,开发员从来没想过他们的代码和产品会跨入新千年。
因此,很多开发员为了节省内存省略掉代表年份的前两位数字“19”。
而当日历越来越接近1999年12月31日时,人们越来越担心在千禧年的新年夜大家的电脑系统都会崩溃。
因为系统日期会更新为1900年1月1日而不是2000年1月1日,这样可能意味着无数的灾难事件,甚至是世界末日。
声势浩大的千年虫最终几乎没造成什么破坏,除了:
在西班牙,停车场计费表坏了;
法国气象局公布了19100年1月1日的天气预报;
在澳洲,公共汽车验票系统崩溃。
经过这个bug后,我们似乎有理由相信,不会再遇到下一个千年虫,或者万年虫?
在1991年2月的第一次海湾战争中,一枚伊拉克发射的飞毛腿导弹准确击中美国在沙地阿拉伯的宰赫兰基地。
当场炸死28个美国士兵,炸伤100多人,造成美军海湾战争中唯一一次伤亡超过百人的损失。
后来的一项调查发现,一个简单的电脑故障使基地的反导系统失效,并阻止它拦截空中导弹。
当时,负责保卫基地的反导系统已经连续工作了100个小时。
每工作一个小时,系统中的时钟就会出现微小的毫秒延迟,这就是这次故障悲剧的根源。
反导系统的时钟寄存器设计为24位,因此时间精度限制在24位。经过长时间的工作,这种微小的精度误差逐渐放大。工作100小时后,系统延时为1 / 3秒。
对于普通人来说,0.33秒是微不足道的。但是对于一个需要跟踪和摧毁机载导弹的雷达系统来说,这是灾难性的。
弹的速度为4.2马赫(1.5千米/秒),“极微小”的0.33秒相当于大约600米的误差。
在导弹的例子中,雷达探测到导弹在空中,但由于时钟误差没有准确地跟踪到它,基地的反导弹没有发射。
火星气候探测器于1997年发射,用于研究火星的气候,但未能完成这项耗资3亿多美元的任务。
在太空中待了几个月后,探险者号由于导航错误在火星大气层中解体了。
探测器的控制小组以英制单位发送导航指令,而探测器的软件系统以公制单位读取指令,此错误会显著更改导航控制路径。
该航天器最终进入了火星的低地球轨道(误差达到100公里),在火星大气的压力和摩擦下解体。
前苏联政府的报警系统错误的报出美国发射了五枚弹道导弹。
幸运的是苏联值勤员推断如果真的是美国政府袭击他们的话,发射的导弹肯定不止5枚,所以他推断这只是一场虚惊。
经挖掘真相为:前苏联软件的一个Bug,因阳光反射云顶,给出了错误的报警信息。
感谢苏联值勤员睿智的推断能力,否则碰到一个“缺心眼”,想想小心肝就一颤一颤的。
1992年5月,百事在菲律宾进行了一次促销活动。
该公司告诉客户,如果他们买了一瓶百事可乐,并在瓶盖的底部发现了349号,那么,他们可以赢得100万比索(约等于100万美元)。
不幸的是, 由于软件的错误,80万个瓶盖都被错刷成了349,相当于要多支付420亿美元的奖金。
这导致一些人将百事公司告上法庭,控诉其支付奖金,而最终百事公司支付了数百万美元的赔偿金,但也使得公司损失惨重。
bug是互联网公司避之不及的事情,但如同墨菲法则一样,该发生的自然会发生。但凡是互联网公司没有经历过bug,是不可能的。
应对bug,要有预案和不定期演练,就像消防练习一样。不发生是好事,而一旦发生,必定会是一次大考。
怎样能做到泰山崩于前而面不改色心不跳,迅速制定出合理有效的解决方案,是衡量公司负责人是否称职的一项标准。