标记你的日历!特此宣布9月9日为调试日。50多年来,人们一直把它与清除臭虫联系在一起,但很少正式庆祝。所以,让我们开始今年的传统。
这一切都始于1947年哈佛大学马克二世技术团队的日志记录。现在已经成为经典的条目是用胶带粘在页面上的一只飞蛾,时间戳是15:45,标题是“接力赛中70号小组F(飞蛾)”和自豪的自夸,“第一个发现bug的实际案例。”
飞蛾贴在计算机日志
OK,计算机错误的历史并没有真正开始在此日期(见“蛾机器”对于真实的故事),但尽管如此,它似乎周年一个完美的时间来检查机器著名的错误和其他鬼。
这里是一个高度选择性的——因此是不完整的——臭名昭著的软件错误的集合。与传递过程中相对温和的飞蛾故事不同,一些虫子给世界带来了灾难、尴尬和破坏。有些人甚至杀人。
不要指望这个集合包含的故事死亡之Ping如 - 黑客和恶意软件开发或其它故障2008年西班牙航空公司坠毁或中央情报局的可能杜撰的故事破坏苏联的天然气管道。它也将包括由程序员故意决策,回来以后困扰着他们,与Y2K。
取而代之的是,这个故事是关于他们自己的权利而引起故障的关键完全编程错误。
我错过了什么重要的东西?考虑提名的有史以来最大的错误这一个电话。这是我的建议;如果您有任何荣誉奖,让他们在。最糟糕的任何人都可以做的是特警他们。
空间臭虫
那些让备受瞩目的太空探索任务脱轨的编程错误——尤其是那些导致重大爆炸的程序错误——对于那些让这些错误溜走的人来说,是可怕的、昂贵的,而且是职业生涯上致命的尴尬。它们为我们提供了非常生动的提醒,提醒我们检查和再检查每一行代码。
火星气候轨道不轨道
早在物理课上,我们的老师是一跃由许多遍的答案。如果答案是2.5,就应该把自己的红色钢笔写字“2.5什么?周?小狗?记过?”并继续以纪念答案错误。
当时,我们以为他们只是为迂腐。但是,它是可以在几分钟内燃烧了$ 327.6万美元的项目错误的类型。它确实在1998年,当火星气候轨道美国宇航局喷气推进实验室建成走近这颗红色星球在错误的角度。在这一点上,它可以很容易被改名为火星气候亮光在高层大气,以及不久之后改名为火星气候碎片漂流在天空。
这个航天器有几个问题——它不均匀的载荷使它在飞行中产生扭矩,它的项目经理在任务的几个阶段忽略了一些重要的细节。但最大的问题是工程团队的不同部分在使用不同的测量单位。一组对的磅力秒英制单位测定的推进器工作;其他使用度量牛顿秒。和谁签号码没有使用红色笔像一个迂腐的高中老师。
其结果是:推进器4.45分别倍更强大比他们应有的水平。如果这个穿帮已经发现较早,它可能得到补偿,但它不是,且注意力不集中的结果,现在失去了在太空中,可能在片。
水手1号的五分钟的飞行
1962年7月22日,美国宇航局的水手号计划的第一艘宇宙飞船升空的使命金星飞行。助推器他的工作的,走的是飞船从卡纳维拉尔角启动板,但几分钟后,水手1号开始当然偏航关闭。该制导系统未能正确轨迹,并引导指令未能进行手动校正。
当火箭转向北大西洋航线时,靶场安全官做了他唯一能做的事:把它炸飞。执行任务4分55秒后,“水手1号”发生爆炸。
NASA已经患人造卫星羡慕和水手我事件是该机构另一个国际尴尬。这次崩溃的事后透露什么NASA描述为“阿特拉斯飞机无线电信标设备无法正常工作” - 虽然后来它出来,通过工程师一个标点符号的mistranscription引起了代表团的致命软件错误。
在他1968年的书空的承诺,阿瑟·克拉克描述的使命是“在历史上最昂贵的连字符失事。”
这可能不是严格准确。虽然NASA没有提到在一些连字符的事件的报道,看来,该机构被简化了的故事非技术人员。
更广泛接受的说法是标点符号是A标栏在半径符号,手写在笔记本上。在火箭科学,上面的横杠表示一个平滑功能的,所以公式应该计算出的半径的时间导数的平滑值。
如果没有平滑功能,即使速度的微小变化将触发纠正助推器在踢。汽车驾驶相当于将猛拉方向盘在视觉的驾驶员视野每一个障碍的方向相反。
但很少有人知道的横线是什么,因为它看起来像一个连字符,这是大多数人是如何讲故事。
蛾机器:调试“错误”的来历
这是一个经常被重复的故事,军事计算机大夫人、计算机科学家和美国海军少将格蕾丝·霍珀在哈佛大学马克二世计算器发生的一次事故后创造了bug和调试一词。
故事是这样的:
在1945年9月9日,哈佛的技术团队看着F组,发现点之间有某种异常继电器70是只飞蛾,他们及时清除,并在日志录音。格雷斯料斗加入标题,“错误的第一个实际情况下被人发现,”这是第一次有人用这个词的错误描述计算机故障。当然,术语调试紧随其后。
是的,这是一个经常重复的故事,但它有它更多的错误比继电器70过。
一方面,哈佛的Mark II线了夏天的1947年,两年后的日期归因于这个故事。另一件事,你不要使用类似“错误的第一个实际情况下被人发现”,如果术语错误是不是已经在普遍使用的线路。注释无厘头在这方面,除了工程师幽默的例子。虽然料斗经常谈到继电器蛾,她并没有使发现或日志条目。
这个故事的核心事实是真实的——包括9月9日的日期和时间是15点45分——但bug这个单词的意思并不是这样进入词典的。在继电器中飞蛾事件发生前的一个多世纪里,发明家和工程师一直在谈论bug。甚至托马斯·爱迪生也用过这个词。这是1878年他写给Theodore Puskas的一封信的节选,引用在耶鲁大学语录大全(2006年):
这些小错误和困难被称为“小毛病”,它们会出现,在达到商业成功或失败之前,需要数月的密切关注、研究和劳动。
字书呆子跟踪字错误一个老期限为一个怪物 - 那就是像鬼怪和怪物晦涩的术语和在字恶巫一个错位的形式生存了一个字。像机械小鬼,系统漏洞是恶意的。任何人谁花时间试图让所有的故障了系统知道那是什么感觉:调试的几个小时后,仍然存在的任何问题都是式神,嘲讽试图摆脱他们与恶魔高兴。
这就是术语错误的真正起源。但在继电器蛾的故事值得复述反正。
四十秒的阿丽亚娜-5
欧洲航天局(ESA)也遭遇了软件方面的尴尬。其第五代阿丽亚娜的首飞发射击败美国宇航局的水手1的比分为无人飞船灾难:爆炸只花了40秒。
1996年6月4日,那种剧烈的垂直升空后,你会从高调欧洲汽车预计,在地面上的相机几乎没有时间专注于阿丽亚娜5号,因为它转头开始土崩瓦解,前它完全爆炸。
阿丽亚娜501航班的灾难始于起飞30秒后失去导航和姿态信息。一旦它完全偏离轨道,它就会自动自毁。
问题是阿丽亚娜5的惯性参考系统处理的64位浮点数据,并转换成16位带符号整数的值。数据转换的结果是一个16位有符号整数,它引起了硬件算术溢出太大。在欧空局的情况下,可能涉及该问题的软件处理程序已被禁用,因此没有堤防大坝的系统故障导致的破坏级联。
坏-PR的bug
有些错误是嘈杂的:它们会导致破坏机器爆炸。其他人则在他们的破坏性微妙:他们造成严重的尴尬,轮流公司的好名字,以‘泥’,有时威胁底线。
奔腾芯片在数学上失败了
1994年,整个cpu系列被市场领跑英特尔根本无法做他们的数学。奔腾浮点缺陷保证,无论你使用什么软件,你的结果经受住了不准确过去第八小数点的机会。该问题在有故障的数学协处理器布置,也称为一个浮点单元。其结果是在铁杆计算微小错误的可能性很小,但它是一个昂贵的公关崩溃了英特尔。
第一代奔腾怎么会出问题呢?英特尔值得称赞的想法是,抛弃前一代486处理器笨重的移位-减法算法,代之以奔腾处理器中的查找表方法,从而使浮点运算的执行速度提高了两倍。到目前为止,我很聪明。查询表由1066个表项组成,下载到芯片的可编程逻辑数组中。但是只有1061个条目进入了第一代奔腾系统;有五个人在路上迷路了。
当浮点单元访问的任何空细胞,它会得到一个零响应,而不是真正的答案。从一个小区零响应实际上并没有回零一个答案:一些晦涩难懂的计算通常返回稍许误差周围十十进制数字,因此通过质量控制和投入生产通过了错误。
那是什么意思上篮用户?不多。有了这种错误的,有一个1英寸-360十亿的机会,判断错误高达小数点后4位。更有可能的是,用1至9十亿对抗的赔率,是任何错误将在9日或10日十进制数字发生。
更多的数学错误
英特尔的奔腾漏洞并不是唯一一个造成公关灾难的数学相关漏洞。这两个有微软高管们脸红了:
Windows计算器3。x: 1994年,CALC.EXE的一个bug曝光了,这个bug从Windows 3开始就一直在暗中传播。《x》首次出现于1990年。Propellerheads在Windows Calculator中从2.11减去2.1,得到的答案不是0.01,而是0.00。
Excel 2007:让人们用计算器或计算尺乘850×77.1,他们会回答65,535。但在2007年9月,人们发现Excel 2007回答了10万。根据微软的说法,这种奇怪的汇总只出现在65,535或65,536的计算中。更重要的是,Excel中实际计算的正确答案但一个bug从正常显示阻止它。
不过,如果你不知道吗?名叫托马斯弗吉尼亚州的数学教授奈斯利需要的精度水平,发现他没有得到它,想通了,为什么。
1994年10月,他提醒英特尔,然后其他人,来解决这个问题。英特尔则以略微不那么圆滑的回应回应道:“哦,那东西?是的,我们在六月份就注意到了。”
这样一来,就不可避免地滑向了公关的地狱和昂贵的清理账单。1995年1月,英特尔宣布对其盈利收取4.75亿美元的税前费用,其中大部分显然来自更换有缺陷的处理器。
本次算术混乱的底线是这样的:在查找表和金钱计算,1 066 - 5 = - $ 47500万。不管你如何看待它,这是很糟糕的数学。
呼叫等待...等待...等待和
1990年1月15日,约60,000 AT&T长途客户试图拨打长途电话将像往常一样 - 并没有什么。在幕后,该公司的4ESS长途交换机,所有的人都114,在顺序保存重启。AT&T认为它是被黑客攻击,以及9小时,公司和执法部门试图找出发生了什么事。最后,AT&T发现罪魁祸首:在其新的软件一个不起眼的故障。
这里的开关是如何工作:如果一个开关被堵塞,它发出了一个“请勿打扰”的消息到下一个开关,拿起它的访问流量。第二开关重置本身从干扰第一开关保持。开关2个检查重新打开1,如果它检测到活动,它的另一个复位,以反映开关1重新联机。到目前为止,就这么简单。