作者:最近看到很多朋友問(wèn)到如何學(xué)習(xí)編程這個(gè)問(wèn)題,我想這個(gè)問(wèn)題應(yīng)該是所有初學(xué)者都非常關(guān)注的問(wèn)題了,在論壇上回答了很多也講了很多,但是總是無(wú)法讓所有朋友得到一個(gè)解答,所以我想寫一下自己的經(jīng)驗(yàn),希望對(duì)大家有所幫助,不過(guò)在此先聲明,我并非什么高手,我也只是剛剛?cè)腴T而已,也只是希望通過(guò)寫一點(diǎn)個(gè)人的體會(huì)幫助一些和我遇到相同問(wèn)題的朋友,高手就免看了,以免班門弄斧。
在學(xué)習(xí)程序之前,我想大家首先應(yīng)該對(duì)程序員這個(gè)行業(yè)熟悉一下,更加要對(duì)編程的語(yǔ)言以及所涉及到的工具有所了解。因?yàn)槿绾瘟私膺@些是很難去給自己一個(gè)明確的目標(biāo)的。所以首先我想在這里先為大家介紹一下這個(gè)行業(yè)以及一些相關(guān)的內(nèi)容。
程序員,相信在很多人眼中是一個(gè)非常神秘,非常特別又或者說(shuō)非常有趣的職業(yè)。因?yàn)樵谶@個(gè)行業(yè)里面實(shí)在出現(xiàn)了太多的英雄,每一個(gè)英雄的事跡都足以讓我們熱血沸騰。但是,又有誰(shuí)知道在這些英雄的背后,藏著多少辛酸,藏著多少的努力。程序員這個(gè)行業(yè)并非如大家所想象的那樣美好。程序員是一個(gè)沒(méi)有白天黑夜概念的行業(yè),程序員是一個(gè)讓人筋疲力盡的行業(yè)。你們看到的是一些英雄的光輝歷史,但是卻忽略了大多數(shù)程序員的艱辛。所以在這里我奉勸各位,如果你是為了這個(gè)行業(yè)充滿傳奇色彩而想加入,如果你是為了這個(gè)行業(yè)薪水高而想加入,那么請(qǐng)你現(xiàn)在退出吧,因?yàn)樗贿m合你。這個(gè)行業(yè)需要的是擁有努力、認(rèn)真、堅(jiān)持等品質(zhì)的人。
講到如何學(xué)習(xí)編程,那么必不可少的就要講到編程語(yǔ)言了,相信大家都知道編程語(yǔ)言有很多種,包括C、C++、BASIC、PASIC、ASP、PHP等等,當(dāng)中還分為很多不同的領(lǐng)域,所以在學(xué)習(xí)編程之前一定要為自己定下一個(gè)目標(biāo),一個(gè)自己即將要進(jìn)入的領(lǐng)域。有些人想進(jìn)行底層開發(fā),有些人想做網(wǎng)站開發(fā),有些人想做商業(yè)軟件開發(fā)等等,由于計(jì)算機(jī)的普及,軟件行業(yè)所涉及的領(lǐng)域也就越來(lái)越多,一個(gè)人是不可能涉及所有的領(lǐng)域的,所以必須在學(xué)習(xí)之前給自己一個(gè)定位,這個(gè)是很重要的,如果沒(méi)有這個(gè)定位的話在未來(lái)學(xué)習(xí)編程的日子里將會(huì)很迷茫。
目標(biāo)的定位當(dāng)然不能少了工具的因素,因?yàn)椴煌念I(lǐng)域使用的開發(fā)工具也不同,在這里想重新再次鄭重的向所有朋友聲明一次,不要把開發(fā)工具和開發(fā)語(yǔ)言混為一談,語(yǔ)言是編程的基礎(chǔ),而工具是用來(lái)輔助開發(fā)的,例如VC、VB、DELPHI、BCB等等。每種工具都有各自的優(yōu)勢(shì)和缺點(diǎn),至于每種工具的特點(diǎn)我就不再講了,如果大家是有心學(xué)編程的話,我相信你一定會(huì)去看看關(guān)于這些工具的具體內(nèi)容的,呵呵,讓我偷個(gè)懶。還有在這里重要提醒一下大家,不要被現(xiàn)在的流行工具所迷惑,學(xué)好根本才是最重要。
前面大概的準(zhǔn)備工作已經(jīng)做完了,對(duì)這個(gè)行業(yè)了解了,給自己定了一個(gè)目標(biāo)后,接下來(lái)當(dāng)然是全力向這個(gè)目標(biāo)進(jìn)發(fā)了。那該怎么做呢?看了很多朋友的帖子,都講到C語(yǔ)言是程序員必學(xué)的語(yǔ)言,如果程序員不學(xué)C就不算是真正的程序員,我個(gè)人認(rèn)為這種說(shuō)法有點(diǎn)偏激,當(dāng)然,我承認(rèn)學(xué)C是會(huì)對(duì)你有很大的幫助,但是并非一定要學(xué)C,大家之所以這樣說(shuō),可能是因?yàn)镃語(yǔ)言的影響太大了。但是你總不能要那些去學(xué)網(wǎng)站開發(fā)的人一定要去學(xué)C吧,呵呵。其實(shí)我個(gè)人認(rèn)為,一開始學(xué)什么都無(wú)所謂,但是無(wú)論學(xué)什么,一定要努力和堅(jiān)持,做不到這兩點(diǎn),你就注定會(huì)是個(gè)失敗者。在這里我想講一下學(xué)編程最關(guān)鍵的問(wèn)題,就是思想。也許這是個(gè)很抽象的概念,但是沒(méi)有辦法,編程本身就是個(gè)很抽象的東西,呵呵。等你真正領(lǐng)悟到這一點(diǎn)的時(shí)候,恭喜你,你已經(jīng)站在編程的門口了,呵呵,只是門口哦。那么編程的思想又該如何去領(lǐng)悟呢?要領(lǐng)悟其思想,那首先學(xué)習(xí)語(yǔ)言是必然的,語(yǔ)言是思想的一種體現(xiàn)形式,就像一個(gè)人的思想需要語(yǔ)言來(lái)表達(dá)一樣,所以如果連一門語(yǔ)言都無(wú)法掌握的人是無(wú)法領(lǐng)悟其思想的。但是對(duì)于一個(gè)人,如果不經(jīng)常說(shuō)話,不經(jīng)常使用語(yǔ)言,他又如何去使用語(yǔ)言來(lái)表達(dá)自己的思想呢?編程也一樣,要領(lǐng)悟其精髓,必須先不斷地看,不斷地使用,才能在這種過(guò)程中慢慢有所體驗(yàn),當(dāng)然有的人可能快些,有的人可能慢些,但是不管快慢,能夠達(dá)到就是進(jìn)步。
我記得在我仍然迷茫的時(shí)候,不知道自己該如何去學(xué),每天就是機(jī)械式的看書寫代碼,根本都不知道自己是不是真的懂,但是就是這樣不斷的看不斷的照著書寫,終于有一天,好象突然開竅一樣,一下子就把所有不明白的東西全都弄明白了,這個(gè)有點(diǎn)像佛家所說(shuō)的頓悟,呵呵。我最初以C語(yǔ)言開始學(xué)習(xí)的,在我開始學(xué)C語(yǔ)言到頓悟這一刻,我可以告訴大家,我看C語(yǔ)言的書我一共看了5本不同的版本(不過(guò)都是像走馬觀花一樣的看,千萬(wàn)不要學(xué)我),直到第5本看到指針那里,我才真正有種明白的感覺(jué),也許我太笨了,相信大家看一本就夠了,HOHO。自從那一次后,我接著看C++,學(xué)習(xí)pascal、basic、匯編這些東西,自己感覺(jué)都非常容易看懂,可能這就是所謂的一理通百理通的道理吧。呵呵,不過(guò)在這里要講一下,上面所說(shuō)的幾種語(yǔ)言雖然看書都看過(guò)了,也看明白了,但是由于很少使用,現(xiàn)在大部分都還給書本了,呵呵。
看到這里,包括我在內(nèi),我都感覺(jué)到自己很了不起,很厲害了?上,只有我自己知道,雖然看了那么多,學(xué)得也多,寫得也不少,可是我卻不知道如何運(yùn)用。來(lái)來(lái)去去就是寫一些書本上的題目,自己卻感覺(jué)像windows那些程序卻不知道如何去寫,不知道該怎么辦,相信很多人都有和我一樣的體會(huì)吧,把C語(yǔ)言學(xué)了,題目也做了,而且都沒(méi)有問(wèn)題,可是卻不知道如何去做開發(fā),感覺(jué)自己學(xué)的東西一點(diǎn)用處都沒(méi)有。這又是為什么呢?
在這之前,我一直為這個(gè)問(wèn)題煩惱,后來(lái)我終于找到了答案,那就是我所學(xué)的,所寫的都是DOS應(yīng)用程序,而我們現(xiàn)在所使用的是windows操作系統(tǒng),當(dāng)然也有使用linux系統(tǒng)的。后來(lái)看了一篇?jiǎng)e人寫的文章后,我才知道我所學(xué)的和實(shí)際運(yùn)用相差太遠(yuǎn)了,F(xiàn)在大部分學(xué)習(xí)編程語(yǔ)言的書籍上的例題都是基于DOS系統(tǒng)開發(fā)的,所以我們所寫的程序和windows上所運(yùn)行的不一樣,這就是造成我們迷茫的主要原因。那該怎么辦呢?那還用問(wèn)嗎,當(dāng)然就是去學(xué)習(xí)windows開發(fā)啦。在第一次接觸windows開發(fā)的時(shí)候,我真的是大吃一驚,這完全和我以前所學(xué)的很不一樣,但是又息息相關(guān),如果沒(méi)有以前所學(xué)的,我根本就看不懂windows開發(fā)的內(nèi)容。
在這里給大家簡(jiǎn)單介紹一下,windows開發(fā)和DOS開發(fā)的區(qū)別吧。大家都知道,DOS是一個(gè)單任務(wù)執(zhí)行系統(tǒng),也就是說(shuō)在DOS下只能在一個(gè)程序運(yùn)行完成或者中斷后才能運(yùn)行其他的程序,而windows是個(gè)多任務(wù)系統(tǒng),當(dāng)然在本質(zhì)上windows也只能一個(gè)時(shí)間內(nèi)執(zhí)行一個(gè)程序,但是由于其利用CPU的運(yùn)算能力,讓這些微妙的時(shí)間讓人無(wú)法感覺(jué)到,再就是windows是一個(gè)圖形界面系統(tǒng),擁有著良好的用戶界面,不像DOS是個(gè)指令界面。所有這一切的區(qū)別導(dǎo)致DOS和windows開發(fā)上也存在很大的區(qū)別。所以現(xiàn)在的程序員首要的任務(wù)除了學(xué)習(xí)語(yǔ)言以外,就是要去學(xué)習(xí)windows開發(fā)機(jī)制。如果連這個(gè)都不懂,那是肯定開發(fā)不出一個(gè)好的windows軟件的。在這里向所有朋友重點(diǎn)推薦美國(guó)人Charles Perzold所寫的《windows程序設(shè)計(jì)》第五版,這本書可以說(shuō)是經(jīng)典中的經(jīng)典,學(xué)習(xí)windows開發(fā)必看的書,適合有C語(yǔ)言基礎(chǔ)的朋友看,它有多經(jīng)典我就不想細(xì)講了,總之就是絕對(duì)不會(huì)讓你失望,呵呵。這本書市場(chǎng)價(jià)是160元整,分上下兩冊(cè),如果有的朋友覺(jué)得太貴的話,我這里有他的電子版,需要的就找我要吧,隨時(shí)歡迎大家找我要這本書,呵呵。
說(shuō)實(shí)話寫到這里,我自己都不知道自己寫了些什么,好象很亂,呵呵,希望大家能夠看得懂吧?赐晡医榻B的這本書后,而且看懂的話,那么接下來(lái)自己該如何走,我相信我就不用再多說(shuō)了,到那個(gè)時(shí)候你一定知道自己該如何去學(xué)習(xí)編程了。上面講了下我個(gè)人是如何學(xué)習(xí)的,當(dāng)然還有很多細(xì)節(jié)地方?jīng)]有涉及到,不過(guò)隨時(shí)歡迎朋友們跟我一起交流。而且我現(xiàn)在才發(fā)現(xiàn)上面所寫的是從C語(yǔ)言開始學(xué)習(xí)的,呵呵,其實(shí)我并非要大家向我一樣學(xué)習(xí),我只是把自己學(xué)習(xí)的經(jīng)過(guò)大概講了下,當(dāng)然還有以后該怎么辦沒(méi)有寫,其實(shí)我也在摸索中,嘿嘿,我寫了那么多廢話,無(wú)非是想要大家明白幾個(gè)道理:
第一、首先要給自己定一個(gè)明確的目標(biāo)。
第二、分清楚語(yǔ)言和工具的區(qū)別。
第三、把思想放在首位,語(yǔ)言在精不在多,學(xué)好了一門語(yǔ)言再去學(xué)其他的,就易如反掌了。
第四、工具是經(jīng)常被淘汰的,不要被工具所迷惑,堅(jiān)定自己的信念。
第五、無(wú)論選擇做什么系統(tǒng)開發(fā),首先要去了解這個(gè)系統(tǒng),只有了解了這個(gè)系統(tǒng)才能在上面為所欲為。
大概也就差不多了,不全或者寫得不好的地方請(qǐng)指正,呵呵,就這么多了吧,歡迎大家跟我一起學(xué)習(xí),一起進(jìn)步,一起交流。當(dāng)然最后仍然是那句:
努力+堅(jiān)持=成功