謝謝邀請!
算法和數據結構對于編程來說是非常重要的,因為程序設計說到底就是一個算法問題,在后端開發、大數據以及人工智能相關的開發中,算法都是非常重要的從業基礎。算法本身是獨立于程序設計的,但是要想真正的掌握算法需要通過編程語言對算法予以實現,所以通常情況下都是掌握了編程基礎之后再開始學習算法和數據結構。
以Web開發為例,學習Java的過程大概分為三個階段,分別是編程語言基礎、Web開發基礎、分布式開發和框架開發,通常情況下在編程基礎學習完之后就可以學習算法和數據結構了。Java編程基礎包括掌握面向對象編程過程、數組、流程控制、封裝、繼承、多態、異常處理、IO、集合、多線程以及網絡編程等內容。
算法設計的學習往往從排序開始,然后是遞歸求解、概率分析、隨機算法、數據結構(棧、隊列、鏈表、圖、樹等)、貪心算法、核算法、圖算法等內容,算法的學習需要一個系統的過程,同時要結合實驗進行。其實,算法的學習也可以先于編程語言的學習,不少算法設計的教材會提供基于算法的偽代碼的實現過程,對于沒有編程基礎的人來說也能夠了解算法的實現過程,看兩個例子:
算法設計的基礎是數學,所以在學習算法之前要對高等數學、線性代數、概率論和離散數學有一定的了解,因此數學對于計算機專業來說還是非常重要的,如果要想在軟件研發這條路上走的更遠,一定要有一個扎實的數學基礎。
對于研發級程序員來說,幾乎每天都要跟算法打交道,但是對于應用級程序員來說,與算法打交道的時候往往并不多,對于學習者來說要根據自身的知識結構來選擇發展方向,做應用級研發也是可以的。