大师兄

结束语 | 不忘初心,方得始终

你好,我是胡光。

今天,是我们这个专栏的最后一节课。在这节课中,我们不谈算法,谈谈这个专栏的初心。

在这门课里,我们讲了很多经典的算法,从排序到数据结构、搜索、位运算,再到最后两段神奇的代码。每一个模块,我们都是从问题出发,再去一步步地解决这个问题。但这短短25节课,不可能覆盖到所有算法,尤其对现如今的计算机领域来说,问题总是比算法要多。所以这25节课的内容,仅仅是沧海一粟,甚至可能也无法覆盖到你当前最迫切的需求。

那你有没有想过一个问题,我们学习这门课,最终到底是为了什么?

答案就是之前我一直在提的一个词,算法思维。算法思维是什么意思呢?其实就是指算法在被设计出来之前,设计者究竟在想什么?你可以回想一下我讲解每一个算法的过程,其实我都会试图去拆解这个算法想要解决的问题是什么,有什么样的思路,去剖析算法中每一个核心改动的思考来源是什么,或者说我们在试图还原算法设计者在解决这个问题的思路。这才是这个专栏中,我最想要带给你的东西。

在武侠小说中,顶级的高手往往是在一定程度上洞悉了武功的本质,有着超强武学境界的人。比如萧峰,论内功并非顶尖,但仅仅使用一套太祖长拳,就可以杀遍聚贤庄的高手,可以将降龙廿八掌变成威力加倍的降龙十八掌。哪怕是令狐冲,他所使用的独孤九式,这种完全从技巧、招式出发的武功,到了最终的破气式上,还是要归结到武学境界上。武侠小说中的武学境界,到了计算机中就是算法思维。

所以,我希望你在学习这门课程,或者在学习算法的过程中,不要去纠结到底学会了多少书本上的算法知识,而是你是不是学会了去分析、去理解算法中所蕴涵的算法思维。

同时,我也希望你不要去纠结我学了这个东西有什么用,比如有的同学会留言问我,”老师,这个算法我在实际中工作用不上啊“,或者“老师,这个题目我在刷题的时候也没刷到啊”,甚至可能还有同学会想,“老师,这个题目我在面试中也没被问到过啊”。

我完全理解这些同学的想法和心理,但是算法思维不是为了我们传统意义上的“有用”而服务的,而是为了提升你的境界,提升你解决问题的能力。就拿刷题来说,题目总是刷不完的,每天都会有无数的新题产生,那你能找到合适的老师去学习所有新题的解法和技巧吗?当然是找不到的。这个时候,算法思维就能保证在碰到了新问题时,你可以有办法去解决它。

我们再拿面试举个例子,面试的时候,面试官从来都不是在考察你的记忆力,他其实就是在考察你的算法思维能力,你的基本功,以及你解决问题的能力。

当然了,不仅仅是计算机,在很多其他的领域,洞悉了本质的人往往也会走得更远。比如说,克劳德·香农建立了信息量这个概念,让很多事情变成了可能。再比如说学习一门语言的人,如果看到了这个语言本身的语言学特征,学起来就会更加容易。

如果你迷茫于怎么样去得到这种思维,怎么样去提升境界,不妨从利用我前面讲到的几种思维方式去解决眼前的一个个问题开始,看能否打破已经学过的算法给你带来的思维定势,去设计出解决问题的好方法。

到现在为止,我们的专栏就告一段落了。今天,我希望你能记住一句话,算法思维,让我们在面对新问题的时候不会手足无措,是我们披荆斩棘最有力的武器。

最后的最后,我还为你准备了一份毕业调查问卷,题目不多,希望你能花两分钟的时间填一下。一起走过了这些时间,期待听到你对我和这个课程的反馈和建议!

我是胡光,江湖很大,我们有缘再见!