在《大道至简》里,作者直截了当地点出了很多问题,其中有很多问题也正是我所存在的;当然也给了方法和建议,也是非常值得我去思考学习。同时,我也接触了一些新观念思想,让我恍然大悟。
就拿做编程题的第一反应来说,我一向是怎么做的呢?读完题便立马开始敲代码,然后便是边思考边敲。说实话,老师也不是没有说过要先画流程图,起码知道大致思路,但却一直没养成这个习惯,也没有像改变的想法。这次读里面编程的精义,里面程序=算法+结构真是让我有了新的认识。它没有任何的地方提及到 Code。甚至可以说,在这个公式里,代码是不存在的。存在的只是思想。算法是对一个程序的逻辑实现的描述,而结构是逻辑 实现所依附的数据实体。只要开发人员将这个程序的算法 设计出来了,把结构描述出来了,那么程序就已经定型了。剩下的事,简而言之,就是劳力活。到此,我才发现原来我想做的被称为劳力活及我懒得思考的现实。还有一个改变的必要性,如果写到中途突然发现行不通,那前面写的一些可能也需要改变,这就大大降低了效率。所以,得改变了,至少是对将写程序在脑中过一下,有大致的一个思路,明确要用的算法和结构。
并且在所有的算法描述中,有且仅有三种执行逻辑:顺序、分 支和循环。简单若顺序表,复杂如树、图,它们的算法都 是用上面这三种执行逻辑来描述的。所以一旦确定了算法和结构,程序就便有了。
还有一个关于各种编程语言的误解,之前我认为不同种编程语言是可以分出个好坏的。现在才打破这个误解,语言只有喜欢与不喜欢,而无好与不好。它们的差别主要表现在适用范围上。一些语言适合做数值处理,小数点后可以精确到原子级,而小 数点前则可以表达到宇宙之无穷;另一些语言则适合做图形处理,它的底层函数库比其它语言可以快上十倍或数十倍;还有一些语言则适合于做网页,要用它来做一个通讯薄软件都将是史无前人的挑战。
同时,也认识到在编程里懒是会 促就新方法的。书中拿愚公和李冰作比较,二人同时凿山,方法却不同。愚公就是简单地“碎石击壤”,而李冰已经懂得“积薪烧之”了。造成李冰进步的原因不是别的正是“懒”。对于愚公来说,他会起早贪黑努力凿更多碎石,干更多活,以来加快速度,让效率更高。而李冰呢,他不像愚公那样肯努力付出,所以他便会绞尽脑汁想出更高效简单省力的法子。我也是从这里明白了有时候行为懒是可以的,但万万不可思想懒。用书中的话说就是,积极工作和勤于思考都要占时间。
总之,这本书中让我更深刻地认识了编程、程序,受益匪浅。接下来会继续好好阅读这本书,争取学到更多有用的东西。