算法开始

  因为本专业是软件工程专业,因此课程多接触的比较多到的是软件工程技术,本人对计算机系统的知识如操做系统、计算机网络、数据库知识、以及编程语言设计理论比较感兴趣,操做系统学习的初衷源于大学时小伙伴对于linux 的着迷,所以我也跟着入坑,操做系统是程序员天天接触到的系统,掌握了知识后,便会有掌控的快感。而计算机网络的兴趣则源于linux下的编程,由于涉及到网络编程,因此对计算机网络也有比较大的兴趣。对编程语言设计理论的兴趣起于本科接触了不少的编程语言,java,c/c++,js,php,python,c#为什么有这么多语言,以及语言设计的初衷、起源、能够解决什么问题。学习了这么多编程语言后以为新语言是不断出现的,所以想掌握更高层次的知识,从一个更高的高度就看待编程语言。php

  对于算法一直是内心的一块心病,由于感受本身从未进入算法之门,身边总有人在讲算法,面试老是在问算法,可是由于周围同窗没有作过ACM,所以没有学习算法的动力(可能那些大牛学算法的初衷就是ACM,得奖,只是后来才意识到算法的重要吧,感受他们赚了很大的便宜,对找工做颇有好处)。找工做和实习的时候单纯从准备面试来学习算法其实就是刷题,由于常常问的就是那几个题,所以会写就能够了,也没想太多,由于内心不是主动学(虽然知道面试有用),内心甚至有些小小的抵触情绪。一个个刷题,刷一些彼此没有关系,不成体系还特别晦涩的题目有意思吗,看算法书那看N遍都不必定能看得懂记得住的东西是在找虐吗。人是个颇有趣的动物,作事是须要动机的,只有内心彻底接受这个东西认同这个东西才会行动,可是一旦行动起来,那股子韧劲又会让人难以想象(看了下一些大牛的博客,这里就不说明了,又是研究人脑又是引经据典去找证据的,我的感受忒累,并且若是真的有所谓的认知或学习方法论的话,掌握了岂不是世界无敌了。人类须要的简单的动机,至于方法真的用简单暴力的便可,好的方法只是起一个加速做用,没那么那么重要。若是有所谓的元知识,那机器学习为什么还不能知足人的要求,还须要大数据)。学习算法能够是由于ACM队里有个特崇拜的队长,有高大上的联系场地,这里突出了环境的重要,环境给人最直接的感官刺激。固然这里我不是要给读者们提供一个环境,而是要提供一个动机。就像喜欢一我的就是凭感受,饿了才吃饭,睡饱了才起床。java

  算法首先是一个基础,是学习计算机专业的基本功,而不是一个个oj上毫无心义的题目,意识到算法的重要性是必要的,算法其实存在感挺差的,由于都被封装成库了(一些人喜欢分析库,其实了解语言自己的同时,里面常常性的用到算法,工做中用到的算法都是用来解决问题的,而成熟的算法都被封装了)。稍微接触过算法的人都知道,算法围绕的是数据,离不开数据结构。计算机中最重要的是什么,是信息,是数据,为何说二十一世纪是信息时代,就是指的这个。在处理信息得过程当中,人们总结了一些与信息密切相关的问题,这些问题如此常见,到了必需要总结成方法论的地步。都是些什么问题呢,就是面试的时候常常问道的字符串、排序、编码、搜索、图(信息流动问题)。总之,算法就是问题问题问题,分类分类分类。学操做系统是为了了解底层知识,丰富计算机体系知识。学网络是为了网络编程(由于当初为了沟通计算机这个问题已经解决了),学编程语言设计理论是为了了解PL的本质。而学算法就是为了解决问题了,信息处理的问题,这也是为何不少算法比赛叫信息学竞赛的缘由吧。那学操做系统必定要去heck kernel,读linux源码吗,学计算机网络必定要深刻了解协议吗,学PL theory必定要精通lamda演算,精通编译器吗,算法这东西看个差很少懂就行吧。我学linux kernel彻底是凭兴趣,没有说精读哪子系统的代码,学网络也没写太高并发的框架,甚至学PL还处于一个刚开始的阶段。怎么说呢,感受什么都涉及可是没有精通吧。下一阶段想精通linux kernel也只是在对linux知识掌握了够多的状况下想深刻了解一个模块。所以我以为学习算法不要先想着精通,而是随本身的兴趣由浅入深,而后重点去学某一类问题。我想ACM队在参加比赛的时候每一个人的侧重都是不同的,你可能搜索比较厉害,而我可能图比较厉害。更不要一开始把目标定的很高,有的时候过于深刻,多是一种无用功,构建本身的知识体系才是重要的。不可否认ACM在知识体系培训和训练强度上是优于大部分人的,可是规范的培训不必定能造成好的知识体系,并且咱们学习算法更重要的是为了知足一个优秀工程师的工做能力,固然更为实际的还有面试能力。无需过于深刻,对于工做的同窗来讲,发现更有价值更有乐趣的才是重要的。另外不能只看不写,由于写程序才是更大的乐趣哟哈哈python

  对于本身,其实没有ACM这种功力的东西学习的动力仍是不好的,毕竟只是基础,所以仍是兴趣驱动吧,不过注意必定要有的放矢。我是有多懒,连面试都不算动力嘛,可能面牛公司的话动力就大一点了吧。不过对于操做系统,兴趣驱动以外我也已经想要深刻了解子系统了,由于可能之后工做须要,并且之后的工做我肯定应该会用到。我感受个人职业生涯会或多或少的跟个人兴趣挂钩了,所以兴趣驱动的学习仍是对本身影响很大的,到后来可能本身的生涯应该脱离不了本身兴趣造成的知识体系。根据本身的性格,喜欢随性自由,目前可能只限于技术层次,所以我在学习的时候应该不能只停留在理论而是要用工做来提高,同时还能积累经验,不至于被人说是纸上谈兵。研究生的败笔就是兴趣没能和工做挂钩,想一口吃个胖子(去bat或者微软亚洲研究院实习,其实他们想去并没那么难),结果老吃不着,不如先从通常的作起。linux

  那如今算法我先从兴趣开始,而后不断增强学习,并在须要的时候加大强度。c++

相关文章
相关标签/搜索