02《大道至简》读后感
通过开学的一个月,利用课余空闲时间,我阅读了周爱明老师的《大道至简》。这本软件工程方面的著作让我深刻地认识到了编程思想。 本书被誉为“激荡新思的佳作”,他所传达的不仅仅是编程的语言,而是思想。此书一共十一个章节,其中每个章节都有几个小节,而每一个小节都有一个生动且丰富的标题直指中心,框架结构比较明显,让人读起来并不那么枯燥乏味。内容中不乏很多有趣又引人思考的小故事,让我读来更容易领会作者的意图,收获良多。 例如,在此书的第一个章节,周爱民老师便提到并引用了一个家喻户晓的故事——愚公移山,不过这次他要传达的思想并不是平时老师所说的子孙相传,水滴石穿的精神思想,而是愚公在移山之前所召开的家庭会议上表现出的思想。将一件看似不可能的复杂的事物进行分工简化,最后成为一份十分简单的工作,输入终止的条件以及命令进行循环。这或许便是世界上最早存在的编程思想。这在我的java老师上课时也是有提到的:复杂事情简单化,简单事情流程化。不断地拆分,直到把问题分解为自己可以解决的小问题,而不是一开始就想着吃“大饼”,拼命着手于细节的落实而忘记框架的构成。 在第二章中,用愚公移山“碎尸击壤”与李冰凿山“积薪烧之”来提出懒人造就了方法,人的精力终归是有限的,提出新的“方法”,解决的将是影响做事成效的根本问题。我认为,懒人是聪明人,固然做事需要勤奋,但也要讲究方法,勤奋的人会觉得世上无难事,只怕有心人,而聪明的人则会想方设法,追求效率,突破人精力的极限。第二章的最后一部分讲述了面向对象与面向过程的区别。面向过程是对流程、结构和编程方法的高度概括,面向对象本身只解决结构和编程方法的问题,而并没有对流程加以改造。 还有一个让我比较注意的是,《大道至简》中提到:程序=算法+结构。算法是对一个程序的逻辑实现的描述,而结构是逻辑实现所依附的数据实体。 这是对编程的一种简单明了的描述。编程的本质是一种行为,下达一个命令,以计算机的语言表达,我们要把一件事情交给计算机去做,就需要去告诉计算机,该如何去做,计算机不是人类,他不会思考,只会木讷地执行任务,所以我们要简单直白的告诉他这些命令的含义。当然,如果你不给计算机指令,计算机是不会去执行的。我们在告诉计算机该怎么做的时候,一定要分好顺序,先干什么,后干什么。把事情的逻辑关系和先后关系分清楚,然后通过输入的代码告诉计算机,它通过我们所给的代码去实现我们的要求,这便是编程。 在阅读本书之前,我对编程的认知非常浅显,也只学了c/c++的一点皮毛,可能让我看代码能看懂每步在干什么,但是自己动手写时破绽百出,思路不清晰,语法有问题等等。 我把这归结为是编程太难了,太复杂了,甚至有点逃避思考,觉得写代码实在是一件疲倦且困难的事情。但事实上,对任何的学科来说,都是要充足的知识储备才能做到“游刃有余”的,在传统的固有认知里,编程很难,实际上,它也很简单,因为它是如此纯粹,工具上,一台电脑足以;思想上,掌握一门编程语言就行。该怎么合理地运用你的知识储备,发挥到最大,才是你要做的,而不是还没开始前就把自己吓倒。 程序的结构:顺序、分支和循环。无论是什么样的工程,即使是像“愚公移山”这样庞大的工程,当有了项目需求,再确定整个项目的工作流程,其中包含必须的顺序、分支和循环结构,都是可以通过简单的编程来实现的。而顺序、分支和循环结构便是编程的精义所在。要真正学好编程,就得真正吃透这三种程序结构,学以致用。 最后,感谢《大道至简》,在今后的学习里,会注意从前的思维误区。