我其实很喜欢这本书,他涉及的东西很多,代码,编程,思想,还有做人,这是本好书,我一直觉得一本书好不好看,有没有价值在于他的附加内容,他有没有展示给我们足够深邃的思想,足够多的想象空间,有没有足够浅显但又深刻的道理,这些,我都能从这本书中窥探一二。
这一期来聊聊这本书中我比较喜欢的几个思想
1.不求甚解。这本书是在讲思想,作者提到:‘’大多数人看书都希望学到一些招数、方法,能尽快在工作中用上,这是不错。但要想真正达到更高境界,就必须明白背后的道理。”我觉得这句话非常受用,我们有时候真的是不求甚解。我们看到一个程序时,只是做到了知其然,却不知其所以然。看到一段代码,我们往往想到的是,它能实现这样的功能,却不去想,编码者为什么要去这样用。我之前的学习就是这样,只去想着如何做题,却不想去吸收学习这一科的核心思想(舍本逐末不是吗)。最后结果就是我高数挂了T.T......核心思想很重要,可以说,比什么都重要 2.这是一个方针上的错误,语言是工具,没有好坏。说实话,我甚至到现在也还没被作者完全说服。学习c++的时候其实我就是比较懈怠的(虽然最后成绩很理想),因为我觉得以后我很大程度上不会用c来写程序。书中说“成天讨论这门语言好,或者那门语言坏的人,甚至是可悲的。不但是悲其一叶障目,更要悲叹于那种大愚若智的自得心态。”而现在我也想的通透了一些,每种语言都有其存在的意义与价值。比如说c,易上手,难精通,就很适合初学者了解计算机语言的思想。3.“简”,这本书的书名就叫做大道至简,所以核心思想肯定是与简有关比如作者提到的:“把代码写烂或者写乱都很容易,要想写得简洁却远非易事。代码写得太简洁,老板会认为你在偷懒”,简直了,我写c的时候就喜欢写的繁琐一些,害怕老师觉得我偷懒,但其实少,某种程度上说,就是好。文中提到,“我们写程序是为什么?是为了实现功能。工程只是一种实现的途径。最初做开发的前辈们,不用什么工程或者过程,也一样编出了程序,也一样解决了问题,也一样实现了目的。而现如今,我们讲工程了,讲过程了,讲方法了,却什么都再也做不出来了。”我们去套模板,去写繁重的工程,去用那些我们根本不熟悉的方法,我们反而忘了,我们为什么而写程序。“为工程而工程的人,都迷失在项目中了”,工程被当成了借口,掩盖了我们做事的真正目的。我们需要做的,是回归初心,是去思考,是从项目本身出发。“越是简单的东西,往往越是接近于本质。”反正我是深以为然
4.整理。第二章中作者提到的,整理桌子。“你既然知道如何把书分类、归整得整整齐齐地放在书桌,那怎么没想过如何把所学的知道分类一下,归纳一下,整整齐齐地放在脑子里呢?”
说实话,我真的很少想这种问题,但事实上正是如此。很多时候不会编程不是因为不会,而是因为太繁杂。没有头绪是因为我们没去整理。我们应该尝试一下分类,把既有的知识象桌子上的书一样整理一下,最常用的放在手边,而最不常用的放在书柜。选择我们需要的,舍弃我们不需要的,这样才能使我们的思路清晰,通透
5.“编程的第一要务是先把事情分析清楚,事件先后的逻辑关系和依赖关系搞清楚,然后再去代码实现。一接到任务就开始 Coding 的程序员,通常就是加班最多的程序员。只要开发人员将这个程序的算法设计出来了,把结构描述出来了,那么程序就已经定型了。”
这段话我感觉是最让我受益匪浅的了,作者提到编程序应该先搭框架,再进行填充。编程事实上是一件劳力活,劳心的工作应该在敲代码之前就已经结束了。相较之下,之前学c的时候几乎都是边写代码,别想着结构,最后调试时错误百出。这点学到了,以后再动手前应当把问题剖析清楚。
最后提一提作者最让我很受用的思想吧
虽变化万端,而理为一贯。编程是简单的。程序 = 算法 + 结构。算法是对一个程序的逻辑实现的描述,而结构是逻辑。再难的程序不过是算法和结构的集合体,而算法,所有的算法描述中,有且仅有三种执行逻辑:顺序、分支和循环。大而化小,小而化了。这是古人的智慧,如今仍然沿用。将问题拆分解决,化成一个个单位去解决,这就是计算机语言的核心思想
本书中还有大量的实践经验包括职场经验,我们放到其他几篇中写。