編程之道
想想在這方面不可能有多大建樹了,真是有些傷感。靜下心來,參考了一些資料,總結了一些專家點評再加上一點個人的感悟,寫了這篇文章希望能對后來者有些幫助使后來者少走些彎路:
曾幾何時,為了一段程序的通過,翻閱了不知多少本冊子,設置了不知多少個斷點,耗費了不知多少個時辰,流了不知多少的汗水,哦,忘記了吃飯,忘記了睡覺。累乎?
曾幾何時,當調(diào)試窗口出現(xiàn) 0 Error 0 Warning ,程序按照意圖通過,一切的一切,全然不在話下,征服的快感頓生,哦,忘記了吃飯,忘記了睡覺。樂乎?
要學習編程是要有很大恒心和毅力的,首先你要明確自己的目標,想好自己編程是為了干什么。如果你學習僅僅只是一時想編出QUAKE和成為比爾蓋次的沖動,那么我勸你還是應該不要開始學習,因為這樣的目標很難支持你日后大量的學習。而且你的年齡不能太大(最好是中學或者大學生)。
1 無論學習編程還是計算機的其它方面,首先是培養(yǎng)興趣,這點非常重要,如果有興趣,編程會使你有強烈的興奮感,你自然就有了強烈的求知欲。不然它就會是一份枯燥的工作,你也不可能深入學習下去。一開始可以看一些計算機軟硬件雜志比如說<<電腦報>>,對于里面提及的計算機操作技巧盡量動手試試,這樣會使你有些成就感,這很好,要的就是這個。其實學習一些"Crack技術"也是培養(yǎng)興趣的一條捷徑,上網(wǎng)看看,或去書店找找《黑客,就這么幾招》之類的東東看看(想想這些"漫畫書":->的作用這就于限此吧),當你發(fā)現(xiàn)開始對計算機產(chǎn)生興趣后,那么就開始學習專業(yè)知識吧,上面提及的東東可以不用再看了,你可能覺得從中學了不少知識,但要清楚的是這些都是一些三流的非專業(yè)知識。你還有很長的路要走,得趕快上路,不要在上面浪費時間了!
2 一開始你可以學習BASIC語言,這個語言并不會耽誤你太多的時間,學習它完全是為了入門,讓你對電腦編程有一個比較初步的認識。,知道一些最基本每條語句的功能,搞清楚一些基本的數(shù)據(jù)結構(尤其是數(shù)組)對于一些其余用途的函數(shù)最好不要做任何學習,因為這樣只會分散你的注意力,并天馬行空地多寫些小程序自娛自樂,當你能夠可以熟練的運用BASIC編出猴子選大王,以及電腦出題考試之類的程序時,你就可以開始后面的學習了。(之所以選擇BASIC也是為了培養(yǎng)興趣,選擇C就顯得有點不適合了,就教材而言BASIC教材上的的屏控制比C教材上來得豐富得多,而一般的C教材上基本上沒有這方面的介紹,這對于自己想些小程序來做很有利)。
3 接下來是可以看C了,學C主要是學過程化的程序設計,學會把自己的程序分成許多的函數(shù)(或過程),養(yǎng)成良好的編程習慣。這時可以多看一下高人的程序,不一定要懂意思,主要是學會別人程序的格式(比如變量如何起名,怎么劃分函數(shù))。除開掌握基本的控制流語句外,應該學習一些很簡單的I/O函數(shù)和數(shù)學函數(shù)。C的學習主要是你舍棄原來BASIC程序那種把所有語句積成一大堆的風格,要學會使用函數(shù),提高代碼重用性。對于指針之類的東西如果實在看不懂可以先不去管,到后面會有辦法。當你能夠比較自如的用C編寫一些小的計算程序時,你就可以開始你的數(shù)據(jù)結構的學習了(數(shù)學的學習主要是在學校,自己要多用心)。數(shù)據(jù)結構你可以一點一點慢慢看,并不需要專門空出一段時間來專門研究,這樣的目的是讓你能夠很好的掌握它,要學會用數(shù)據(jù)結構的知識來規(guī)范自己的程序設計和提高程序的效率。對數(shù)據(jù)結構引起足夠的重視。如果說計算機專業(yè)的學生與非計算機專業(yè)的最根本的差別絕對是數(shù)據(jù)結構(數(shù)學大家都一樣學了,主要看你自己學得好壞)。對數(shù)據(jù)結構的掌握與運用能力是衡量你編程能力的一個很重要的指標。有的人對于看了鏈表,棧,樹,廣義表這些東西就頭痛。然而這些東西往往能使你的程序的效率比別人高出百倍
4 學完C我認為接著最好學習匯編。從最基本的DOS匯編開始,買本《IBM PC匯編程序設計》(清華黃皮)一定要一點一點吃透,實在看不懂就跳,反復的嚴讀是一定可以看懂的。匯編是一定要掌握的,因為它涉及到很多最基本的知識。掌握了匯編和對I/O有了個很徹底的認識后,應該去學編譯原理。這個東西并不要精通,但是一定要知道,在大腦里要有一個這樣的概念,這對你對程序語言的控制能力都有很大的幫助。這樣最基本的學習就算完成了。一般智力正常的人前一段東西應該都是可以掌握的。接著后面的學習就要看你自身的造化了。這個時候你應該研究一下數(shù)據(jù)結構,不要分散自己學習的注意力,要知道數(shù)據(jù)結構是異常重要的如果你覺得自己已經(jīng)對于樹,連表,堆棧之類的東西和排序,遞歸之類的算法已經(jīng)十分清楚,就可以開始學習Window程序設計了(Microsoft畢竟是老大)。
5 對于SDK的學習非常重要,寫Windows程序的人對API不了解是不可想象的,它
6 對Windows程序設計有一定掌握后,就開始學習C++了,學習前一定要有個正確的認識,那就是C和C++是兩個不同的東西(很多垃圾書會使你覺得C++只是帶類的C)。學習C++是為了學習面向對象的程序設計,這個時候你對于指針應該也能夠掌握了(有匯編的基礎),主要抓住C++和C相比的一些新特性,對于多態(tài)之類的特性要注意理解掌握,如果沒有搞懂就堅決不要往下學習。一些基本的概念掌握以后可以看一些別人設計的程序,學習別人怎么利用面向對象的方法來設計程序的。這個東西也是人之間拉開檔次的一個環(huán)節(jié),可以和數(shù)據(jù)結構在同等重要的地位。
7 對于C++有了一定掌握后,你就可以學習VC 或 BCB,DELPHI了(建議是VC) 之類的開發(fā)工具了,當然學之前先學它們的語言和類庫,比如MFC或VCL。如果你在第四階段就上VB DELPHI 或BCB并發(fā)現(xiàn)有問題而倒回來重新學習,到了這里你就會深切地感受到你寫程序時游韌有余,運用自如得多了。
8 以后的OLE(ActiveX),.NET,數(shù)據(jù)庫就要看自己的發(fā)展方向而定了,在以后的學習上同樣要注意的是原理的學習,就好象學習數(shù)據(jù)庫或網(wǎng)絡編程一樣,千萬別一開始就用BCB或DELPHI這樣的RAD。
最后引以候老師的一就話:省下一個浪漫的夜晚吧,人生還很長,你可能因此獲得無數(shù)個愉快的工作天。
以上只是本人一些愚見(也未提及相關學習書籍),希望大家指出不正確的地方并與我多多交流:
QQ:46898363