我的閱讀編程書籍的好方法
我是學(xué)電子工程畢業(yè)的,在這個專業(yè)里我必須要用的編程語言只有C/C++,匯編和Matlab。在參加了一個創(chuàng)業(yè)周末的活動后,我開始對軟件開發(fā)、計算機編程感興趣,我決定要試一試,要進入這個領(lǐng)域。我發(fā)現(xiàn),要想做一些編程項目,你需要去學(xué)一些完全不同的編程語言。
在過去的一年半里,我學(xué)會了Java(用于開發(fā)Android),Python和Javascript(& HTML/CSS)(用于web開發(fā)),我慢慢認識到,這***的從書本和教材上學(xué)習(xí)編程的方法是把它們讀3遍!!用這種方式學(xué)習(xí)新的內(nèi)容能更好的幫你理解新語言/新概念。我相信這種方式能幫助你***限度的從書本中汲取知識——不論你看的是什么書。
讀***遍
我的***遍對編程書的閱讀只做到粗淺的理解。在***遍中,我努力跟隨作者的思路,讓他通過例子指導(dǎo)我前進。我學(xué)會編程語言的語法,但不完全,我努力理解程序是如何工作的。在***遍閱讀中我不動手敲代碼。我想,我之前有編程經(jīng)驗,在讀任何編程書籍時都可以跟得上作者的思路。我并不期望在***遍閱讀后就能用這種語言編程,就能把這些新知識運用到項目中。我得到的是對這本書里的內(nèi)容有了很好的感覺。(順便說一句,我通常一次只讀一章或一節(jié),不是一次一本書讀完)。
讀第二遍
在第二遍里,我開始寫代碼。我通常會把各節(jié)里的例子敲打出來。為什么要先讀一遍書然后回來再敲代碼?因為這樣我就知道了這節(jié)里都講的是什么,我能先知道這代碼能干什么或不能干什么。我有了全局的感覺,而不是盲目的敲代碼,等著下一章被告知謎底,這樣又需要回來重讀這一節(jié)。在理解的情況下敲代碼能幫助我記憶語法。
讀第三遍
在第三遍閱讀中,我試圖在不參考書中的代碼的情況下寫出書中的例子和做出章節(jié)里的練習(xí),我會直接跳到相應(yīng)的章節(jié)或習(xí)題部分。在這個階段,我能很好的記住這些章節(jié)里涉及到的語法,我能完全可以解決這些章節(jié)里給出的習(xí)題或問題。
就是這樣…
這就是讓我學(xué)會了Java,Python,JavaScript的方法。另外一個學(xué)習(xí)新語言或新概念的好方法是做一些個人項目。如果你想更多的了解Java里GUI和圖像方面的知識,那就試著開發(fā)一個象棋游戲,這樣會督促你閱讀一些圖形、動畫、界面,甚至驅(qū)動方面的書籍。
如果你在做一些個人項目時不讀這個語言的相關(guān)資料,那你就不能在實現(xiàn)這個項目的過程中運用***的實踐方案,你只是在試著完成這個工作。你同樣無法知道如何真正的用這種語言編程,尤其是當(dāng)你以前不是用的這種語言的時候。你也許會用Java寫出C語言風(fēng)格的代碼,因為你還沒有學(xué)會用Java實現(xiàn)這種任務(wù)的方式,你熟悉C語言,你只是用Java的語法實現(xiàn)了這個功能。
我認為作為一名初學(xué)者應(yīng)該先從書本學(xué)起,而不是先找培訓(xùn)班或其他。你能從書本中獲得基本的概念。但當(dāng)通讀了一本書后,不要把自己局限在書上提供的一些練習(xí)上,試著做一些自己的軟件項目。一定要親手打出書上的那些代碼,不要以為對這些代碼看懂了、理解了就足夠了!
我并不是一個編程高手,但通過這種方式學(xué)習(xí)編程開發(fā),我確實學(xué)到了很多。讓我知道你對我的這種方法有什么不同的見解,請寫在留言里。