本文转载自公众号“读芯术”(ID:AI_Discovery)。
公司主营业务:成都做网站、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出项城免费做网站回馈大家。
1996年6月24日,欧洲航天局的阿丽亚娜5号无人火箭在发射仅37秒后爆炸。三亿七千万的投资和十几年的努力在一瞬间付诸东流。
原因为何?源自一个简单的软件漏洞。它试图将可代表数十亿个潜在值的64位浮点型变量存储至只能代表65535个潜在值的16位整数中。也就是说,为了让火箭进入太空,需要分配更多的储存空间。
这告诉我们,小的失误会造成严重的后果,潜在危险最大,为此付出的代价最高。
[[389166]]
程序出错时,几乎每一个明显的错误都会在代码中显现。这些错误会引发显而易见的编译器错误或运行错误,而编译器错误或运行错误会在用户界面或编译器中体现出来。开发人员很清楚,这些问题需要立即解决,所以这些错误几乎不会引发担忧。
最有可能的情况是,发现错误后,开发人员立刻进行修复,绝不会提交一份板上钉钉的半成品或编写了不符合预期目标的代码。
大象不咬人,因为可以以直观的方式将它们轻易驯服。从长远角度来看,它们不会惹任何麻烦,也不会造成任何伤害(除非命令它们那么做)。它们容易识别,通常会说,“看看我!关注我,我会向你表达爱意,你不会后悔的。”
与大象相对的是蚊子——代码中看似无关紧要且并不明显的部分,作为隐藏数据藏匿于看似有效的代码的backburner中。他们随时准备发动攻击,让代码毁于一旦。由此导致的错误包括:逻辑错误、设计问题、杂乱的代码以及有缺陷的非优化算法。
阿丽亚娜5号火箭发射的问题在于,研究人员复制了此前成功发射的阿丽亚娜4号火箭的工作代码。研究人员显然认为这些代码同样适用于阿丽亚娜5号,但这些代码并不能满足阿丽亚娜5号火箭的环境需求,无法应对新环境的要求。
[[389167]]
图源:unsplash
此类问题通常在编写良好的测试代码中出现,这些测试代码旨在给系统施加尽可能多的压力,但如果不编写测试代码处理这些情况,可能会发生令人震惊的黑天鹅事件,从而造成严重的后果。
当遇到加载时间长、超时或限制时(特别是使用云后端时),通常会注意到这个细节。有些代码单独运行时效果会很好,但在编程时需意识到,单独运行顺利并不意味着它能够与大型数据集和其他组件协同工作。
如果不顾这些小问题,其结果将会令人大吃一惊。好消息是,有很多方法可以降低并最小化这些错误的影响。
不注意小的问题,最终会面临最大的问题。在某种程度上,阿丽亚娜5号事件的程序员值得同情。但是此类事件说明,在大量的压力测试和测试驱动开发的支持下,仔细编写代码尤为重要。
编程不只是写出能运行的代码,它还需要仔细周到的考虑:代码不是胡乱编写,许多新老程序员只是把代码片段拼凑在一起,就像试图把圆柱体塞进方孔一样。虽然圆柱也能塞进去,但并不合理,而且无论如何也不稳固。
[[389168]]
图源:unsplash
因此,在编写代码时最好把这些问题放在心中:
当然,还可以问自己更多的问题,这些问题足够汇编成一个详尽的清单上述问题可能是最重要的,但却未得到足够的重视。通过限制潜在的未知错误,使不确定的事情成为已知,来降低代码中任何错误的风险,而非观察后才成为已知。
这些大错误不应成为长期关注点,因为大错误很容易更正和解决。日常的微小错误和不一致性才是真正需要关注的问题。
网页名称:编程须谨记:大象不咬人,蚊子却致命
文章位置:http://www.stwzsj.com/qtweb/news1/8401.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联