读完大道至简后,我大致将其分为两个大点。一个是编程的精义------什么才是一个程序的核心。另一个则是怎么做好一个工程。
第一点很好回答,用背书的方法都能背出来。那不简单嘛, “程序=算法+结构”呗,但凡有点经验的软件人都知道。说是能说出来的。然而,就从目前来看,我是做不来这个玩意。什么是算法?其实就是逻辑嘛,一个推出一个,像多米诺骨牌一样。什么是结构?其实就是对方法的优化。
就举个我们学生例子,很多时候,考试成绩不理想最后的结果就是-------哎,我太笨了;我没有天赋;我学不好编程了。这里面的逻辑很简单。成绩不好 = 学不好 = 爹把自己生的不好。从开头到结尾只用一步。然而实际上并不如此。可能的因素太多太多。何况,成绩不好与学的不好也同样不能相同。
同样,作者在书中举愚公移山的例子与李冰造离堆对比。一个是,扛着锄头直接上,另一个, “积薪而烧之”。两者产生了完全不同的结果。李冰造出了离堆,造福后世。而愚公,没有结局。其实这就是结构所选的不同,对事物的优化程度不同。愚公没有在上面花时间,按照最常见也是最普通的方式进行。用代码说话的话,李冰是对其中一个小函数进行了调整。效率就完全不一样了。
说了这么多,作者的前两章用一句被说的烂透了的话来概括就是:勤于思考吧!
至于后面的六章,在我看来,可以另立一本,名字就叫《给项目管理者的一封信》。作者以其丰富的工作经验对一个开发团队,乃至于整个企业提出建议。无论是团队,沟通还是目前的形势,在里面都有涉及。由于我个人没有经历过进入企业工作的经历,父母也不是在企业中工作。所以这一块内容,即使看了三遍,依然看不太懂。我只能就我所能了解的,对其中映像比较深的地方发出我自己的见解。
以第四章为例,作者在第四章讲述了对他所理解的项目的沟通的理解。他指出,与客户的沟通并不简单。面对的对象不同,其所使用的方式也有所不同。UML做不到行遍天下。沟通也不是日常的聊天打趣,并美其名曰增进感情。事实上,项目的沟通是带有很强的目的性的。在快节奏的今天,用最少的次数,获取最多的信息量,才是最高效的办法。最后,作者提到了一个很新鲜的概念----一个项目的history。项目期间与谁联系,联系方式,如何设计,最初框架,测试用例及其报告等等。都是可以记录在案的东西,以便后来人的维护与继承。
总的来说,《大道至简》,读完之后确实是大道至简。这本书够简单,只有短短的一百多页,然后它包含的方面之广,所说的道理之深,确实让人很有感触,大有裨益。