历史上最严重的10个编程错误

在其传奇的过去,编码也造成了破坏。一些糟糕代码的实例在很大程度上造成了灾难。以下是10个历史上最严重的编程错误。...

代码几乎无处不在。现代计算机的出现是在20世纪40年代。在其丰富的历史中,编程使人们能够更好地交流,并导致了许多行业的进步。从太空旅行到电信和医疗保健的一切都被代码彻底改变和影响。

worst-programming-errors-featured

另外,编程可以给我们上宝贵的人生课。然而,在其传奇的过去,编码也造成了破坏。一些糟糕代码的实例在很大程度上造成了灾难。以下是10个历史上最严重的编程错误。

1千年虫

2000年的错误,又名千年虫或千年虫,是一个编码问题,预计将导致计算机混乱。在90年代,大多数计算机程序都以缩写形式列出了四位数的年份。所以1990年读90年,1991年写91年,等等。通过将四位数的年份缩短为两位数,编码员因此节省了宝贵的内存。但计算机无法将2000年简单地识别为00年。使问题进一步恶化的是,2000年是闰年。某些软件应用程序没有考虑到额外的一天。

许多人担心千年虫可能会使全世界的电脑和电子设备瘫痪。我记得我的第一个DVD播放机有一个闪亮的“Y2K兼容”标签。虽然2000年从软件方面来说相当平淡无奇,但更新整个行业的计算机和应用程序大约需要3000亿美元。计算机没有崩溃。生活照常进行。但不是没有大量的金钱和工作,根据Slate的报告,这可能是一种浪费。

为什么这是最严重的编程错误之一:2000年的恐慌代价极高,高达3000亿美元。另外,资源被重新定向以解决这个潜在的问题。

2心血虫

heartbleed-bug

Heartbleed Bug出现在OpenSSL库中,是一个危险的安全漏洞。传输层安全(TLS)协议采用OpenSSL加密库。由于它在TLS中的广泛应用,心血传播很快。这个错误允许互联网上的任何人读取运行受影响的OpenSSL迭代的机器上的内存。最多可读取64 kb的系统内存。虽然Heartbleed Bug在2014年向公众披露,但它在2012年推出。

由于TLS heartbeat扩展中缺少边界检查而导致错误的输入验证不正确。由于它是心跳扩展中的一个bug,因此产生了Heartbleed这个名字。《注册报》2014年的一篇文章报道,1.5%最流行的TLS支持站点仍然容易受到Heartbleed bug的攻击。然而,除了OpenSSL之外的TLS实现没有受到影响。因此,Windows版本的TLS和Mozilla的网络安全服务不受Heartbleed Bug的影响。一个修补程序最终修复了OpenSSL版本1.0.1g的问题。通过添加边界检查来防止缓冲区过度读取,Heartbleed Bug被成功修补。

为什么这是最严重的编程错误之一:Heartbleed Bug造成了重大的安全威胁。从启动到修补之间的时间让受影响的系统易受攻击达数年之久。任何时候出现计算机漏洞问题,都会造成巨大的数据安全隐患。

三。魔兽世界病毒太夸张了

WoW-Corrupted-Blood

魔兽世界曾经遭受过一种不同类型的计算机病毒。2005年,一场数字瘟疫渗透到了一些游戏服务器。成千上万的人物都成了血病毒的牺牲品。哇开发者暴雪介绍了哈卡,血之神。相当多的敌人用败坏的血液感染了人物。虽然血液感染最初是为了折磨靠近哈卡身体的玩家,但玩家与玩家之间的转移发生在了王国之外。这种无意中传播游戏中宠物产生的血液病毒的手段。此外,非玩家字符(NPC)成为载体。

阿克蒙德成为第一个被感染的服务器。低级角色瞬间死亡。即使是强大的人物也不会持续太久。虽然一个编码故障通过npc和pets使病毒永久化,但病毒并没有计划在哈卡王国之外发布。虽然有成千上万的玩家死亡,但魔兽世界并没有永久死亡。暴雪通过滚动服务器重启修复了血液病毒。但在玩家尸体散落魔兽世界之前。

为什么这是最严重的编程错误之一:好吧,所以魔兽世界可能不会出现数据安全问题或危及生命的场景——但游戏玩家会认真对待他们的娱乐。暴雪花了数小时重置服务器。有趣的是,游戏中的玩家行为模仿了现实世界中可能发生的流行病,肆虐的爆发、恐慌和文明的崩溃。没玩过哇?开始使用这个完整的新手指南。

4塞拉克-25

尽管许多编程错误会导致漏洞或游戏玩家死亡,但糟糕的代码实际上会导致死亡。Therac-25灾难发生在Therac-25放射治疗机上。由加拿大原子能公司生产的Therac-25因意外辐射过量导致至少6名患者死亡。调查发现,糟糕的软件和系统开发不足导致辐射过量。这些主要是由于执行自动化软件测试的困难造成的。

