學(xué)習(xí)一門(mén)編程語(yǔ)言或者編程技術(shù)的方式基本上是這樣一個(gè)流程:
1,對(duì)學(xué)習(xí)這門(mén)語(yǔ)言或者技術(shù)的必要性進(jìn)行評(píng)估。比如你是工作需要,或者興趣所至,甚至是為了把妹。這個(gè)必要性關(guān)系到你要學(xué)多深入,需要學(xué)習(xí)多長(zhǎng)時(shí)間。
比如我想學(xué)Lua,是想學(xué)它如何在萬(wàn)把行代碼里面實(shí)現(xiàn)了一個(gè)如此精巧的編程語(yǔ)言,想學(xué)習(xí)它的GC機(jī)制,學(xué)習(xí)它如何設(shè)計(jì)VM,如何用純C語(yǔ)言設(shè)計(jì)項(xiàng)目等等。
2,尋找相關(guān)資源。比較好的起始點(diǎn)是這門(mén)技術(shù)的官方網(wǎng)站以及維基百科。
比如Lua語(yǔ)言的官方網(wǎng)站是http://www.lua.org/,維基百科地址為 而在官方網(wǎng)站,會(huì)有最新鮮的新聞、下載、文檔幫助、論壇等相關(guān)內(nèi)容。 3 找到官網(wǎng)以后,就要花上一段時(shí)間在官方網(wǎng)站好好瀏覽探尋一番。比如Lua官方網(wǎng)站的about欄目介紹了Lua是什么,為什么選擇Lua,誰(shuí)編寫(xiě)了Lua代碼等等。在News欄目有關(guān)于Lua的最新新聞。Download欄目中有軟件下載,學(xué)習(xí)一門(mén)語(yǔ)言,重要的是在練習(xí)中學(xué)習(xí),大多數(shù)人都用Windows,就可以遵照下載欄目的推薦下載Lua for windows。 4 下載了軟件(Lua for windows),安裝成功以后,就可以看看文檔document了。在Lua的文檔網(wǎng)頁(yè)中有在線參考手冊(cè)(reference manual),大多數(shù)編程語(yǔ)言也都會(huì)在下載安裝包中自帶一份手冊(cè)文檔(就我所知Ruby Python都是如此)。 如何系統(tǒng)的學(xué)習(xí)一門(mén)語(yǔ)言?通過(guò)手冊(cè)不是什么好辦法,手冊(cè)內(nèi)容相對(duì)教條枯燥,讀起來(lái)不容易。而且在線學(xué)習(xí)注意力不容易集中,很容易點(diǎn)著點(diǎn)著就跑偏了。最好的辦法還是要買(mǎi)一本實(shí)體的參考書(shū)。 買(mǎi)實(shí)體書(shū)就要用到amazon或者douban了,你可以根據(jù)amazon以及douban上的打分來(lái)確定這本書(shū)的好壞,另外在Lua的document頁(yè)面也有幾本書(shū)推薦,像是Lua這種略微偏門(mén)的語(yǔ)言,其實(shí)選書(shū)很簡(jiǎn)單,因?yàn)榫湍敲磧扇荆覀€(gè)人推薦Programming in lua,國(guó)內(nèi)有翻譯版本,另外也可以下載到5.0的中文版。 那么對(duì)于java、dotnet這類(lèi)參考書(shū)烏央烏央的技術(shù)來(lái)說(shuō),該如何選書(shū)?這時(shí)候我會(huì)參考以下幾個(gè)因素:一個(gè)是語(yǔ)言創(chuàng)始人寫(xiě)的可選擇,一個(gè)是奧萊里oreilly出版的可以買(mǎi),另外可以參考豆瓣或者amazon的書(shū)單功能,看看其他人都推薦什么。最不濟(jì)的辦法可以看銷(xiāo)量,銷(xiāo)量高的書(shū)未必就好,但是選了也不至于錯(cuò)的離譜。 買(mǎi)到書(shū)以后,最好花上幾天時(shí)間通讀一下,對(duì)于不理解的部分先標(biāo)記略過(guò),力爭(zhēng)先對(duì)語(yǔ)言技術(shù)的整體有個(gè)了解,對(duì)于一些基本操作、命令有一些印象。 5 通讀以后就要細(xì)讀了,一般來(lái)講,每個(gè)編程語(yǔ)言都力爭(zhēng)相對(duì)完整,所以必然有一些你未必感興趣的內(nèi)容或者用不到的內(nèi)容,這些都可以放在一邊需要時(shí)候再撿起來(lái)。細(xì)讀的過(guò)程最好準(zhǔn)備個(gè)小本子,另外建議在github上注冊(cè)一個(gè)賬號(hào),github有個(gè)gist.github.com頁(yè)面可以保存代碼片段,在做代碼練習(xí)的時(shí)候很有用。 細(xì)讀的過(guò)程力爭(zhēng)完全理解,書(shū)上的示例代碼也都盡量自己敲進(jìn)去運(yùn)行一次,另外可以對(duì)示例代碼做一定的擴(kuò)展,比如在第五章的代碼中加入第四章的代碼,讓它們組合起來(lái)看看如何。 6 用一兩個(gè)月時(shí)間細(xì)讀以后就是熟練提高階段。當(dāng)你細(xì)讀了感興趣的章節(jié),最好在一段時(shí)間內(nèi)盡量用新語(yǔ)言完成自己的編程需求,比如寫(xiě)個(gè)網(wǎng)絡(luò)爬蟲(chóng),或者刪除某個(gè)目錄下的特定文件,或者做做文本處理,一定要經(jīng)常用才不會(huì)忘記。這段使用過(guò)程可能需要兩三個(gè)月的時(shí)間,力爭(zhēng)達(dá)到常見(jiàn)的代碼函數(shù)不怎么查手冊(cè)就可以熟練寫(xiě)下來(lái)。另外可以有意的對(duì)自己已經(jīng)完成的算法或者應(yīng)用進(jìn)行語(yǔ)言上的翻譯,用新語(yǔ)言實(shí)現(xiàn)一下快速排序,實(shí)現(xiàn)一下正則表達(dá)式。編程其實(shí)就是個(gè)熟練過(guò)程,越練越順手。 這個(gè)時(shí)候可以試著購(gòu)買(mǎi)一些advanced級(jí)別的書(shū)籍,了解一些更深入的內(nèi)容,書(shū)籍的好壞依然是到amazon或者douban上搜索。 提高的過(guò)程中可以訂閱一些相關(guān)的博客內(nèi)容,可以到blogsearch.google.com查找博客文章,或者到csdn、javaeye、cnblogs這樣的技術(shù)相關(guān)博客站點(diǎn)搜索??吹胶玫奈恼?,可以使用delicious.com這個(gè)書(shū)簽網(wǎng)站保存起來(lái)以后慢慢閱讀。 7 在這段期間包括以后的使用過(guò)程,如果出現(xiàn)問(wèn)題怎么辦?可以遵照以下順序查找?guī)椭?/p> a)書(shū)籍或者手冊(cè),在線文檔,在線幫助等等 b)在官網(wǎng)的wiki或者stackoverflow.com上搜索相關(guān)的關(guān)鍵字。 c)使用google搜索相關(guān)關(guān)鍵字。 d)到stackoverflow或者官方郵件列表、官方論壇中提問(wèn)。 一般來(lái)說(shuō)最好訂閱這門(mén)語(yǔ)言的郵件列表,比如Lua的郵件列表就是http://www.lua.org/lua-l.html 即使不提問(wèn),看看別人的問(wèn)題也是很有意思的。 我不建議大家加入什么QQ群學(xué)習(xí),QQ或者msn的即時(shí)通訊特性決定了它不是一個(gè)很好的學(xué)習(xí)方式,基本上只適合打屁聊天。 8 到了四五個(gè)月以后,按照前面步驟學(xué)下來(lái)的朋友應(yīng)該已經(jīng)算是中級(jí)水平了,不太可能問(wèn)出什么“跪求、裸求”之類(lèi)的弱智問(wèn)題。這時(shí)候就可以往更深入的層次發(fā)展,比如試著讀讀源代碼,試著寫(xiě)寫(xiě)相關(guān)編程庫(kù)編程插件,在官方論壇、maillist、stackoverflow里面多幫人解答解答問(wèn)題,試著多寫(xiě)寫(xiě)自己對(duì)于這門(mén)語(yǔ)言的使用經(jīng)驗(yàn),分享一些相關(guān)問(wèn)題等等,就此走向“破碎虛空”的高手之路。 好了,就這樣吧!
聯(lián)系客服