少儿计算思维养成记:六个孩子的编程学习笔记
上QQ阅读APP看书,第一时间看更新

九、程序里的bug和debug

bug就是程序中出现的错误。那为什么叫bug呢?我们查了字典,bug的意思可是“臭虫、小虫子”啊!包老师解开了我们的困惑。

原来在计算机刚问世的时候,它的内部是一个一个小灯泡(包老师说这叫电子管,见图1-13左侧部分)。有一次,这台计算机运行出错了,所有人都不知道是怎么回事。过了几天,程序员Grace Hopper发现一个小灯泡里有只小飞虫,把虫子拿出来后,计算机就正常运行了(见图1-14)。

040-1

图1-13 早期计算机里用的电子管(左)和计算机程序里的第一个bug(右)

040-2

图1-14 Grace Hopper工作照(源自https://en.wikipedia.org/wiki/Grace_Hopper

因为虫子的英文是bug,所以后来当计算机出故障时,大家就说:“出bug了!出bug了!”图1-13中右侧图片里的那只虫子就是历史上第一个“计算机里的bug”,旁边还有Grace写的注释“First actual case of bug being found”。

在后面的每一讲里,我们都会总结一下到底出了哪些bug,概括起来是以下几种原因:马虎、没有初始化变量、循环边界不正确、弄混了形式参数和实际参数。

出了bug怎么办呢?那就进行debug吧。老师告诉我们,英文里面把单词前面加上“de”表示“否定、去除”的意思。debug就是找到程序中的bug并改正它们。

那么怎样进行debug呢?我觉得debug就像是“警察破案”,我们要从蛛丝马迹中找出真相。我们总结了下面两种方法。

(1)看

在开始debug之前,必须保证自己大脑中有一个清晰的程序执行思路,顺着思路仔细阅读自己的代码两到三遍,也就是对照脑子里的思路和写出的程序,看是否有不同,一定要仔细!

(2)执行

有时候光看还不行,还需要执行。在找到可疑的地方之后,尝试修改一下,或者把这一段指令暂时移走,再次运行程序,看是否正常。

一个非常好的方法是“打印中间结果”,也就是设置一些用于调试的变量,把程序运行的中间过程都打印出来,看是不是按照我们的意图运行的。

还有其他的一些进行debug的方法,都放到了这本书的辅助阅读材料里,请读者参考辅助阅读材料吧。