編程學習方法論
為什么要學習編程?
如果你還沒有考慮清楚,就不要開始學編程。編程的學習需要制定一個全過程的學習計劃,和一些階段性的目標,如果沒有這些,想要學出名堂幾乎是不可能的。
如果你沒有大量的學習時間,那么不要去學習編程,你必須為編程的學習付出至少3000個小時。不要對這個數(shù)字表示懷疑,稍后我會解釋這些時間都花費在了哪里。
如果你懷疑自己的自學能力,和毅力,那么不要學習編程,這兩者對于編程的學習很重要,編程只能靠自學成材,在整個學習階段,你只能靠自己,實際上你只有具備了獨立解決問題的能力,你才有可能學有所成。
如果你的目的不是成為高級程序員,那么不要學習編程,(除非你覺得編程的學習對提高你的創(chuàng)造能力,和提高你的學習能力有所幫助的話。也許你想靠它鍛煉手指,如果是這樣,我建議你去聊天室)編程的學習最怕半途而廢,我想那時候你會覺得什么也沒學到,前面你學會的那一半知識簡直一無是處,沒有任何用處。
如果你沒有知識投資的覺悟,那么不要學習編程,學習的過程可能需要幾千元的投入,不過想想回報,也許這對很多人不存在問題。
如果你認為上面的幾個“如果”都不存在問題,那么你可以開始學習編程了。
你需要立即購買一臺電腦,如果你還沒有的話。
要保證它的性能不會太差。
你必須花一部分時間用來上網,了解最新的技術,想辦法結識網絡上的高手,和他們通通E-MAIL,在你遇到困難的時候可以向他們求助。
不要相信外面形形色色的學習班,那里不是能夠學到東西的地方。
你需要從匯編學起,我想這對你成為真正的高手至關重要,這個階段可能不是個短暫的過程。
接下來你可以研究一下加密機密,記住不要沉迷其中,你的目的不是為了去做盜版。這個階段可以用來檢驗一下你匯編的學習成果,讓你能夠熟練的運用匯編做一些事情。
這時候可以選擇一門高級語言來學了,我推薦你學習c++,但是同時你也應該對c有所了解,當然,最終你必須對這兩門語言都非常的熟悉。最初的學習可能會相當枯燥,但是要想想,它們無所不能,微軟用它們編寫windows,各大游戲公司用它們編寫游戲。只要你的想象能力足夠豐富,你可以創(chuàng)造出一切。不要相信“21”天學會c++的美麗謊言,你可能需要在這個學習階段花費將近1000個小時,即使那時候,你也不過是在編程的學習上剛入門罷了。
了解了一些語言的語法規(guī)則,你需要學習數(shù)據(jù)結構和算法,這是整個編程的核心,如果你的學習能力還不錯的話,我想這些時間應該可以歸于前面那個1000小時的學習階段。當然,想要達到某種深度的話,這點時間是遠遠不夠的。
如果你希望在windows環(huán)境下編程,那么現(xiàn)在你可以開始windows API的學習了,不要一開始就去學習MFC,什么,你不知道什么是windows API,也還沒有聽說過MFC?那我先對它們做一些簡單的介紹,windows API是微軟為編程人員提供的一套編程接口,全部都是現(xiàn)成的函數(shù),它們涉及到了windows的方方面面,你可以用它們編寫出運行在windows平臺上的軟件。由于這套接口函數(shù)數(shù)量相當龐大,學習和使用都很復雜,為此,微軟設計了MFC,MFC是對windows API 的封裝,它是windows API的真子集,它將以往數(shù)個函數(shù)的功能和并成為一個函數(shù),提供了比windows API更簡單的函數(shù)接口,但是如此一來,MFC創(chuàng)建了一套自己獨立的運行機制,在沒有API功底的情況下想要掌握它是異常困難的。如果你已經學會了windows API,這時候再學MFC會十分輕松,它也確實可以大大減少你的設計代碼,讓你工作更輕松些。不過更簡單的函數(shù)接口也就意味著更多的功能限制,如果這時候你希望通過API 來為MFC擴充額外的功能是相當困難的。
當然API的學習也不是一個輕松的過程,想要熟練掌握,恐怕得有7~800個小時左右。
你可以先學一些GDI的函數(shù),這樣你可以馬上檢驗一下c和c++學習成果。這時候你應該可以自己編一些諸如俄羅斯方塊、五子棋等的一些小游戲了。不要為有這點成果而沾沾自喜,后面要學的東西還很多。
別忘了加強一下你的e文水平,這時候你最好多讀一些原版資料,msdn是你要經常查閱的,微軟的sdk幫助也是你必備的工具手冊。
如果你想要深入掌握API,你必須同時進行對操作系統(tǒng)的學習,了解整個windows的運行機制恐怕是不可能的,但是了解得越多,你對windows編程的了解就越深刻。
到了這個時候,相信你應該有一定的編程水平了,但是千萬不要就此止步,看看后面還有什么要學的。如果你希望在windows編程上更進一步,那么可以去學學VxD,那些你平時絞盡腦汁不知道怎么做出來的東西,也許靠的就是它 。你一定見過它的應用:虛擬光驅、殺毒軟件的實時監(jiān)控、還有當年大名鼎鼎的CIH。不過有一點要記住了,windows 9x 支持VxD,到了windowsNT/2000,它已經被功能更強大的WDM所替代了。
比起去做windows軟件設計,也許你更喜歡將設計游戲作為以后的發(fā)展方向。這時候windows的GDI接口就遠遠不能滿足你的需要了,它的速度很慢。你需要一些能夠訪問和使用顯存的圖形界面編程接口,你可以去學習OpenGL或者是DirectX,兩者擇其一即可,不過DirectX比起OpenGL可能難學得多,現(xiàn)在市面上最新版本的DirectX9.0還沒有資料,只有微軟的sdk可看,這對如此龐大的一門知識體系的學習恐怕是非常困難的。
你可能需要掌握一些圖形學知識,用以完成游戲里的許多設計。這時候你會發(fā)現(xiàn)高等數(shù)學至關重要,如果你的大學課堂上開有數(shù)值分析這門課程千萬不要忽視了。
記住,千萬不要成為純粹意義上的技術狂人,你需要時常找一些空閑時間來玩玩游戲,想想這些游戲是怎么做出來的,如果不關注游戲市場,你就不可能了解現(xiàn)今的技術水平。也許你以后設計的游戲會仍然停留在多年前的水準。
你需要試著找一些合作伙伴共同開發(fā)一些軟件或小型的游戲。未來的軟件業(yè)需要的不再是單槍匹馬的牛仔式程序設計者,而是能夠配合團隊小組共同開發(fā)軟件的程序員。
你需要在實踐中獲得這些方面的經驗,實踐二字也是整個編程學習方法中最重要的主題,你調試程序的時間應該遠大于你閱讀資料的時間。別忘了用你的實踐去檢驗書中的每一個知識點,確定它們無誤。我可以明確地告訴你,我看過的書沒有一本是一個錯誤都沒有的。時刻保持對你所學知識的懷疑也是加強記憶的一個重要方法。
經過了這么長時間的學習,相信這個時候你已經具備了成為一個合格程序員的條件,但是離成為真正的編程高手還有相當一段距離。這個時候你可以去研究一下人工智能,神經網絡學,我想在不久的將來,游戲AI的高度應該會和游戲受歡迎的程度成正比。
后面還應該學些什么,我還沒有研究,畢竟我也在學習階段,如果以后我還會寫點什么的話,我會做一些補充。
最后的一點忠告是,不要總是看到自己會些什么,而是要看看還有什么不會。切忌目光短淺。
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請
點擊舉報。