C语言王者归来
上QQ阅读APP看书,第一时间看更新

1-5 程序除错

设计程序时难免有错误发生,一般程序错误有两种。

(1)语法错误(syntax error):表示您编辑程序的语法有错,只要依照所使用的编译程序指出的错误,加以订正即可。

(2)语义错误(semantic error):这类型的错误比较复杂,因为语法皆正确,程序也可以有执行结果,可是执行结果不是预期的结果。碰上这类状况,可能是架构程序的逻辑错误、输入数据错误或公式错误,此时只好从头到尾检查程序代码,将程序逻辑重新构思、检查输入数据或执行公式检查。

通常将程序除错称为debug,de是除去的意思,bug是指小虫,这是有典故的。1944年IBM和哈佛大学联合开发了Mark I计算机,此计算机重5吨,约2.5米高,15.5米长,内部线路总长约800千米,没有中断地使用了15年。下图是此计算机照片。

图片取材自http://www.computersciencelab.com

当时一位女性程序设计师Grace Hopper发现一只死蛾(moth)的双翅卡在继电器(relay),导致数据读取失败。下图是当时Grace Hopper记录此事件的数据。

计算机历史的第一个bug(本图版权属IEEE)

当时Grace Hopper写下了两句话:

Relay #70 Panel F (moth) in relay. First actual case of bug being found.

大意是编号70的继电器出问题(因为蛾),这是真实计算机上所发现的第一只虫。自此计算机界认定用debug描述“找出及删除程序错误”,这应归功于Grace Hopper。