算法開始

  因爲本專業是軟件工程專業,因此課程多接觸的比較多到的是軟件工程技術,本人對計算機系統的知識如操做系統、計算機網絡、數據庫知識、以及編程語言設計理論比較感興趣,操做系統學習的初衷源於大學時小夥伴對於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++

相關文章
相關標籤/搜索