当我初学编程时,我发现测试与调试这一过程是令人沮丧的。我当时使用Selectrictvlaewriters与分时系统进行交互,Selectrictypewriters的“速度惊人”可以达到每秒15个字符,我可以记起当时我是如何用力Selectrictypewriters的坚硬金属外壳的。然而bug并未因为我的敲击而更快地消失。在我印象当中,从未有老师教授过我如何测试和调试程序。在我从事软件开发的近3年中,软件开发业的诸多方面都发生了变化,编程语言已经更为普及并且不再阳春白雪。业界已经引入了更好的软件开发方法学,而且这些方法学还将被更为优秀的方法学所替代。微处理器已经无所不在,软件也成为了诸多新产品的驱动力量。将我初学编程时所使用的价值数百万美元的IBM大型机与我编写本书时所使用的笔记本电脑相比,后者有更快的处理器、更多的内存以及更大的磁盘空间。然而一些事情仍未变化,软件产品仍有太多的bug,软件开发者依然花费着过多的时间查找并解决bug。正在学习编程的人们在使用试错法上花费了太多的时间。我编写本书的目的在于给广大读者介绍一套系