當前位置:
首頁 > 新聞 > 為什麼我們需要學習演算法?

為什麼我們需要學習演算法?

演算法是計算機科學領域最重要的基石之一,特別是面試的時候,演算法是必不可少的一部分。

為什麼學演算法?

李開復曾經把基礎課程比擬為「內功」,把新的語言、技術、標準比擬為「外功」。 整天趕時髦的人最後只懂得招式,沒有功力,是不可能成為高手的。真正學懂計算機的人(不只是「編程匠」)都對數學有相當的造詣,既能用科學家的嚴謹思維來求證,也能用工程師的務實手段來解決問題——而這種思維和手段的最佳演繹就是「演算法」。

面試的時候多多少少都會問到演算法,但是考演算法,並不是為了考,而是為了在探討演算法的過程中,考察和驗證一個人是否聰明,是否基本功紮實,是否能夠順暢溝通,是否能夠快速反應和學習。在討論和交流的過程中,發現閃光點。比如,面試官可能會問是否知道一些排序演算法,那不管是在學校,還是在工作中,還是在平時的閱讀中、同事溝通中,都應該可能觸及到。如果一無所知,有很大的幾率就會掛。然後,可能會問到某個具體的排序演算法,比如,快排,這個可能有些人真的不清楚,或是不記得了。其實,沒有關係,好的面試官會給你簡單的解釋,這時候考察的就是你是否學得快理解力強。接下來,面試官可能會問問時間複雜度的問題,不要說不記得,可以根據你的理解進行快速的推理。

所以,考演算法作為面試中重要的考察手段,為了考察一個人是否聰明,能否出活,是否主動。聰明是高質量出活的關鍵因素之一,主動是出活的速度和質量的有力保障。

學演算法有什麼用?

可能有人會問了知道了一個演算法又能怎麼樣,可能工作中一輩子都用不上,就算能用上,很多的演算法都有庫和包實現了,拿來用就是了。確實是這樣,在現實工作中我們所接觸的,更多是對業務邏輯的理解,程序語言的各種特性的熟練,代碼 style、pattern 的把握,各種同步非同步的處理,代碼測試、部署的正規化等等。需要設計甚至實現一個演算法的機會確實很少,即使用到,現學可能都來得及。

而對基本演算法的了解的好處可能在於:工作中需要讀一段代碼包含一些基本演算法的思想,你會更快對其理解;讀到一段爛代碼,你知道為什麼爛,怎麼優化;當真的需要有一些演算法設計在程序裡面的時候,對基本演算法的掌握會讓你更有可能給出一個完備的方案;對每種程序中出現的演算法或比較複雜的邏輯的時間複雜度等你會更有敏感性;熟悉演算法你還可以成為一個更優秀的面試官;還可以和別的碼農聊天的時候不被鄙視。

怎麼學演算法?

最近各種公眾號各種社群,都搞得風風火火,但是談系統設計和架構的偏多,沒有太多分享演算法的。是因為演算法不重要麼?恰恰相反,而是因為演算法太重要太基礎,以至於你會演算法,這事都沒啥好說好分享的了。除非你是搞出了什麼新的特別牛的演算法(更多是學術界),否則你去給誰分享?抓個合格的程序員別的不會,演算法總是會的。何況這門技術已經成了經典,不用看什麼公眾號文章,就看《演算法》就行了。

我最近在學習Robert Sedgewick編寫的《演算法(第四版)》,他是演算法宗師Donald E.Knuth的門下高徒,是演算法界的經典。

《演算法(第四版)》

如果有人在讀這本書的,歡迎大家多多交流。另外,為了方便討論,還有一個微信交流群(演算法交流),想要加入的,可私心我。

學習演算法,不僅能讓自己思維能力更是一個台階,也能在大數據和人工智慧時代為自己打下堅實的基礎,成為互聯網行業的高端人才,而不是一直停留在低水平的體力編程層次。

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

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


請您繼續閱讀更多來自 威客安全 的精彩文章:

用手機攝像頭就能進行3D混合現實社交?邁吉客獲盛景集團數千萬追加投資
勒索軟體「假面」系列——免流軟體(二)

TAG:威客安全 |