在第一章我们学到了编程的精义,引用了古代愚公的故事,而在第二章,作者又引用了李冰凿山的故事为我们揭示了这章的主题,“是懒人造就了方法”。
应该说我非常喜欢作者的这个观点吧,因为我也是懒人一族,每当朋友、家人说我真是懒得时候,我总是骄傲的说“世界是懒人创造的哦,不要看不起懒人”。当时虽然是说笑的,但是心里很认同。就拿愚公、李冰这事来说,目的同样是凿山,但是愚公直接是“碎石击壤”,率着家人世世代代凿山,没有经过任何分析,换句话说愚公太勤奋了,所以即使力量微不足道,还是可以世世代代传承凿山这件事,并且有着坚定地信念;但是到了李冰这里情况就不同了,李冰在当时有着很大的权利,完全可以直接率着他成千上百的手下凿石开山、修堰筑坝,直接动手,那他绝对不会发现用“烧”这种方法可以加快工程进程,使得一大座山短时间就被哗啦哗啦的给碎掉,所以李冰一定是一个闲人而且是一个懒人,所以他才会放弃率众人凿山,选择观察问题,分析问题,所以发现了“烧”这个有效率且省事的方法。
正是一个懒人造就了这个碎石的方法,因为愚公太勤快了,勤快到可以更加卖力的事今天比昨天多凿一倍的石头。他的勤快使他越发没有机会找到更快捷更有效的方法,但是人的精力终归是有限的。所以找到新的方法,将对问题有效的解决至关重要。愚公可以几代人持续凿山直到山不复存在,但是李冰却用了很短的时间完成了这件事,这就是懒人解决问题的效率。懒人并不是懒惰,而是将更多的时间花在了思考问题、分析问题上,不是拿到程序直接就动手编程,不经过任何的思量、考虑。所以在刚拿到程序的时候我们不应该先把那些固定的框架写出来,而是从逻辑、结构去分析,找到捷径,一种更好的方法。
我们现在虽然才写程序不久,但是老师总是会跟我们强调素质,写程序的素质,比如结构化编程。这也是懒人创造的方法,出现了单元文件,然后很快出现了一个新的概念:模块,一个模块对应于一个单元。所以结构化编程的时代终于开始了,最终新的方法取代了旧的方法。
作者和Soul进行了一次谈话,作者第一次进行了关于程序的本质的思考,“程序=算法+结构+方法”。他们都一致的认为“面向对象有局限性,而面向过程的方法可以实现复杂的系统。”面向对象解决了“结构”和“编程方法”的问题,但是面向过程却是对“结构”、“编程方法”、“流程”的高度概括。流程还是在“面向过程”的时代,而所谓的面向对象的事件还是“顺序”的,所以事件与对象之间是很牵强的,事件的连续性并不是某种编程方法或者逻辑结构决定的,所以面向对象不能彻底的表达世界。“程序=数据+算法+方法”,这是面向过程时代的事。
结构化程序设计,是懒人的方法,但在面向过程开发中,却因为“过程”和“单元”的出现,出现了面向对象,这就是作者说的工程吧。