程序设计实践:测试与排错的艺术

需积分: 0 1 下载量 107 浏览量 更新于2024-08-01 收藏 751KB PDF 举报
"《程序设计实践》一书由B.Kernighan和R.Pike合著,主要探讨了程序设计中的各种实际问题,包括排错、测试、性能、可移植性等多个方面。这本书强调测试与排错的区别,指出测试是为了在程序被认为能工作时找出问题,而排错是在已知问题时进行的逆向处理。书中引用了Edsger Dijkstra的观点,即测试能发现错误但不能证明无错误,提出了理想的程序构建过程应避免错误。书中还提到通过程序生成代码来确保无错误的可能性,并预告在后续章节会深入讨论此话题。在本章6.1节中,作者提倡在编码过程中就进行测试,尤其是关注边界条件,以尽早发现并预防错误。" 在这本书中,作者首先强调了测试和排错之间的本质区别,测试是主动寻找潜在问题的过程,而排错是针对已知错误的修复。Edsger Dijkstra的观点揭示了测试的局限性,即使经过了严格的测试,也不能完全保证程序的无误状态。尽管如此,对于当前的编程实践,测试仍然是必不可少的,因为程序的正确性需要通过系统化和逐步递增的测试来保证。 书中提到的一种策略是通过程序生成代码,这种方法可以在理解了问题的本质并且过程可机械化的前提下,减少人为错误。例如,高级语言编译成汇编代码、正则表达式生成文本模式匹配规则,以及电子表格中的公式计算等,都是代码生成的例子。如果生成器或翻译器本身是正确的,那么由此产生的代码也将是正确的。 在6.1节中,作者特别提醒开发者在编码时就应考虑测试,尤其是在编写代码的过程中,要对边界条件进行测试。边界条件往往是导致程序出错的常见原因,因此,对这些情况进行预先验证可以有效防止许多类型的问题出现。这种早期测试的实践有助于减少错误的累积,提高代码质量,并且能在编码阶段就发现并修复一部分问题,从而提高开发效率。 《程序设计实践》提供的是一套关于如何提升编程质量和效率的实践指南,不仅涵盖了测试和排错的策略,还包括了代码生成、程序设计的原则和方法。这本书对于想要提升编程技能的开发者,以及计算机科学的学生和专业人士来说,都是一份宝贵的参考资料。