大道至简:软件工程实践者的思想第二章读后感
第二章:是懒人造就了方法
引用典故李冰烧山的故事,同是战国时期,愚公就要“碎石击壤”,而李冰就已经懂得“积薪烧之”了,为什么说懒人造就了方法呢,假如李冰也像愚公一样没日没夜的督促他的团队凿石开山,那么他肯定没有时间来学习、寻找或者观察,当然也不会发现“烧”这种方法可以加快工程进度,使得一大座山短时间就被哗啦哗啦地给“碎”掉了。 李冰的团队成百上千,若只为吃喝拉撒,那必然会寝食难安,因为工程太过巨大。相反,他应是个闲人,可以闲到去观察火能否把石头烧爆。在如此大的工程中,如果会闲到去看石头,那他一定很懒,但,也正是因为他的懒造就了“烧石碎石”的方法。也是因为愚公太勤快了,勤快的一天会比一天更努力,但正是因为他太过勤快,就越发找不到机会去发现更好的方法,人的经历终究是有限的,提出新方法是影响做事成效的根本问题,而愚公可以多劳多吃饭,但是突破不了人的精力的极限。
在两千年前的某一天,特别闲的人下厨给夫人炒了个小菜,他突然发现垒灶的鹅卵石被烧得爆裂开来,遇水尤甚,从此史记上便记载下了“蜀守冰凿离堆”,而差不多的时间的愚公在山北之塞“碎石击壤”。而李冰正是得到这个典故的启发才造就了“烧石碎石”的方法。
在以前的的时代中,程序员的习惯就是把3000多行代码写到一个文件中,所以按照这一部分的人的逻辑,一百万行的代码是可以写在一个文件的人,不但如此,编译器、编辑器等等也都必须支持,这才是正统的软件开发。
后来出现了单元文件,很快有了一个新的概念:模块。把一个大模块分成细小的模块,一个模块对应一个单元。于是我们开始分开工作,一部分人写这几个单元的代码,另一部分人写那几个。源代码分赛开来,结构化编程的时代到来。所以说,一百万行代码是可以写在一个文件里的。
我也是学了一年的编程,并且脑袋里也是晕晕乎乎的,不知道从哪里开始,也不知道如何做程序。读了才发现自己根本不知道这些知识是干什么的,只是在老师上课的时候记住了,课下的时候却不知道如何使用,根本不知道各种知识都可以用来做些什么。 既然我们会整理书籍,将他们分类、归整的整整齐齐,就可以类推到我们所学到的知识,将他们归纳一下,整整齐齐放在脑子里。如果学了,却不知道怎么做,那只是他不知道这些知识可以用来做什么。所以我们应该尝试一下分类,把既有的知识像桌子上的书一样整理一下,最常用的放在手边,而最不常用的放在柜子里,这样我们的能力会提高一大步。
“程序=数据+算法+方法”,其实即使没有任何“方法”的根本原因,是即使没有任何“方法”的存在,只需要有了“单元”和“模块”的概念,在面向过程的时代,一样可以做出任意大型的程序。在那个时代,“方法”问题并不会像象鼻子一样凸显在每一个程序员的面向过程开发中,程序员并不需要在造就什么,就可以进行愚公式的开发工作。