俗話說的好,文有法,而無定法。學習程式設計,也是同樣道理,有法,而無定法。本人的程式設計也是自學的,當年也跟題主有類似的疑問。如今從事軟體開發行業近十年了,多少也算有點心得,回答一波,僅供參考吧!
先說結論:
學習確實要講究方法,但是並沒有一成不變的方法,要根據自己的具體情況隨時改變。適合自己的才是最好的。相對於學習方法,更重要還是看你是不是對程式設計有興趣吧!
學習程式設計大概有以下幾個階段:
1、看懂別人程式碼。也就是初步瞭解程式語言的入門階段。看懂別人的程式碼跟自己寫,完全不是一個概念。舉個例子,大家都能看懂語文課本上的課文,有多少人能寫出來那樣水平的文章?程式是設計者和開發者思想的表現形式而已,可以用各種程式語言書寫,最終效果沒什麼本質區別,解決的都是一樣的問題。
也就是說,編寫程式碼的過程,就是把解決問題的思路或者實現功能的設計翻譯成程式語言語句的過程。這句話有兩個要點:思路,語言。對於初學者,面臨的問題通常都是練習性的,沒有太多的複雜性,這種練習類程式需要的其實就是對程式語言的屬性而已。
程式設計其實跟講故事一樣一樣的,只不過講故事用的是中文,程式設計用的是程式語言而已。要想隨心所欲地把想法實現成程式碼,首要的必要條件就是熟悉你的語言,要做到看到別人的思路就可以用程式語言翻譯成程式的程度。
熟悉程式語言這一步做到了,下一步更加關鍵,思路,或者說解決方案。
2、只是把程式語言的幾十個關鍵字背的滾瓜爛熟,而沒有解決實際問題的經驗和思路,同樣寫不出可用的程式。
還是以講故事作為例子。把新華字典倒背如流,腦子裡沒有故事情節,是不是也講不出故事?程式設計也是同樣道理,熟悉程式語言是第一步,也僅僅是第一步。決定性的還是解決問題的思路和解決方案。
而解決問題的思路從哪裡來?對問題建模。也就是將實際的問題透過控制變數、剔除干擾項等手段,轉化為相對理想化的理論問題,也就是可以程式設計解決的理論問題模型。這種理論模型通常就那麼幾種大的型別,各自都有比較成熟的解決方案和框架。大學裡舉行的數學建模大賽,也基本上就是做這個事情。這種抽象理論問題模型的能力可以在實際的專案中逐步練習掌握,當然也可以透過下面說的捷徑較快獲得。也就是學習資料結構和演算法。
3、資料結構和演算法,本質上就是祖祖輩輩的程式設計師們總結積累下來的典型問題的理論模型和通用解決方案。或者更確切迪說,是組成典型問題的理論模型和解決方案的各種元件。靈活應用這些元件,你就可以迅速拼裝出具體問題的理論模型和解決方案,有了這個基礎,程式設計實現就順理成章了。
對初學者,資料結構和演算法可能需要較多的時間和毅力才能掌握,但是這部分內容剛好就是軟體和軟體行業的靈魂和精髓,也是程式設計師的內功所在。花大量時間和精力是完全值得的。當然,也不能急於求成,學習這部分內容需要的時間起碼是以年為單位的。邊做邊學吧。
俗話說的好,文有法,而無定法。學習程式設計,也是同樣道理,有法,而無定法。本人的程式設計也是自學的,當年也跟題主有類似的疑問。如今從事軟體開發行業近十年了,多少也算有點心得,回答一波,僅供參考吧!
先說結論:
學習確實要講究方法,但是並沒有一成不變的方法,要根據自己的具體情況隨時改變。適合自己的才是最好的。相對於學習方法,更重要還是看你是不是對程式設計有興趣吧!
學習程式設計大概有以下幾個階段:
1、看懂別人程式碼。也就是初步瞭解程式語言的入門階段。看懂別人的程式碼跟自己寫,完全不是一個概念。舉個例子,大家都能看懂語文課本上的課文,有多少人能寫出來那樣水平的文章?程式是設計者和開發者思想的表現形式而已,可以用各種程式語言書寫,最終效果沒什麼本質區別,解決的都是一樣的問題。
也就是說,編寫程式碼的過程,就是把解決問題的思路或者實現功能的設計翻譯成程式語言語句的過程。這句話有兩個要點:思路,語言。對於初學者,面臨的問題通常都是練習性的,沒有太多的複雜性,這種練習類程式需要的其實就是對程式語言的屬性而已。
程式設計其實跟講故事一樣一樣的,只不過講故事用的是中文,程式設計用的是程式語言而已。要想隨心所欲地把想法實現成程式碼,首要的必要條件就是熟悉你的語言,要做到看到別人的思路就可以用程式語言翻譯成程式的程度。
熟悉程式語言這一步做到了,下一步更加關鍵,思路,或者說解決方案。
2、只是把程式語言的幾十個關鍵字背的滾瓜爛熟,而沒有解決實際問題的經驗和思路,同樣寫不出可用的程式。
還是以講故事作為例子。把新華字典倒背如流,腦子裡沒有故事情節,是不是也講不出故事?程式設計也是同樣道理,熟悉程式語言是第一步,也僅僅是第一步。決定性的還是解決問題的思路和解決方案。
而解決問題的思路從哪裡來?對問題建模。也就是將實際的問題透過控制變數、剔除干擾項等手段,轉化為相對理想化的理論問題,也就是可以程式設計解決的理論問題模型。這種理論模型通常就那麼幾種大的型別,各自都有比較成熟的解決方案和框架。大學裡舉行的數學建模大賽,也基本上就是做這個事情。這種抽象理論問題模型的能力可以在實際的專案中逐步練習掌握,當然也可以透過下面說的捷徑較快獲得。也就是學習資料結構和演算法。
3、資料結構和演算法,本質上就是祖祖輩輩的程式設計師們總結積累下來的典型問題的理論模型和通用解決方案。或者更確切迪說,是組成典型問題的理論模型和解決方案的各種元件。靈活應用這些元件,你就可以迅速拼裝出具體問題的理論模型和解決方案,有了這個基礎,程式設計實現就順理成章了。
對初學者,資料結構和演算法可能需要較多的時間和毅力才能掌握,但是這部分內容剛好就是軟體和軟體行業的靈魂和精髓,也是程式設計師的內功所在。花大量時間和精力是完全值得的。當然,也不能急於求成,學習這部分內容需要的時間起碼是以年為單位的。邊做邊學吧。