程序员上下50年程序员和BUG的斗争

程序员和BUG的斗争史

BUG,原意“昆虫”或“虫子”。而现在,BUG又多了一个意思:系统或程序上存在的隐藏的缺陷或错误。

而这个小小的BUG,却严重拖长了程序员的工作时间,也严重消耗了程序员的头发。

那么,BUG为什么叫BUG呢?

时间回溯到年的9月9日。曾经设计了Cobol语言的杰出计算机科学家格蕾丝·赫柏刚刚对一台HarvardMarkII完成了编程工作。这个拥有个继电器的庞然大物着实让她花了不少时间。

赫柏把整机运行的工作交待给几位技术人员,自己倒上一杯水,正准备好好享受一下难得的闲暇时光。可就在这时,HarvardMarkII却突然罢工了。

在那个一台计算机比几个房间还大的年代,技术人员除了自己爬上去寻找原因,别无他法。

终于,他们在某组继电器的触点之间发现了罪魁祸首——一只不小心闯入被高电压当场击死的飞蛾。就是因为这个小倒霉蛋儿,罢工才会发生。

在报告文件中,赫柏直接将这只飞蛾用胶条贴了上去,此外,她还在报告中将其描述为BUG。

于是,BUG便被沿用了下来。

在诸多类型的BUG中,有一种BUG可能是对程序员最友好的。

这种BUG被叫做波尔bug。因为只要让软件在相同的条件下运行,就可以让这种bug轻而易举地再次显现。就像波尔模型中的电子路径和动量,一切都是可预知的。

对程序员来说,bug既然无法避免,那么最好全都是波尔bug。可惜,现实总是残酷的。海森堡bug的出现简直令人抓狂。

学过大物的朋友想必都知道大名鼎鼎的“测不准原理”。在诸多bug中,就有这样一种“测不准”的bug。程序遇到bug崩溃了,可是在重启之后,这个bug却消失了。无论怎么努力debug这个程序,这些bug都永远不会再出现。

因为“测不准”的状况像极了“测不准原理”,这种bug便被称为海森堡bug。

如果说海森堡bug只是偶然事件可以忽略,曼德博bug却让人根本无法忽视它的存在。

当bug产生的原因过于复杂,复杂到难以理解的时候,bug的出现也就变得不是那么有规律。以不规则几何形态为研究对象的分形几何学与这种bug有种莫名的相似度,所以,分形几何学之父本华·曼德博的名字也就被借来描述这种bug了。

这些bug可能还在程序员们的常识范围内。一种用虐猫狂人薛定谔冠名的bug则诡异到令人完全摸不着头脑。

想象这样一个画面,一个程序员正喝着咖啡美滋滋地看着正常运行程序的代码,突然发现代码中存在一个非常致命的bug,而这个程序完全不可能在这样的bug下运行!当他满腹狐疑再次运行这个程序的时候,程序却又不出意料地崩溃了。

尽管非常诡异,但是这种当你观察到它,它就起作用的bug确实存在。并被称为薛定谔bug。

bug的类型远不止这四种。而且,程序员与bug的斗争史一经开始,就再也不会结束。

这场堵上了头发和尊严的战斗,赢或不赢有那么重要吗?

有。

好了,那么本期内容到这里就结束了。

更多精彩内容,别忘了


转载请注明:http://www.xxcyfilter.com/gailian/gailian/15671.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了