明白了,程序的制作过程是先复杂后简化。
通常我们设计程序,一开始总有一个不确定的阶段。在这个阶段,所有的程序都像是毛坯,经常需要修改,除了修改之外,还有为了解决技术上的难题,对程序中可能用到的算法都做一个原型。这些算法的原型并非每个都会成为最终产品的一部分,但是中间的过程的确是复杂化的。开发到了最后,程序就会被简化,并且在同时保留其在开发过程中应对改变的灵活性,从而得到最终的产品。
同样的,C/C++ 的语言之争,也是没有必要的。如果用得好,C++ 也能用得精巧,但是用得不好,C 也能用得很烂。SP 还是 OB 还是 OO,完全取决于程序的复杂度。简单的程序用 OB 就能实现得很好,超简单的程序可以用 SP,但复杂度达到了一定的程序就得用 OO,并且在 OO 的初级阶段,接口比继承更为重要。即使到了 OO 的高级阶段,组合也值得用以代替不必要的继承。当然泛型也很有用。
程序设计和开发时会采纳种种不同的意见,比如复杂度、平台、性能、功能等等之间的平衡。这些平衡因素哪一个过分了,就会产生不实用的程序,就像人一样,身体机能不平衡了就会生病。然后平衡到一定程度之后,程序就可以被确定地写出来了,此时就不再考虑平衡性的问题了,只要 debug 和完善就可以了。