1947 年 9 月 9 日下午 3:45,一位美国计算机科学家、美国海军少将在 Mark II 计算机日志中记录了第一个计算机错误。 “第一个发现错误的实际案例,”她写道。
在这方面不犯任何错误可能很困难,但幸运的是,并非所有错误都那么昂贵。在此摘要列表中,我收集了一些一直引起我注意的错误。
1、阿里安五号运载火箭爆炸事件
1996年6月4日,欧洲航天局(ESA)发射的阿丽亚娜5(5)运载火箭在法属圭亚那库鲁发射场发射后仅40秒就发生爆炸。经过十年研发,耗资80亿美元,火箭首飞,但这个bug的结果导致了3.7亿美元的损失。
首次飞行失败的原因是整数溢出,这是计算机编程中的常见错误。在这种情况下,有人试图在 16 位空间中设置一个 64 位数字。
2. 不小心向某人支付了 92 千万亿美元
当他的电子邮件声明被打开时,宾夕法尼亚州公共关系主管的账户余额显示为 92,233,720,368,547,800 美元。
在 64 位世界中,这个数字太大并且表明存在编程错误。幸运的是,错误很快就被发现了,当他再次登录时,他的账户已经被重置为零。
主动向所选择的事业捐款,金额不详。
3.计算器错误
大多数版本(10 除外)中都存在此错误,包括 XP、7 和 8。如果您有这些版本之一,那么您可以在操作系统中找到此错误。
步骤: 打开计算器。输入 4,开平方,得到 2。然后再减去 2。这时候你会在不同的版本中看到不同的结果而不是0。
此错误的原因是计算器管理 sqrt 运算的方式。结果将保存为浮点数而不是整数,浮点计算时存在精度错误,这就是您可以看到的结果。
计算器应用程序中存在一个错误,并在 10 中得到修复。
4. 公制和 NASA 的火星气候轨道飞行器
火星气候探测器(The Mars)耗资1.25亿美元,是一个重338公斤的太空机器人,于1998年12月11日发射升空。它用于研究火星的大气和气候,并在火星探测98计划中( Mars '98) 作为火星极地着陆器 (Mars '98) 的通信中继站。
当火星气候轨道器即将进入火星轨道时,通讯中断,它以错误的角度进入火星大气层,而不是进入火星轨道。原因是喷气推进实验室(JPL)的导航团队在计算中使用公制,但由于丹佛洛克希德·马丁公司(JPL)提供的关键加速度数据使用英制,因此产生了不同的测量单位。冲突。
5、奔腾浮点除法错误造成4.75亿美元损失
该错误是由一位数学教授于 1994 年发现的。该错误是影响第一代处理器的浮点运算单元的硬件错误。由于此错误,处理器在进行浮点除法时可能会返回不正确的二进制浮点结果。此故障归因于浮点除法电路使用的查找表中缺少条目。
并非所有处理器都存在问题,但检测到了大约 500 万个有缺陷的芯片,如果客户能够证明他们受到有缺陷芯片的影响,该公司最初会接受更换芯片的请求。
然而,该公司后来为所有提出投诉的客户更换了芯片,最终导致该公司损失了 4.75 亿美元。
6.千年虫 (1999)
![]()
Y2K 或 2000 年问题是指与从 2000 年开始的日历数据的存储和格式化相关的事件。由于许多程序仅使用最后两位数来表示四位数年份,因此会出现问题,因此 2000 年与1900年没有什么区别。
例如,它会影响每天计算利率的银行、核电站、医院、交通中心等。为了解决这个问题,世界各地花费了数十亿美元来升级计算机系统。
7. 2038 年问题
2038 年问题是由 32 位处理器和 32 位系统的限制引起的。
基本上,当 2038 年 3 月 19 日格林尼治标准时间 03:14:07 到达时,仍在使用 32 位系统来管理日期和时间的计算机将无法处理该更改。与 Y2K 类似,计算机将无法区分 2038 年和 1970 年之间的差异。
然而,现在台式计算机中几乎所有现代处理器都是 64 位系统并运行 64 位软件。很难说 2038 年 32 位系统是否还会存在。
8.爱国者导弹失败(1991)
1991年2月25日,海湾战争期间,沙特阿拉伯的爱国者导弹发射装置未能跟踪和拦截来袭的伊拉克飞毛腿导弹。一枚飞毛腿导弹击中美国陆军军营,造成 28 名士兵死亡,约 100 人受伤。
该问题是由于计算机运算错误导致启动后时间计算不准确。准确地说,是将系统内部时钟测量的时间(十分之一秒)乘以 1/10,返回以秒为单位的时间。结果它计算的时间是错误的,导弹因此无法拦截伊拉克的飞毛腿导弹。攻击。这也是系统舍入错误。
9.《江南》MV大受欢迎
计数器以前使用 32 位整数,这是计算机体系结构中用来表示数据的单位。这个 32 位整数决定了它可以计算的最大可能点击率,2,147,483,647。
“江南”视频点击率超过了最大值,我们得到了著名的“江南”Bug。
视频计数器目前使用 64 位整数,这意味着视频观看者的最大数量为 9.22 万亿。
10. 98演示中的BSOD
BSOD,即蓝屏死机,是系统发生致命系统错误后显示的蓝色错误屏幕。表明系统已经崩溃,操作系统处于无法可靠运行的状态。这是由一些不同的问题引起的,例如关键进程的意外终止或一般的硬件故障。
在98或95中,当系统尝试访问硬盘上的文件c:\aux\aux或c:\con\con时,会出现蓝屏死机。
直到2000年3月16日,才发布了安全更新来解决这个问题。
综上所述
我相信,当你读完这篇文章后,如果以后再犯错误,你也不会感到那么难受。我们是人,有时也会犯错误。但要小心!即使是简单的一行拼写错误的代码也可能造成数亿美元的损失。
关于作者:
Kesk -*-,软件工程师、软件爱好者、科幻作家。
原文链接: