暑假开始后,我花了两个星期粗读了周爱民老师的《大道至简》。这本书,怎么说呢,让我有一种耳目一新的感觉。在读之前,我觉得这本书应该是教一个人用更简单的手法写软件——“大道至简”嘛,不就是“软件至简”,也就是说,我一开始认为它在讲方法。但是我错了,它讲的是更抽象的东西——软件工程实践者的思想。
这本书内容,老实说很符合110页这么薄的书,因为写的的确是很通俗易懂了。周爱民老师也是很厉害了,能把思想这么抽象的东西具象,并且讲的头头是道,让人忍不住有一种“喔!原来还可以这么想!”的感觉。
比如第一章,周爱民老师讲了愚公移山的故事,用编程这个角度去理解很有特色。然后,程序=算法+结构。还记得这个公式么,这是在C程序设计中开篇讲到的,当时我们怎么理解呢:圈住圈住,这个考试填空要考!程序=算法+结构,程序=算法+结构,程序=……就是这样。然而结合上周爱民老师的讲述,我们突然发现:对哦,这个等式竟然没有代码!!我们天天编程序,不就是编代码么?怎么会这样?重要的不是代码,而是思想!“算法是对程序的逻辑实现的描述,结构是逻辑实现所依附的数据实体,只要开发人员将这二者描绘出来,程序就已经定型了,剩下的都是劳力活”。所以,我们所叫苦叫累的,都是程序最后工作的“边角料”。
在第二章,周爱民老师重点讲述了“方法”的重要性。以李冰和愚公为例,李冰思考了,于是他“积薪烧之”,“凿离堆”。而愚公是一个想到就做的人,于是他“碎石击壤”,山“何苦而不平”。李冰和愚公都做的是开山改河这样庞大的工程,而二者都做到了。那么如果是你,你选择哪种方法?是李冰的“积薪烧之”,还是愚公的“碎石击壤”,然后“子子孙孙,无穷匮也”?我想答案应该很明确吧。
还有,在第三,四章,周爱民老师重点讲述了团队开发程序的内部分工的明确性、配合的重要性及团队内部产生的矛盾,还有对客户的沟通以及其重要性。
由于在一开始,我们学习的还是很简单很简单的程序,所以我习惯了在源文件中直接写上一个main.c文件,然后将代码全部打在这一个文件中。即使后来学习了C++,有了类之后,还习惯这样,造成难查错误的困难。此外,我还习惯在完成程序的时候,打开vs,然后就坐在电脑前编代码,根本不先做出一个初步的思考再去写程序,这和愚公有什么区别?
读了《大道至简》后,我的确有了一些懵懂的感悟,也有了一些曾经不懂的问题的答案。但我能感觉到,我依然有很多没有理解的,读不懂的地方,我希望在我以后的编程生涯中,能够理解这些话的意思。