August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
我们如何开始?大体上说,我们要做的就是对问题和问题求解方法进行思考。首先,考虑程序应该完成什么,人机交互的方式是怎样的。然后,考虑如何设计程序才能实现这样的功能。试着写出每个解决方案的简单框架,并检验它们的正确性。或许与朋友讨论这个问题及其解决方法,试着给朋友讲述你的想法,是一种很好地发现错误的方式,甚至比写下来都要好很多,因为纸(或者计算机)不能对你的假设提出疑问,不能反驳你的错误观点。总之,设计不是一个孤独的过程。
不幸的是,不存在对所有人和所有问题都有效的通用解决策略。有些书通篇都在帮助读者学习更好地求解问题,其他大部分书籍则侧重于程序设计。我们并不那么做,相反,本书针对一些个人能够处理的小规模问题给出若干有价值的通用求解策略,然后以微型计算器程序为例对这些策略进行验证。
建议读者带着疑问阅读关于计算器程序的讨论。实际上,一个程序的开发要经过一系列版本,每个版本实现了我们得到的一些推论。很明显,某些推论是不完全的甚至是错误的,否则可以更早就结束本章。随着讨论的深入,我们逐步给出了各种各样的关注点和推论的实例,这些都是设计者和程序员一直要面对和处理的,直到下一章结尾才完成这个程序的最终版本。
学习本章和下一章时要记住,实现程序最终版本的过程——提出部分解,产生想法和发现错误的历程——与程序最终版本本身同样重要,甚至比实现过程中碰到的语言技术细节更重要(后面还会讲到这些问题)。