August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
当你写完一个程序后(草稿?),它会有不少错误。小程序偶尔会一次通过。但如果一个复杂的大程序也出现这种情况的话,你一定要保持一个非常非常谨慎的态度。如果它确实第一次运行就正确的话,赶紧告诉你的朋友们来庆祝一下吧,因为这种事情不是每年都有的。
因此,当你写完代码后,你要做的就是找到并排除错误。这一过程称为调试(debugging),错误被称为bug。据说bug(有昆虫的意思)一词来自于早期真空管计算机时代,那时的计算机是占据了很大空间的真空管计算机,当小昆虫进入电路板后就会导致硬件故障。一些人将bug一词借用过来专指软件中的错误。其中最著名的就是Grace Murray Hopper,COBOL编程语言的发明人(参见22.2.2.2节)。这个词第一次出现已经是五十多年以前的事情了,现在它已经被人们普遍接受了。查找并排除错误的过程被称为调试。
调试可以被简单描述为:
1.让程序编译通过。
2.让程序正确链接。
3.让程序完成我们希望它做的工作。
基本上,我们要一次次重复这个过程:对于大程序,需要上百次,上千次,年复一年。每当程序不能正常工作,我们就要找出问题并修正。我认为在编程中调试是最乏味、最费时间的工作,因此应该不遗余力地做好设计和编码工作,以使除错的时间降到最低。有的人会在调试过程中体验到搜寻bug和深入程序精髓的快乐——调试可以和视频游戏一样让人上瘾,会把程序员没日没夜地黏在终端前(以个人的经验,我可以证实这一点)。
下面是调试时不要犯的错误:
为什么我们要提到这些呢?显然,糟糕的方法会使成功的机会变得很低。不幸的是,上述行为恰好概括了许多人在深更半夜工作茫无头绪时所做的“无用功”。 ...