語言只是工具,,而算法才是程序的靈魂,。這句話,我估計你在編程之路上,,已經(jīng)聽到過無數(shù)次,。但具體到工作里,你是不是還會有下面這樣的困惑,?
那今天我就來詳細聊一聊,為什么要學習數(shù)據(jù)結構和算法,。首先我先問你個問題,,作為一名開發(fā)工程師,你真的愿意做一輩子的CRUD boy嗎,? 我知道,,大部分的程序員整天做的事情就是增刪改查,在所謂的“業(yè)務開發(fā)”工作里,,更多的是利用已經(jīng)封裝好的現(xiàn)成的接口,、類庫來堆砌或者翻譯業(yè)務邏輯,這其中很少需要數(shù)據(jù)結構或者算法之類的知識,。 但是,,不需要自己實現(xiàn),并不代表什么都不需要了解,。 舉個例子,,如果你不知道這些類庫背后的原理,不懂得時間,、空間復雜度分析,,那你又如何有信心能用好、用對它們?存儲某個業(yè)務數(shù)據(jù)的時候,,你如何知道應該用ArrayList,,還是LinkedList呢?調用了某個函數(shù)之后,,你又該如何評估代碼的性能和資源的消耗,? 初級程序員才比招式,高級程序員只看內功,。 一個簡單的ArrayList,、Linked List的選擇問題,就可能會產(chǎn)生成千上萬倍的性能差別,。這個時候,,數(shù)據(jù)結構和算法的價值就完全凸顯出來了。如果你理解他們背后對應的數(shù)據(jù)結構,,那就可以迅速看到這些類背后的本質區(qū)別,,那個時候,你根本不用死記硬背,,自然理解什么樣的場景里該選擇什么,。 在西安交大讀研究生的時候,一個師兄給了我一本《算法導論》,,從此我便一頭扎進算法世界,,到現(xiàn)在也十多年了。這期間,,我研究過數(shù)十本數(shù)據(jù)結構與算法的書籍,并對它們進行了仔細地對比,、分析,。 我發(fā)現(xiàn),像《算法導論》這些經(jīng)典書籍,,雖然很全面,,但是過于缺乏重點。很多人學起來都非常困難,。而市面很多在線課程或者線下課程,,大多是為了“應試”,只講一些看似通用,,實則脫離真實開發(fā)場景的內容,。費勁學完感覺根本用不上,過不了幾天就忘了,。 |
|
來自: 漫步之心情 > 《B通信☆量子5工程》