当前位置:首页 > 电脑网络 > 那些史上留名的软件 bug 们

那些史上留名的软件 bug 们

电脑网络2015-12-0841850

在现今数字年代,计算机bug不但困扰着每个程序员,更会无可避免影响我们的生活,小到每个人的衣食住行,大到国家经济,世界局势。随着我们的生活方式渐渐的数字化、互联网化,数字世界的找虫和杀虫就变得越来越重要。

软件史上有哪些著名的bug呢?让我们一起来回顾一下:

1、万“虫”之母,史上留名

软件史上第一虫 那些史上留名的软件 bug 们  电脑 技术 第1张

软件史上第一虫

1947年9月9日下午3点45分,格蕾丝·霍珀Grace Hopper在她的记录本上记下了史上第一个计算机Bug——在Harvard Mark II计算机里找到的一只飞蛾,她把飞蛾贴在日记本上,并写道”First actual case of bug being found”。这个发现奠定了Bug这个词在计算机世界的地位,变成无数苦逼程序员的噩梦。 从那以后,Bug这个词在计算机世界表示计算机程序中的错误或者疏漏,它们会使程序计算出莫名其妙的结果,甚至引起程序的崩溃。格蕾丝·霍珀是历史上最早一批程序员,而且还是个女程序员,服役于美国海军,官至准将。

这是流传最广的关于计算机Bug的故事,可是历史的真相是,Bug这个词早在发明家托马斯·爱迪生的年代就被广泛用于指机器的故障,这在爱迪生本人的1870年左右的笔记里面也能看得到。而电气电子工程师学会IEEE也将Bug这一词的引入归功于爱迪生。

2、千年虫,炒作的狂欢

1999年给了哗众取宠的杂志小报极好的题材 那些史上留名的软件 bug 们  电脑 技术 第2张

1999年给了哗众取宠的杂志小报极好的题材

在上个世纪,软件业者从来没想过他们的代码和产品会跨入新千年。因此,很多软件业者为了节省内存省略掉代表年份的前两位数字”19”,或者默认前两位为”19”。

而当日历越来越接近1999年12月31日时,人们越来越担心在千禧年的新年夜大家的电脑系统都会崩溃,因为系统日期会更新为1900年1月1日而不是2000年1月1日,这样可能意味着无数的灾难事件,甚至是世界末日。

到今天,我们可以调侃这个滑稽的故事,因为核导弹并没有自动发射,飞机也没有失控从天上掉下来,银行也没有把国家和用户的大笔存款弄丢。

千年虫Bug是真实的,全球花了上亿的美金用来升级系统。而且,也发生了一些小的事故:

在西班牙,停车场计费表坏了;法国气象局公布了19100年1月1日的天气预报;在澳洲,公共汽车验票系统崩溃。就这样而已。最后盘点的结果是软件公司赚了大钱,八卦小报销量大增,很多程序员的千禧年夜party泡汤了,几个中国文盲老太太被人骗了养老金,不可谓不严重。

3、宰赫兰导弹事件,毫秒的误差

在1991年2月的第一次海湾战争中,一枚伊拉克发射的飞毛腿导弹准确击中美国在沙地阿拉伯的宰赫兰基地,当场炸死28个美国士兵,炸伤100多人,造成美军海湾战争中唯一一次伤亡超过百人的损失。

在后来的调查中发现,由于一个简单的计算机bug,使基地的爱国者反导弹系统失效,未能在空中拦截飞毛腿导弹。当时,负责防卫该基地的爱国者反导弹系统已经连续工作了100个小时,每工作一个小时,系统内的时钟会有一个微小的毫秒级延迟,这就是这个失效悲剧的根源。爱国者反导弹系统的时钟寄存器设计为24位,因而时间的精度也只限于24位的精度。在长时间的工作后,这个微小的精度误差被渐渐放大。在工作了100小时后,系统时间的延迟是三分之一秒。

对一般人人来说,0.33秒是微不足道的。但是对一个需要跟踪并摧毁一枚空中飞弹的雷达系统来说,这是灾难性的——侯赛因飞毛腿导弹空速达4.2马赫(每秒1.5公里),这个”微不足道的”0.33秒相当于大约600米的误差。在宰赫兰导弹事件中,雷达在空中发现了导弹,但是由于时钟误差没有能够准确地跟踪它,因此基地的反导弹并没有发射。

宰赫兰导弹事件图解 那些史上留名的软件 bug 们  电脑 技术 第3张

宰赫兰导弹事件图解

4、公尺还是英尺?火星气候探测者号的星际迷航

火星气候探测者号在1997年发射,目的为研究火星气候,但是它没有能够达成这项花费3亿多美元的使命。

