有好多次,我都問自己,學演算法到底有什麼用?
身為軟體學院的學生,學過C語言,學過C ,學過資料結構,學過演算法,在這幾門涉及到程式設計的課程中,我感覺演算法是用處最小的一個,當然,這裡的用處小指的是在工作以後。在工作過程中大多數時候並不需要去設計演算法,或應用到演算法導論上某個很牛叉的演算法,更多的只是一種把一個模組完成,把兩個模組整合,主要是設計模式和物件導向之類的觀點在發揮巨大作用,而演算法要有也就是簡單的資料結構,甚至完全不需要任何演算法,我猜在JAVA那種更多的是模組搭建的過程中這種情況應該不少見。
周圍有那種ACM的牛人,POJ上排名前十,但是到了工作中,他的這種演算法技藝似乎對他的工作並沒有什麼幫助。他也就是每天用JAVA寫點東西,然後測試改點BUG,完全涉及不到什麼DP,什麼貪心,什麼圖論。只要實現功能了,用什麼都無所謂,這種想法應該存在。不是每個人都能去微軟亞研院這種對演算法要求很高的研究機構,去一般公司只要會種語言,懂點技術,做過項目,基本就能滿足條件了,至於面試的時候可能問幾個資料結構題,根本不會讓你現場寫一個DP演算法,或是拿一道ACM題讓你說思路。研發團隊都不太需要演算法,至於測試團隊就更不用說了。
那學演算法到底有什麼用?其實這個問題很像學數學到底有什麼用一樣。工作以後還有誰要會算一個積分呢,或是求個極限,甚至連解個一元二次方程組都罕見了。和一個已工作一年的學長聊天,他說到資料結構,設計模式,作業系統還有英文這些很重要,至於演算法根本沒提,當然也不會提微積分了。
我覺得,如果按照數學給人思維,教人思考這種觀念去想,演算法也是如此,演算法本質上來說也就是數學,例如組合數學裡面就有很多演算法,還有離散數學也是。很多時候,這些知識用不到,就算用到了也可以透過查書現看一番,然後過不了多久又被遺忘。成為一個一般的程式設計師並不需要學多少演算法,只要那些立志成為優秀的程式設計師的人們才應該學點演算法,無論是對自己的思維或是對自己能力的提升都會有好處。也許在一群程式設計師中每個人都會設計模式,都精通C /JAVA,但是如果你精通演算法,那你肯定就能技高一籌,即使用不到,那也是你砝碼,懂得比別人更多並不是壞事。
以上是學演算法幹嘛?的詳細內容。更多資訊請關注PHP中文網其他相關文章!