??????? 高明的程序員善于通過閱讀程序來(lái)發(fā)現(xiàn)有價(jià)值的東西,并不斷地提高自已的水平。
?
我們很多的學(xué)習(xí)都是從閱讀開始,學(xué)一門語(yǔ)言,學(xué)一門技術(shù),一般都會(huì)先選擇好的老帥或好的教材,去聽,去閱讀,然后慢慢地理解并掌握,閱讀在我們的學(xué)習(xí)與生活可以說(shuō)無(wú)處不在,閱讀是我們學(xué)習(xí)知識(shí)增長(zhǎng)見識(shí)擴(kuò)大視野的關(guān)鍵環(huán)節(jié)。
??????
?????? 在大四之時(shí),我開始感覺到課本知識(shí)的局限性,特別是在我領(lǐng)悟到自已不得不干技術(shù)這行當(dāng)時(shí),我就更加迫不急待地去學(xué)習(xí)很多的編程技術(shù),我開始不斷地閱讀各種各樣的編程書籍,也開始被一行又一行的代碼所吸引,每當(dāng)理解到一段代碼的作用時(shí),心里就特別的愉悅與富有成就感,當(dāng)我用DELPHI寫出第一個(gè)象樣的程序時(shí),激動(dòng)與興奮了好幾天,同學(xué)們都在興高采烈地描繪著畢業(yè)后到某某政府機(jī)關(guān)或金融機(jī)構(gòu)大顯身手的宏偉藍(lán)圖,我是羨慕的,也是無(wú)奈的,我不得不零時(shí)抱佛腳,瘋狂地閱讀,努力學(xué)好一門技術(shù),為的是能找到工作混口飯吃,先生存再談發(fā)展。
?
?? 溫伯格大師在《程序開發(fā)心理學(xué)》里認(rèn)為程序開發(fā)也是寫作的一種形式,它與其它的寫作形式?jīng)]有什么兩樣。眾所周知,作家能寫出好書,大都博覽群書,可以說(shuō)閱讀是提高寫作水平的一條重要途徑,同樣的,程序員學(xué)習(xí)程序開發(fā),閱讀程序?qū)λ降奶岣咭灿泻艽蟮拇龠M(jìn)作用,程序員通過閱讀程序,可以發(fā)現(xiàn)與總結(jié)出有價(jià)值的東西,比如一段代碼之所以如此編寫,是由各種因素決定的,有的是因?yàn)橛?jì)算機(jī)的局限,有的是因?yàn)槌绦蛘Z(yǔ)言的局限,有的是因?yàn)槌绦騿T本身的水平,而有的則可能是因?yàn)闃?biāo)準(zhǔn)規(guī)范的約束,通過仔細(xì)地閱讀程序,你會(huì)發(fā)現(xiàn)并理解到這些因素,并從中受益匪淺。
?
那么,我們應(yīng)如何來(lái)閱讀程序呢?
?
溫伯格不愧為大師級(jí)的人物,不僅知識(shí)淵博,而且字里行間還非常地幽默風(fēng)趣,他認(rèn)為“閱讀程序與閱讀小說(shuō)是不一樣的,閱讀程序的最好方法并非是依次從頭到尾。程序不像迷語(yǔ),我們無(wú)法從末尾幾頁(yè)找到答案,也不像一本引人入勝的書籍,只需直接翻到褶皺最多的那幾頁(yè),我們就能找到最精彩的片斷。”簡(jiǎn)而言之,程序中最好的部分所出現(xiàn)的位置是不確定的,因此我們?cè)陂喿x程序時(shí),最好逐一考察研究每一段代碼,搞清楚每一段代碼的來(lái)龍去脈,理解每一段代碼在程序中所起的作用,“進(jìn)而形成一個(gè)虛擬的程序結(jié)構(gòu),并以此為基礎(chǔ)來(lái)進(jìn)行閱讀”。
?
我開始學(xué)習(xí)VC++的時(shí)候,每學(xué)到一個(gè)知識(shí)點(diǎn),先從理解概念開始,然后找一段別人已寫好的程序來(lái)閱讀,理解每一行代碼在整個(gè)程序中的作用,如果這行代碼錯(cuò)了會(huì)有什么樣的結(jié)果,如果沒有這行代碼又會(huì)怎么樣,閱讀后再去上機(jī)操作,驗(yàn)證自已的理解是否正確,這樣學(xué)習(xí)雖然較花時(shí)間,但有所收獲,有的初學(xué)者很急躁,不到一個(gè)月的時(shí)間,就吹牛自已看了多少本書,但學(xué)到的只是一些表皮的知識(shí),沒有什么用的,還不如認(rèn)真地鉆研一本書,效果可能更加顯著,其實(shí)你也會(huì)慢慢發(fā)現(xiàn),書店里的書雖然多如牛毛,但都大同小異,這很是悲哀!
?
綜上所述,我們需要理解點(diǎn):一是程序被編寫成什么樣子,取決于眾多的因素;二是閱讀程序不能象閱讀小說(shuō),程序中精彩的部分出現(xiàn)的位置是不確定。另外,阿蒙建議同行們善于通過閱讀程序來(lái)學(xué)習(xí)程序開發(fā),每學(xué)一個(gè)知識(shí)點(diǎn),先去閱讀與分析現(xiàn)有的程序,相信對(duì)你的學(xué)習(xí)是有促進(jìn)作用的。