探测者号在太空中飞行几个月以后,由于导航错误,最终在火星大气层解体。探测器的控制团队使用英制单位来发送导航指令,而探测器的软件系统使用公制来读取指令。这一错误大大改变了导航控制的路径。最后探测器进入过低的火星轨道(大约100公里误差),在过大的火星大气压力和摩擦下解体。

公尺还是英尺?偏离100公里! 那些史上留名的软件 bug 们  电脑 技术 第4张

公尺还是英尺?偏离100公里!

阿丽亚娜5型运载火箭,昂贵的简单复制

程序员在编程时必须定义程序用到的变量,以及这些变量所需的计算机内存,这些内存用比特位定义。

一个16位的变量可以代表-32,768到32,767中间的值。而一个64位的变量可以代表−9,223,372,036,854,775,808到9,223,372,036,854,775,807中间的值。

1996年6月4日,阿丽亚娜5型运载火箭的首次发射点火后,火箭开始偏离路线,最终被逼引爆自毁,整个过程只有短短30秒。阿丽亚娜5型运载火箭基于前一代4型火箭开发。在4型火箭系统中,对一个水平速率的测量值使用了16位的变量及内存,因为在4型火箭系统中反复验证过,这一值不会超过16位的变量,而5型火箭的开发人员简单复制了这部分程序,而没有对新火箭进行数值的验证,结果发生了致命的数值溢出。发射后这个64位带小数点的变量被转换成16位不带小数点的变量,引发了一系列的错误,从而影响了火箭上所有的计算机和硬件,瘫痪了整个系统,因而不得不选择自毁,4亿美金变成一个巨大的烟花。

花费4亿美金的阿丽亚娜5型烟花,软件bug出品 那些史上留名的软件 bug 们  电脑 技术 第5张

花费4亿美金的阿丽亚娜5型烟花,软件bug出品


扫描二维码推送至手机访问。

版权声明:本文由海阔天空发布,如需转载请注明出处。

本文链接:https://www.apull.net/html/20151208173523.html

标签: 电脑技术
分享给朋友:

相关文章

开发者版本:你属于哪个版本的程序员?

开发者版本:你属于哪个版本的程序员?

【6月25日 CSDN 付江/编译】国外开发者博客中有一篇有趣的文章,将程序员按水平像软件版本号那样划分为不同的版本。相对于在招聘时分为初级,中级,高级程序员,直接表明需要某种语言N版本的程序员或许更方便直接。根据作者的观点,可将WEB开发者大致分为以下几个版本:Alpha:阅读过一些专业书籍,大多数能用Dreamweaver或者FrontPage帮朋友制作一些Web页面。但在他们熟练掌握HTML代码以前,你大概不会雇佣他们成为职业的WEB制作人员。Beta:已经比较擅长整...

无线网络加密的多种方法

无线网络加密的多种方法

你肯定不会设计一个没有防火墙的互联网接入的网络。因此,你怎么会架设一个没有加密的无线网络?理解无线加密对于部署一个安全的无线网络是非常重要的。无线传输的安全类似于一个书面信息。有各种各样的方法来发送一个书面信息。每一种方法都提供一种增强水平的安全和保护这个信息的完整性。你可以发送一张明信片,这样,这个信息对于看到它的每一个人都是公开的。你可以把这个信息放在信封里,防止有人随意看到它。如果你确实要保证只有收件人能够看到这个信息,你就需要给这个信息加密并且保证收件人知道这个信息的...

Clover 给Windows资源管理器添加多标签页功能

Clover 给Windows资源管理器添加多标签页功能

多选项卡的浏览器,多选项卡的Office(需要安装Office Tab Enterprise 9 )……Windows的资源管理是否也能实现多选项卡管理模式?答案是,可以的,只要你安装了Clover,你的Windows资源管理器即可实现多选项卡管理。Clover 是 Windows Explorer 资源管理器的一个扩展,为其增加 Tab 页功能。Clover 使您的电脑更加方便使用,让您的桌面从此整洁清楚,马上开始试用吧。Clover 没有...

保存360壁纸图片的简易方法

保存360壁纸图片的简易方法

360壁纸里有很多漂亮的桌面,使用自动更换壁纸功能很方便。但是他的缓存图片保存在很多个文件夹下面,想要收藏下来没吃都要挨个文件夹找图片,很不方面。这里写了个批处理,通过递归遍历查找子目录下的图片文件,把图片文件保存到指定的文件夹下。2012-12-23更新最近在使用中发现360壁纸中有些图片文件名称是一样的,复制的时候在原文件名后面加上了文件大小作为识别符号,毕竟名称一样,大小也一样的图片比较少见。把下面的代码复制到记事本,把相关路径修改成你电脑上对应的文件路径,保存成.ba...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。