Therac-25辐射过量可提醒您创建易于测试的代码。杀人机器听起来像科幻小说,但Therac-25事件却证明了这一点。但这确实是人类在编码上的错误导致的,导致了这些问题。包括南希·莱维森在内的专家发现,缺乏经验的代码员创造了buggy软件。此外,只有一个程序员创建了该软件,它基于来自Therac-6和Therac-20的代码。

为什么它是最糟糕的编程错误之一:每当有人丧生时,编程错误绝对是最糟糕的代码之一。

5远古水手飞行1

美国宇航局使用了相当多的技术,它的新视野探测器使用了一个PlayStation CPU。NVIDIA解决方案架构和工程副总裁马克·汉密尔顿(Marc Hamilton)定期在博客上介绍NASA使用NVIDIA硬件的情况。“水手1号”火箭发射时搭载了一个预定探索金星的太空探测器。不管发射后有多轻微,火箭都偏离了预定的飞行路线。“水手1号”在起飞后不久被摧毁。

一个程序员的小错误导致了水手1号的错误。尽管报道不尽相同,但有迹象表明缺少一个连字符。根据美国宇航局档案文件,“水手1号飞行后审查委员会认定,由于数据编辑程序中的编码计算机指令中省略了连字符,导致错误的制导信号传输到航天器上。”著名作家阿瑟C.克拉克(2001:太空漫游)将水手1号灾难称为“史上最昂贵的连字符”

为什么这是最严重的编程错误之一:水手1号的错误本可以很容易避免。公共服务公告:亲爱的开发者,请测试您的软件。

6at&t网络瘫痪

at&t-network-down

你现在能听见我说话吗?不,1990年1月15日,AT&T超过50%的网络崩溃。9小时内,7500万个电话无人接听。虽然最初的报告指责黑客,但真正的罪魁祸首更糟:标准软件更新。下次投诉Windows10更新时请记住这一点。一行代码中的一个错误使AT&T的网络瘫痪了几个小时。一个开关自动复位,但是这个错误意味着第二个开关发送了另一条消息。从本质上讲,多米诺骨牌效应开始了,网络继续重复它的错误。最终,AT&T通过降低网络负载设计了一个解决方案。然后开关自行复位。

尽管进行了大量的测试,但一句话就让网络瘫痪了。这个程序是用C语言编写的。if子句中的break语句仍然嵌套在switch子句中。1990年美国电话电报公司的大停电似乎是个简单的问题。很多未接来电,或者像今天这样,一堆未接短信、Instagram、Twitter和Snapchat通知。然而,缺乏沟通带来了巨大的金钱影响。像美国航空公司这样的公司遭受了经济损失。由于停电,美国航空公司接到的电话减少了三分之二。1990年的大修是一个很好的例子,说明了为什么测试很重要。此外,美国电话电报公司(AT&T)的停机提醒人们,科技与经济之间存在着内在的联系。

为什么这是最严重的编程错误之一:AT&T的网络不仅崩溃了,而且几个小时的瘫痪也造成了金融危机。

7活死人日:圣玛丽慈善医院

st-mercys-faux-dead

2003年,一个软件故障错误地“杀死”了8500人。密歇根州大急流城的圣玛丽慈善医疗中心错误地报告说,许多病人死于他们的病人管理软件系统故障。与Therac-25的死亡事故相比,这场糟糕的代码灾难是相当无害的,因为实际上没有人死亡。然而,读到你自己的死亡是令人不安的——尤其是当你还活着的时候。

虚假死亡报告并不局限于病人。这些信件发给了保险公司和社会保障办公室。由于社会保障和保险提供者确保符合条件的患者享有医疗保险,这就提出了一个相当大的问题。圣玛丽慈善会的员工将这一错误告知了病人、**机构和保险公司。最终,编程错误没有引起太多的注意。目前还不清楚编码错误是否被纠正过。然而,没有出现更多的虚假死亡报告。圣玛丽慈悲医院只是切换了病人管理软件。

为什么这是最严重的编程错误之一:谢天谢地,没有人真的死了。但确保医疗保险持续覆盖的损害控制是一团糟。

8囚犯:提前释放

prison-accidental-release

密歇根州在2003年至2005年间遭遇数据处理故障。在这段时间里,由于电脑程序的缺陷,密歇根州的23名囚犯提前获释。幸运的囚犯从39天到161天的刑期中受益匪浅。虽然任何意外终止监禁都是有问题的,但谢天谢地,这些都是较小的违规行为,比如毒品和**指控。

软件通常旨在使过程自动化。通过减少体力劳动,我们的生活理论上更容易。然而,密歇根囚犯提前出狱的案例再次证明了软件测试的价值。一个小的编程错误带来了巨大的影响,特别是在这个例子中。试想一下,如果获释的囚犯涉猎了更严重的罪行。

为什么这是一个最严重的编程错误:这个事件本来可以更糟,但提前释放囚犯是可怕的。

9哈特福德体育馆瀑布

尽管据报道,1978年哈特福德体育馆倒塌造成了9000万美元的损失,但情况可能更糟。哈特福德体育馆在球迷们离开场馆数小时后倒塌。它的钢格屋顶无法承受湿雪的重量。由于一个简单的编程错误,一座建筑物倒塌了。用于设计哈特福德体育馆的CAD软件的编码员未能考虑多个变量。相反,软件程序员假设钢屋顶支架只会面临纯压缩。

