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