當前位置:
首頁 > 科技 > Google工程師:如何看待程序員普遍缺乏數據結構和演算法知識?

Google工程師:如何看待程序員普遍缺乏數據結構和演算法知識?

語言只是工具,而演算法才是程序的靈魂。這句話,我估計你在編程之路上,已經聽到過無數次。但具體到工作里,你是不是還會有下面這樣的困惑?

數據結構和演算法,跟操作系統、計算機網路一樣,是脫離實際工作的知識。除了面試,我可能這輩子也用不著。

就算不懂這塊知識,只要 Java API、開發框架用得熟練,我照樣可以把代碼寫得「飛」起來。

那今天我就來詳細聊一聊,為什麼要學習數據結構和演算法。首先我先問你個問題,作為一名開發工程師,你真的願意做一輩子的 CRUD boy 嗎?

我知道,大部分的程序員整天做的事情就是增刪改查,在所謂的「業務開發」工作里,更多的是利用已經封裝好的現成的介面、類庫來堆砌或者翻譯業務邏輯,這其中很少需要數據結構或者演算法之類的知識。

但是,不需要自己實現,並不代表什麼都不需要了解。

舉個例子,如果你不知道這些類庫背後的原理,不懂得時間、空間複雜度分析,那你又如何有信心能用好、用對它們?存儲某個業務數據的時候,你如何知道應該用 ArrayList,還是 LinkedList 呢?調用了某個函數之後,你又該如何評估代碼的性能和資源的消耗?

初級程序員才比招式,高級程序員只看內功。

一個簡單的 ArrayList、Linked List 的選擇問題,就可能會產生成千上萬倍的性能差別。這個時候,數據結構和演算法的價值就完全凸顯出來了。如果你理解他們背後對應的數據結構,那就可以迅速看到這些類背後的本質區別,那個時候,你根本不用死記硬背,自然理解什麼樣的場景里該選擇什麼。

在西安交大讀研究生的時候,一個師兄給了我一本《演算法導論》,從此我便一頭扎進演算法世界,到現在也十多年了。這期間,我研究過數十本數據結構與演算法的書籍,並對它們進行了仔細地對比、分析。

我發現,像《演算法導論》這些經典書籍,雖然很全面,但是過於缺乏重點。很多人學起來都非常困難。而市面很多在線課程或者線下課程,大多是為了「應試」,只講一些看似通用,實則脫離真實開發場景的內容。費勁學完感覺根本用不上,過不了幾天就忘了。

鑒於此,我很想做一個能讓工程師真正受用的,能夠不拘泥於編程語言,與實際開發場景聯繫緊密,而又能夠幫你訓練演算法思維,真正提升編程內功的數據結構與演算法課程。

我是誰?

我叫王爭,前 Google 工程師,從事 Google 翻譯相關的開發工作,深入研究演算法數十年。現任某金融公司資深系統架構師,核心業務介面平台負責人,負責公司核心業務的架構設計、開發,以及可用性、高性能等相關技術問題的解決。

你能獲得什麼?

1. 掌握數據結構與演算法的核心知識

我根據自己研讀數十本演算法書籍和多年項目開發的經驗,精選了20 個最實用數據結構和演算法結合具體的軟體開發實例,由淺入深進行講解背後的設計思想,並適時總結一些實用「寶典」,保證你印象深刻,並且能夠迅速對應到實際工作場景中。

2. 提升演算法思維,訓練解決實際開發工作難題的強能力

這部分我會講一些不是那麼常用的數據結構和演算法。雖然不常用,但是並不是說他們沒用。設置這一部分的目的,是為了讓你開拓視野,強化訓練演算法思維、邏輯思維。如果說學完基礎部分可以考 80 分,那掌握這一部分就能讓你成為尖子生。再回過來說,不管是現在流行的區塊鏈技術還是人工智慧,核心代碼實現中都會涉及到這些演算法。

3. 學習開源框架、底層系統的設計原理,提升工作實戰技能

最後我會通過實戰部分串講一下前面講到的數據結構和演算法,並且結合 Redis、Disruptor 這樣的開源項目,剖析它們背後的數據結構和演算法,幫你提升讀懂源碼的能力(JDK 很多源碼,不乏大量的數據結構,例如大家喜聞樂見的面試題 HashMap)。

我掰著指頭數了下,整個專欄會涵蓋100 多個演算法真實項目場景案例。我還手繪了一些清晰易懂的詳解圖,幫你理解核心概念和實現過程,展示每個知識點的框架邏輯,讓晦澀難懂的演算法變得輕鬆有趣。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 InfoQ 的精彩文章:

開源的本質是什麼,免費還是自由?
技術人員該如何擁有一個「改變世界」的創意?

TAG:InfoQ |