工程师面临许多挑战。使用软件应该使他们的工作更容易。然而,未能考虑到几个变量会导致巨大的挑战。虽然你可以简单地修补一个错误在雷工,CAD软件直接影响现实世界的结构。

为什么这是最严重的编程错误之一:好吧,至少没人死。但估计损失9000万美元的经济损失是巨大的。

10我有99个问题,奔腾就是其中之一

一般来说,英特尔处理器的性能优于AMD处理器。然而,AMD提供了极好的性价比。但是在1994年,英特尔的奔腾微处理器遇到了一个大问题。486DX和奔腾CPU采用浮点单元(FPU)。这个FPU是一个数学协处理器。上一代Intel CPU使用整数处理数学。通过内置FPU,下一代奔腾芯片有望大大加快数值计算速度。

奔腾FPU采用了基数为4的STR算法。输入的信息不正确导致计算稍有错误。但是,即使是一个小的变化也可能意味着巨大的问题,就像哈特福德坍塌或Therac-25所展示的那样。大约千分之五的参赛者被排除在外,从而放弃了奔腾的长师能力。英特尔官方宣称,脚本错误导致查找条目出现问题。不管怎样,奔腾的数学都是由糟糕的代码造成的。

为什么这是一个最严重的编程错误:几个重要的数字可能看起来不多,但在工程或医疗精度的情况下,这是必不可少的。

代码不好:编程错误发生

编程错误从一开始就出现了。随着代码在各种领域的使用不断扩大,这种趋势可能不会很快消失。

有很多编程错误的例子。有些相当无害,就像魔兽世界的虫子。另一些死亡要么是真实的(Therac-25),要么是想象的(圣玛丽)。不要让这些著名的例子阻止你编写代码。请参阅本指南以选择正确的web编程语言。

你还记得哪些坏代码的历史例子吗?请在下面留下您选择的编程错误的评论!

图片来源:nouskrabs和McIek viaShutterstock.com网站

  • 发表于 2021-03-15 13:15
  • 阅读 ( 188 )
  • 分类:编程

你可能感兴趣的文章

20个ted关于编程的演讲每个人都必须观看

... 历史与未来 ...

  • 发布于 2021-03-12 21:17
  • 阅读 ( 262 )

20个youtube视频保证让你质疑一切

... 让我们回到速成班。看过约翰的优秀历史系列的人都知道蒙古人既是一个反复出现的主题,也是一个持续不断的笑话。 ...

  • 发布于 2021-03-14 03:50
  • 阅读 ( 219 )

过去一年最严重的10个错误

...但该公司的一些决定,如积极的免费升级提议,已经成为历史。 ...

  • 发布于 2021-03-16 08:59
  • 阅读 ( 168 )

掌握ios 10编程和5个swift类

...的同时,在223次讲座中进行严格的实践。它被宣传为Udemy上最受欢迎的iOS编程课程,内容也反映了这一点。 ...

  • 发布于 2021-03-17 06:53
  • 阅读 ( 243 )

10种最常见的编程和编码错误

编程就是要聪明地工作,找到构建有用软件的有效方法。无论你是在创建软件程序、网络应用程序还是移动应用程序,编程的原则都是一样的。 ...

  • 发布于 2021-03-18 04:48
  • 阅读 ( 241 )

为你生活中的arduino tinkerer准备的10个礼物

... 编程Arduino是亚马逊上最畅销的Arduino书籍之一。它是程序员和非程序员的理想选择,因为每一章都集中在编译和上传的新代码部分。不过,它并没有涉及电路构建或应用的任何细节。 ...

  • 发布于 2021-03-19 01:59
  • 阅读 ( 282 )

值得体验的8个最佳视频游戏故障

... 我们从历史上最著名的电子游戏故障开始。负的世界是一个故障的水平,在原来的超级马里奥兄弟的NES。如果你知道该做什么,就不难达到,但一旦进入,你就永远被困在那里。...

  • 发布于 2021-03-20 06:45
  • 阅读 ( 177 )

5 c编程技巧你必须学会入门

如果你听说过编程,你也听说过C。它是世界上最古老的编码语言之一。有人害怕,也有人喜欢。 ...

  • 发布于 2021-03-21 10:02
  • 阅读 ( 286 )

什么是unix时代?unix时代是什么时候?

...。我们非常需要表现的是接近现在的时间,而不是远古的历史或遥远的未来。即使对于日历之类的应用程序,也很少需要表示未来几十年以后的日期。 ...

  • 发布于 2021-03-26 15:47
  • 阅读 ( 169 )

Windows10中错误硬件损坏页面停止代码的6个修复

...“设置”面板,然后选择“更新安全”>查看更新历史记录。您可以在这里找到任何驱动程序更新。 ...

  • 发布于 2021-03-30 18:47
  • 阅读 ( 439 )
bkpc95149
bkpc95149

0 篇文章

相关推荐