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