注:我忘记老师要求什么时间之前提交了,之所以发了这么晚是因为我觉得要写读后感的话最好还是把一本书读完了再写读后感比较好。但是直到今天晚上我发现,由于我的变成基础并不扎实,编程的造诣也并不深,所以在这短短几天之内根本不可能读完这本书。当然囫囵吞枣不求甚解倒是没问题,但是要大致读懂意思却是几乎不可能。所以只好写读后感写到第一二章。
第一章标题是编程的精义,讲的是如何用最朴素最大众最傻瓜的方法编写出一个程序。以“愚公移山”的故事贯穿全篇。愚公首先有用户需求,即被两座大山挡住了门。有具体的目标,也就是搬走这两座山以便让自己和家人出入方便。接着是项目小组讨论——聚室而谋;并且有项目的执行人和管理者——愚公的三个儿子干活,愚公是管理者;有项目的协调人——那个三岁的小孩子;有一定可实现的方法——山不加增,而人可以不断的像蚂蚁一样搬运。有分支——“虽我死,有子存焉”,世世代代,总有把山搬平的一天。这里又出现了循环的思想。所以一共出现了三种结构——顺序,分支,循环。
然后以此来类比做出一个程序——
step1 明确用户需求
step2 明确目标
step3 可行性分析
step4 明确具体步骤
step5 利用“顺序,分支,循环”三种结构实现程序
这个思想没有错,然而我认为书上对故事的分析有些错误。我认为具体的目标应该是愚公一家要出门以后就是平地,交通方便,不被山阻挡;而搬山只是为了实现这个目标的一个手段,后面的步骤等是把搬山这个任务分析分解。可以认为愚公为了实现一个如此简单的目的,却要付出如此巨大的辛劳和努力,搭上自己不说还要搭上自己的子孙多少代,简直是一个大傻瓜,难怪他叫愚公。首先第一个方法最简单,直接把房子的门换一个方向开就行了;第二个方法是搬家,搬到平原区,交通方便的地带。第三个方法是像李冰修筑都江堰时开山一样,用火烧,直接烧裂就行。不过第三种方法对于朝廷来说还可以,对于愚公这种人家来说依然是个几乎不可能完成的任务。
所以,类比到软件工程,应该可以这样理解——客户就相当于愚公,目标是赚钱或管理,方法是要一个软件。而软件公司或者程序小组就相当于愚公的三个儿子,要做的工作是搬掉山。客户不用第一二种方法赚钱是脑子抽风还是什么暂且不谈,我们要做的事情确实是搬山,不能跟客户说“你应该换一个赚钱的方法,比如开个饭店或者开个文具店什么的”。所以只能想第三种方法,就是本书的第二章讲的东西——懒人有懒人的方法。这里其实不是懒人,而是有大智慧的人。做事要改进方法,搬山如此,编程序亦如此。也许我们可以借助些外力来完成这项巨大的工程——比如上GitHub上面找找有没有合适的框架,或者有没有什么经典的模板可以简单改一改以后直接套用。当然我并没有学过软件工程所以不是很了解,只能说个大概
总之编程序也要讲究方法——我觉得c++的面向对象编程就很好,可以把一个大的工程分给若干个人,分别完成。