1.隐喻的价值
隐喻的价值绝不应低估。隐喻的优点在于其可预期的效果:能被所有的人理解。不必要的沟通和误解也因此大为减低,学习与教授更为快速。实际上,隐喻是对概念进行内在化(intemalizing)和抽象(abstracting)的一种途径,它让人们在更高的层次上思考问题,从而避免地层次的错误。
2. 算法
算法是一套定义明确的指令,使你能完成某个特定的任务。算法是可预测性的(predictable)、确定性的(deterministic)、不易变化的(no subject to chance)。
3. 编程最大的挑战
对于编程来说,最大的挑战还是将问题概念化(conceptualizing),编程中的很多错误都是概念性错误。正因为每一个问题在概念上都是独特的,所有要找到一套能解决所有问题的一通百通的知道规则是很难的,甚至是不太可能的。如此看来,能一般性地知道大致如何解决问题,至少也和知道如何解决问题一样有价值了。
4.软件的系统生长观点
以增量的方式进行设计、编译和测试,都是目前已知的最强有力的软件开发概念。
在进行增量式开发时,我们先做出软件系统的一个尽可能简单、但能运行的版本。它不必接受真实的输入,也无需对数据进行真正的处理,更不用产生真实的输出——它仅仅需要构成一个足够强壮的骨架,支撑起未来将要开发的真实系统。对于你标志出的没一项基本功能,可能仅需要调用虚假的类。
在骨架形成之后,你要一点点地在其上附上肌肉和皮肤:把每个虚假的类替换为真正的类;不再假装接受输入,而是把接受真实输入的代码替换进去;不再假装产生输出,而是把产生真实输出的代码替换进去。你一次增加一个小部分代码,知道得到一个完全可以工作的系统。