千禧虫危机
1999年,全世界的程序员都在为一个看似简单的问题焦头烂额:年份只用两位数字存储。当2000年到来时,系统会将'00'识别为1900年,导致银行、航空、电力等关键系统可能崩溃。最终,经过数十亿美元的投入和无数程序员的通宵奋战...
阅读全文 →
NASA的火星气候探测者号
1999年,NASA价值1.25亿美元的火星气候探测者号在接近火星时神秘失踪。调查发现,导航软件在计算推进器力度时,一个团队使用英制单位(磅力),另一个团队使用公制单位(牛顿),却没有进行转换。这个单位换算错误导致探测器以错误的角度进入火星大气层...
阅读全文 →
空指针的代价
1965年,计算机科学家Tony Hoare在设计ALGOL W语言时引入了空引用(null reference)的概念。他后来称这个决定为"十亿美元的错误"。几十年来,空指针异常(NullPointerException)导致了无数系统崩溃、数据丢失和安全漏洞...
阅读全文 →
Therac-25放射过量事故
1985年至1987年间,加拿大AECL公司生产的Therac-25放射治疗设备因软件缺陷导致至少6名患者接受了致命剂量的辐射。这个软件bug是由竞态条件引起的:当操作员快速修改治疗参数时,系统会进入不安全状态,给出远超安全剂量的辐射...
阅读全文 →