分类：电脑/网络-操作系统/系统故障
问题：什么是Bug？ 
回答：英文bug既指臭虫，也泛指所有虫类。意指系统的硬件、系统软件（如操作系统）或应用软件（如文字处理软件）出错。来源嘛，参考这个什么是bug?臭虫的故事有人曾这样比喻过摩尔定律造成的电脑技术的飞速发展：如果汽车工业像电脑工业那样高速发展的话，现在的汽车每小时可以跑一千公里，售价只有一元钱。作者有一个反面的回应：幸好汽车工业没有像电脑那样发展。如果汽车像微机一样的不安全不可靠的话，地球上活着的驾驶员和乘客大概就不多了。试想一下，如果你在高速公路上行驶，突然方向盘、油门、刹车全部失灵，仪表上显示一条信息：“你执行了非法操作，系统关机。”这种可怕的景象，正是日常发生在我们每一个微机用户身边的事。这种情形的出现是如此频繁，我们已经习以为常了。我们对“死机”这个名词已毫不陌生，并且知道要随时“存”一下自己的工作，比如正在编写的一个文件，正在计算的一个报表，正在输入的一个客户名录，正在创建的一个网页等等但是，当一个新用户第一次用电脑时，恐怕会被这个情形吓一大跳。作者曾亲身经历过一件事。有一天晚上，作者去看一个朋友，他正在试用新买回来的一台个人电脑。他按了一个键，系统突然死机，隔壁的楼房也在同时停电。朋友吓出了一身冷汗。他以为是他搞死了电脑，拖累得隔壁楼房也掉了电其实，这些现象根本不是用户的错，是系统的“臭虫”发作。如果要怪谁的话，应该怪电脑的硬件或软件厂商。所谓“臭虫（Bug）”，是指电脑系统的硬件、系统软件（如操作系统）或应用软件（如文字处理软件）出错。硬件的出错有两个原因，一是设计错误，一是硬件部件老化失效等。软件的错误全是厂家设计错误。那种说用户执行了非法操作的提示，是软件厂商不负责的胡说八道。用户可能会执行不正确的操作，比如本来是做加法但按了减法键。这样用户会得到一个不正确的结果，但不会引起臭虫发作。软件厂商在设计产品时的一个基本要求，就是不允许用户做非法的操作。只要允许用户做的，都是合法的。用户根本就没有办法知道厂家心里是怎么想的，哪些操作序列是非法的。从电脑诞生之日起，就有了电脑臭虫。第一个有记载的臭虫是美国海军的编程员，编译器的发明者格蕾斯·哈珀（Grace Hopper）发现的。哈珀后来成了美国海军的一个将军，领导了著名计算机语言Cobol的开发。1945年9月9日，下午三点。哈珀中尉正领着她的小组构造一个称为“马克二型”的计算机。这还不是一个完全的电子计算机，它使用了大量的继电器，一种电子机械装置。第二次世界大战还没有结束。哈珀的小组日以继夜地工作。机房是一间第一次世界大战时建造的老建筑。那是一个炎热的夏天，房间没有空调，所有窗户都敞开散热。突然，马克二型死机了。技术人员试了很多办法，最后定位到第70号继电器出错。哈珀观察这个出错的继电器，发现一只飞蛾躺在中间，已经被继电器打死。她小心地用摄子将蛾子夹出来，用透明胶布帖到“事件记录本”中，并注明“第一个发现虫子的实例。”[从此以后，人们将计算机错误戏称为虫子（bug）或臭虫，而把找寻错误的工作称为“找臭虫”（debug）。哈珀的事件记录本，连同那个飞蛾，现在陈列在美国历史博物馆中。今天的电脑臭虫之多，是难以令人置信的。据电脑业界媒体报道，微软视窗98操作系统改正了视窗95里面5000多个臭虫。也就是说，当几年前视窗95软件推向市场时，每套里都含有5000个臭虫！全世界有数千亿个臭虫在我们的微机中飞来爬去，这就难怪我们的微机应用老会出问题了。电脑含有这么多臭虫有一个技术原因，就是软件越来越庞大复杂。在任何复杂的大系统中，错误是难以避免的。大型软件尤其难以按时按预算完成。1995年，国外的一个大规模的研究调查了17万个软件开发项目（总投资达2500亿美元）。结果发现，只有6%按时按预算完成，31%的项目被中途取消。其余53%的项目最终完成，但都超出了预算和进度。这些项目中，一大半项目的实际花费超出预算达189%电脑程序是由语句组成的。据报道，视窗95含有1500万行代码。假设每行代码包含一个语句，那么视窗95的潜在臭虫就会有200多万个（见下页规则4）。在出厂之前，微软做了大量测试。根据琼斯规则5，需要做18次测试才能把臭虫数降低到5000个。假设测试一次耗时一个月（实际上常常不止一个月），那也需要一年半的时间。如果要把臭虫个数降到1，总共需要做42次测试，或三年半还多的时间。当然，微软的视窗95建筑在视窗3.1版多年的开发和使用基础上，并不是完全从头做起，用不了这么多时间。但不论怎么算，测试和纠正臭虫的成本都是很大的。琼斯先生（Capers Jones）评价软件项目的简单规则发表在《IEEE　Computer》杂志上（1996年第3期）。琼斯先生申明这些简单的规则难以精确地评估现实的软件开发项目，仅供参考。函数点=语句数/100规则1　文档页数 ＝ 函数点1.15 规则2　需求规范的改变不宜超过每月1%的速度规则3　测试用例数 = 函数点1.2 规则4　潜在臭虫数＝函数点1.25 规则5　每次查错工作（检查或测试）能发现并修正30%的现有臭虫。规则6　开发所需月数 ＝ 函数点0.4规则7　开发所需人数 ＝ 函数点 / 150 规则8　维护所需人数 ＝ 函数点 / 500N`规则9　预计软件使用年数 ＝ 函数点0.25规则10　一个人月的实际工作小时数＝每月22天×每天6小时，即一个人月实际工作时间＝每月132小时其实，人们并不是不可以更好地对付臭虫。斯坦福大学的唐纳德·克鲁思教授（Donald Knuth，他自己取的中文名字是“高纳德”）就是创造高质量软件产品的典范人物。他在80年代初开发的计算机排版软件TeX在世界范围内广泛使用，而且非常稳定。作者曾多年使用TeX，从来没有遇到过臭虫。高纳德教授的TeX软件还有一个创举：他在发布这个自由软件时明确宣布，他将对软件负责。对每一个臭虫，他将奖励第一个发现者1美元.我们可以说，世界上像高纳德教授这样的人不多。他毕竟是一个超级程序员，一个图灵奖获得者，一个天才，又有非常优秀的科学训练和素养。而且，他的程序是开放源码的自由软件，全世界都在帮他找错。但是，我们能不能学习他那种科技人员的敬业精神，学习他那种敢于为自己的产品负责的气魄呢?就是高纳德教授这样的人也是会犯错误的。"1999年12月，《美国科学家》杂志评选出“塑造20世纪科学的100本书”，高纳德教授的著作也榜上有名。他在1968年出版的《计算机程序设计的艺术》一书，与爱因斯坦的《相对论》、维纳的《控制论》、狄拉克的《量子力学》等被列为20世纪最有影响的12部科学专著。高纳德教授对这部600多页的专著采取了同样的奖励方法。每一个错误的第一个发现者将获得2.56美元的奖励。不断有人给他写信报告错误。到了1981年，高纳德教授忙于开发TeX, 实在没有时间回信。于是他向所有报告者发了一封标准信，称以后会给他们联系。高纳德教授说，“我可能很慢，但我信守我的承诺。”到了1999年，高纳德教授终于腾出时间回了所有信件，并汇出125张支票。由于时过境迁，有几封信被退回来了，其中有一封是从中国上海发出的。如果你的名字是Du Xiao Wei，在1982年6月10日向高纳德教授发信指正过他书中的错误，高纳德教授还有一张支票等着寄给你！高纳德教授的网址是：  下面是作者与高纳德教授的一次通信克鲁思教授，我是中科院计算所的一名研究员，正在写一本有关电脑的科普书。我知道您在推出TeX软件时，曾悬赏1美元给第一个发现任何臭虫的人士。不知二十年下来，人们发现了多少TeX的臭虫？ 谢谢。 徐志伟徐先生，事实上，我的悬赏是每个错误2.56美元，每年翻一番，直到327.68美元，然后就保持在这个水平。这个悬赏今天还存在。但是，这么多人已经检查过我的程序了，它可能是同等规模软件中错误检查做得最彻底的程序。我的记忆是大概有四、五个人在327.68美元的水平找到了错误。TeX软件的全部错误记录已经发表在《软件实践与经验》杂志中。在20多年的时间内，我记录了总共1276个臭虫的纠正和功能改进。我总共开出了大约4000美元的支票，但是很多人都没有把寄给他们的支票兑现。我实际付出的赏金大约是2000元左右。我也悬赏在我出版的任何书中发现错误的人，奖金为每个错误2.56美元。这样可以帮助我在每一次印刷时改进质量。 如果软件公司愿意奖赏为它们的软件找到臭虫的人，那该多好啊。尤其是如果软件是开放源码的……