回覆列表
-
1 # 中意的天空
-
2 # EmacserVimer
其實不光是Java程式設計師,我覺得任何一個想要成為優秀程式設計師的小夥伴都應該好好學習下演算法和資料結構,即使你工作中很少用到甚至從來不用,但即使是這樣,筆者依然認為演算法和資料結構是程式設計最核心也是最基礎的知識儲備。經常說,程式=演算法+資料結構,可以想象一個好的程式,演算法和資料結構是多麼重要,簡單的說資料與資料之間的關係叫做資料結構,可以是陣列、佇列、堆疊、樹或者圖,資料結構使用計算機語言定義了程式,而演算法則是實現程式的具體步驟,將這些結構貫穿在一起,兩者密不可分。
學好資料結構,可以讓你能夠更加清晰的將真實資料轉換成計算機能夠理解的語言,能夠讓你的程式邏輯更加嚴謹,計算機很聰明,但也很笨,只會按照既定的規則去機械化的執行使用者命令,並且這個命令一定是確定的,要麼是“是”(1),要麼是“不是”(0),不接受類似於“可能”、“大概”、“也許”等等模稜兩可的指令,本質上就是二進位制語言,但是不管是C/C++/Java/C#等等語言,對於人來說已經算是接近表達的高階程式語言,但相對於計算機來說,則剛好反過來。那麼好的程式結構對於更好的表達程式設計人員的思想而被計算機理解就變得尤為重要。
與此同時,良好的演算法結構,可以讓計算機更加明白,命令應該怎樣被執行,應該採取什麼措施、按照什麼步驟去執行,執行到什麼節點為止等等...
當遇到更大型的程式,整個架構內的資料結構的合理性,演算法的高效性,是保證具有很多獨立功能的功能模組更好的高效協作、解決問題的核心,你可能需要更多的框架、類庫、設計模式的支撐,而這些都是建立在正確的結構以及高效的演算法上。因此對於每一個程式設計師,都應該學好演算法和資料結構,來提升自己對於計算機的理解,對於外部世界的抽象,最終更好的解決實際問題。
當然有必要,程式=資料結構+演算法,這些東西雖然一般的專案中用不到,但它培養的是一種潛移默化的程式設計思想: 如何將現實生活中的邏輯抽象成程式碼來實現,並且如果以後跳槽bat、等大型網際網路公司,這些是重點考察的物件。
演算法和資料結構是程式設計思想的核心,學會了永遠是錯不了,對於程式設計師來說這意味著你的基礎和水平。
所以演算法和資料結構肯定是要學的,你在做初級程式設計師的時候不必知道那麼多,但是當你的水平提升了~要面臨巨大的資料集合的時候如果沒有資料結構演算法這些,你查一個東西就要很久,別人就不會願意用你幫他查系統了。
在一些銀行的系統裡會用封裝的類來呼叫資料儲存的過程這些就要求很高的演算法。所以說當你到一定程度的時候,想提升你自己的水平和工資時,這就是你的資本。
如果你學的是java網站方面的話,資料結構基本可以不用學,因為在web應用中,能用到的演算法的地方很少。
如果你要往軟體方面和手軟方面發展的話就要學一部分了,但是這東西學是學不到的,能學到的只不過是思路,到時候自己發揮一下,想個演算法就行了,演算法這東西說難不難,難的東西是有,但是沒有你能用到的地方。
下面我來闡述自己對演算法的看法:如果以後是想從事演算法類的工作,每種語言都一樣都會有演算法,但用到的不多。
剛進公司的時候一般是用不到演算法的,因為演算法都是別人想的,你也許有好的演算法,但是別人不一定採用,但是你的演算法基礎不要丟掉,因為等你當了專案經理後這個是必不可少的。
其次,你要知道,在學計算機的路上,很少有人能學什麼就做什麼,大家都在被社會潮流推動,想要不掉隊就只能隨波逐流不斷學習。