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