我对学习算法的几点看法

我不知道我什么时候开始学习算法的,现在想想,我压根原本就没有系统地学过算法,也没上过此类的课程,记得之前翻了一下计算机学院的培养方案,包括很多计算机本科必须要学习的课程,例如计算机组成原理、操作系统、计算机网络、算法导论(貌似中英都要)等,然后再涉及一系列的基础语言,例如汇编、C/C++、java,还包括一系列的数据库,所以比起我自己学习的专业实践性确实拉了几条街。而看算法可能还是大四的时候专门看了一本《算法导论》的书籍,现在想起来,感觉那么厚的书,在很短的时间看完了,确实对自己太不负责了,后来看见网上搞促销也买了一本,听说还有一套叫《计算机程序设计的艺术》,不过那种书按照我现在的天分还是不敢去涉及。

我有对学习算法的几点看法,主要是看了刘未鹏先生的这篇文章,叫做知其所以然(三):为什么算法这么难?产生了一点启发,顺便把自己的想法记录下来。

正如那篇文章所描述,很多人学习算法难度分为两个过程,一个是学习算法难,第二个是设计算法难。

很不幸,我自己目前还处在第一个阶段,在这个阶段我发现我有了如下的几个毛病:


1、针对于某个算法都是以一种死记硬背的态度来强记;

2、自己心里认为是利用理解的方式,也看过相关证明,不过真心想想,依旧还是死记硬背;

3、过个一段时间之后,算法的内容还是会忘记,例如一些简单的排序、搜索算法等;

4、可能是数学功底不足,总感觉不能够全部吃透

5、对于深入内部操作原理,还是有一定的距离。

以上几个毛病都是我当时在学习算法的过程中所遇到的,或者当时因为想考研的缘故,带着一种急功近利的思维去学习这些内容,再加上时间的紧迫性,大学又没学过,所以确实无法深入。

记得当时自学数据结构的时候,听说很多人研究这玩意是花了很长一段时间,有些人是几年时间,当时确实感到很不屑,后来想想确实是自己太无知了,仔细想想,在你知道之前没有这若干的资料出现,你能否会想到这些方式,又是否能够想到很多新的方式。

后来在大四的时候,看过很多计算机的论文,同时,看了一些数据挖掘与机器学习相关的知识,有印象的也就只剩下例如聚类、协同过滤、推荐这些,不过真叫我去通过它们来做点什么,三个字,省省吧。

之前在知乎上看过一篇文章,叫做作为一名做 Web 开发的 Java 工程师,算法在工作中基本不怎么用到,但为什么面试总会问算法的问题?我也下定决心有空将算法仔细研究一下子,不能做半吊子。

这几天一直在准备一些书籍,其中包括数学、算法、分布式、数据挖掘等方面,我觉得既然想进入这个门还是需要跟上时代,这也是对自己的一种鞭策。

记得之前天猫的技术hr和我说了这样一句话,如下:

如果你对hadoop感兴趣,你会花费比常人更多的精力,否则你只是自己在骗自己,还认为自己很刻

苦很努力,既然选择这条路,你就要花费比其他人多若干的时间,做一行爱一行。

现在想想,自己也面试过了一些企业,而真正问我算法的确实很少,基本上都停留在语言使用的层面上,又或者出一点简答的排序,而绝大部分都是站在业务层面上考察,现在想想也许是与学习的语言有关,所以后期也给自己安排了计划,逐一补充。

算法是王道,语言是解决问题的工具。

希望自己以后也能够达到这个境界。

(完)



Previous     Next
mjgao /