入門演算法其實很簡單,拿生活中的很多現實問題來解決就可以了。比如商場打折問題(是打折划算還是滿減划算),百錢買百雞、猴子分桃、雞兔同籠等有趣的問題。如果這些問題能夠結合具體的程式語言實現就更好了。入門演算法階段主要是鍛鍊邏輯思維能力和思考問題、分析問題、解決問題的能力,不一定要去先把計算機專業課程《資料結構》上一遍或者枯燥的數學知識學習一遍,再去學演算法。演算法其實離我們並不遙遠,它就在我們每個人的身邊。
要成為優秀的演算法工程師(注意這裡是優秀),首先要熟練的掌握數學知識,比如大學裡面學習高等數學、線性代數、概率統計、離散數學、組合數學、矩陣論等課程,就為我們成為演算法工程師打下了堅實的數學基礎。其次要學好《資料結構》這門課程,比如裡面的鍊錶、矩陣、樹、圖等各種典型的資料結構以及常用的查詢和排序演算法(比如二分查詢、氣泡排序、快速排序、希爾排序等,並熟悉各自演算法的時間複雜度)。對於通用型的演算法思想,比如遞迴、遞推、貪心、分治、動態規劃等演算法策略要熟記於心並能靈活運用。總之成為一名優秀的演算法工程師,離不開深厚的數學功底。要能靈活的使用上述各種知識,解決實際生活中的問題。有個簡單的途徑就是參加acm競賽。通過簡化生活中的實際問題,使用演算法去實現,這種成就感非常強。 此外就是熟練掌握各種開發工具和開源框架(比如caffe、tensorflow等),能夠使用程式語言(比如python或c++等)實現和驗證自己的演算法。
計算機的終極應用是人工智慧,人工智慧的核心是機器學習,而機器學習的核心就是演算法。而且隨著it資訊科技的快速發展,演算法不會像那些具體的it技術一樣迅速的過時(演算法思想永恆),所以演算法工程師的前景非常好。對於應用型程式設計師來說,它關注的是怎麼利用各種工具、技術實現功能,快速的完成產品的開發,核心的演算法並不需要去了解(比如影象識別直接呼叫某廠商、公司的封裝好的sdk就可以了)。但要成為高階程式設計師如果懂點演算法、知道實現的原理,就有價值的多。所以我們程式設計師在人工智慧時代,並不一定要求精通演算法,但一定要懂點演算法,這樣才能夠跟上這個時代的步伐,不被迅速淘汰掉。
這個未來太籠統了,如果具體化些則可行性更高一點。比如我們現在的天氣預報就是根據演算法來**未來幾天的天氣情況的,比如alphago就能夠根據當前棋盤的情況,計算出最終的勝負,從而確定下一步的最佳落子方案。所以我的觀點是,演算法會在越來越多的領域逐漸的深入應用,從而達到「智慧型」的效果,但還是在人類的控制之下。
本文最初發表於非同步社群:
這些坑,程式設計師要不要挖?
挖坑,填坑,棄坑 迴圈往復,這就是生活!作為程式設計師,有些坑是很難躲開,不知道你是否正在這些坑中?相對於傳統紙 網際網路讓資訊傳播變得更加便利,但在web 1.0 階段新 依舊掌握在少數人手裡的,普羅大眾僅僅是資訊的接受者,在網路上發布和傳播個人觀點的門檻還很高。就像給報紙雜誌投稿一樣,你的言論必...
程式設計師,要不要考軟考高階職稱?
1 三 四線城市的程式設計師,有專案但專案半死不活 2 非計算機行業的資訊中心崗位 3 系統運維人員 網路管理人員 4 非計算機專業轉計算機相關工作。如果你是一線城市程式設計師,乃至bat程式設計師請直接繞行,該文不適合你,請直接繞行。上半年 資訊系統專案管理師 系統分析師 級別 時間 考試專案 高...
程式設計師,要不要考軟考高階職稱
1 三 四線城市的程式設計師,有專案但專案半死不活 2 非計算機行業的資訊中心崗位 3 系統運維人員 網路管理人員 4 非計算機專業轉計算機相關工作。如果你是一線城市程式設計師,乃至bat程式設計師請直接繞行,該文不適合你,請直接繞行。這裡寫描述 60天高效通過軟考高階實戰複習攻略 乾貨 1 軟考高...