《算法图解》观后感

算法,我该拿你怎么办?

写这篇博客倒不是为了蹭现在算法的热度,而主要是为了下面两个目的:

  • 推荐一本算法幼儿园级别的入门书籍《算法图解》
  • 思考算法跟业务开发程序员的关系

如果是像我一样干业务型的程序员,对算法估计都没有什么很深的感觉,因为一般的难点都在于如何快速响应产品那边来的各种需求,还有修复自己亲手写的Bug,算法,好像在我们的生活中真的不常见,但是一旦去刷招聘信息,就会发现别家公司面试时都会考算法,甚至自己公司都会考,但是,既然在工作中不常见,那么为什么要对算法有这么深的执念呢?展现一个技术人员对于技术的执着?还是想考考他对于技术的积累?这里我是真的想不通。

而且对于我来说算法最大的问题就是他给人的回报实在太低了,你花一段时间去学习算法,然后到工作中,一段时间没有用 ,就荒废了,然后到了必须要捡起来的时候,估计早就只剩一星半点的印象了,所以,那段时间就像被狗啃掉一样,剩下的都是眼泪了。

再来是现在的环境下,学点东西的时间本来就少,要学的东西更是多如牛毛,所以,算法这种投资回报率这么低的东西,真的要学吗?

上面是我遇到的问题,接下来就是我的个人想法了。

算法要学吗?

当然要学,但是问题的重点不是你是否学了算法,而是时间和目的,以及你个人身份的配合。

我想如果想到算法,主要会有以下这些内容:

  1. 算法如何实现?
  2. 算法能解决什么问题?
  3. 算法产生的思考逻辑,过程
  4. 这个算法叫什么名字?
  5. A算法和B算法之间的关系是什么?

然后很多人学算法估计就死在1,2上了,我们一般怎么学算法?跟着书本,或者教学视频等,直接从2开始,接下来是1,延伸一下的话,可能还有3,5,这样的步骤,让很多人可能花了一天时间,才能写出一个算法的具体实现代码,而这样搞了一天之后,就没有更多的时间或者精力来弄剩余的内容了,于是这样,学习算法就变成了一件为了应付面试而去做的事情了。

那么在上面的流程中,问题出在哪里呢?我觉得首先就是你对算法的目的上。当我们兴致勃勃打开一本算法书时,或者我们抱着对算法的久仰大名的心态来学习算法时,我们有没有想过我们希望算法能带给我们什么呢?是思考问题方式的改变?是对我们现在编写代码的效率上的提升?还是为了我们个人的兴趣爱好呢?

当我们没有想好这个最开始就想好的问题时,一个最简单但是也是最容易忽略的问题:我们需要掌握算法到什么程度呢?

如果我们只是为了解决一个问题而借用某种算法,那么各种语言的对应代码早就有人写过,我们干嘛要自己作死再写一次呢?

如果我们是为了改变我们思考问题的方式,那么我们需要去编写真实的代码吗?我们不应该更加关注算法中对问题的拆分和递归的过程吗?

如果单纯为了兴趣,那么,你为什么会在看这篇博客?这篇博客对你来说简直就是毒药啊。

所以,我觉得学习算法不需要走完完整的1-5,看你对算法的需求,只需要完成你需要的部分就可以了,感觉这样更加适合当下这样高节奏的生活。

算法什么时候学?

上面我们说了学算法的目的,下面就是时间了,在我们的职业生涯,或者说职业生涯开始前的准备阶段,我们应该在哪个阶段学算法呢?比如我现在工作2年多,学算法晚了吗?不学算法我就很难学一些高深的知识吗?

我觉得算法什么时候学都不算晚,难得是学了后如何对你产生实质性的效果。比如我现在问你,如果采用算法安排自己的人生,那么你应该采用什么算法?如果你采用贪婪算法,那么你会有什么样的人生?动态规划呢?还是说这是旅行商问题,无法给出一个最佳答案呢?

打个赌,你现在思考的不是我上面问你问题的答案,而是在想动态规划是啥来着?旅行商问题是啥问题?

所以,问题的重点不是你什么阶段去学算法,而是学了算法之后对你能产生什么影响。如果你思考了这个问题的答案,结合上上一个问题的答案,你可能会更加理智的去选择去学习算法。

菜鸟怎么学算法?

这里看起来就是我要开始推销什么东西了,那么你们可以放心,我只是推荐一本书,而且我没有任何广告费(替自己默哀),所以你们可以放心看下去。

这本书就是《算法图解》,其中的内容简直就是幼儿园级别的,你可以很轻易的理解其中的内容,其中最最重要的就是大O表示法。这个大概是一些人学算法时最容易放弃的地方,就这点来说,这本书倒是解释的很简单,起码真的帮我迈过这道坎了。

再来就是一些小建议了,就是跟着这本书学的时候,最好把例子自己也画一遍,自己也走一遍流程,这样的一个过程可以让你对算法有更加深入的理解,甚至可能带给你不一样的思路。

如何甄别市面上的算法资料?

这是个很有意思的问题,市面上的算法资料简直不要太多,但就网课资源来说,可能偏少,最多的还是国外某高校九几年的一个,一个光头大哥讲的视频,但是那个视频真的不适合小白入门,所以,还是回到上面最开始的问题,如果你跟我一样,对于算法只需要大概了解的,那么《算法图解》对你来说真的是一本很好的书,如果你还有更深入的了解,那么也希望看到这篇博客的人能慷慨推荐一些资料给我。

总的来说就是,不要陷入那种很难得,专门为算法人员设计的学习内容中去,那只会让你放弃的更快,同时对你产生的帮助更加少。

以上这些就是所有我想说的了,谢谢观看了,如果有不同意见,评论区见。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章