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