前幾天有人在微博問我如何學習C語言。之前也有人諮詢過類似的問題。我把我學習一門語言的過程嘮叨下,僅供參考。
我學習一門語言大概會經歷如下幾步。
基本語法
學習任何東西,都是一個由表及裡的過程。學習一門程式語言也一樣。對於一門程式語言來說,表就是基本語法。
對於基礎語法的學習,我喜歡看一些簡短而又系統的教程。一般這些教程標題很有特色。如,X天學會X語言。一門語言要學習的東西其實很多的,這類文章一般會把常用的基本語法總結提煉。
技巧和坑
雖然絕大部分語言的語法都差不多。但是,語言之間語法還是有差異的。如果都這些差異不瞭解,而是套用以前的經驗,很可能掉到坑裡面。比如==在PHP和Java中的含義並不是完全一致。
如何避免坑,或者掌握需要特有的技巧?我通常會從兩個途徑下手。第一,看一些面試題之類的文章。第二,看一些優秀的原始碼。如一些框架的程式碼。在看程式碼的過程中,你會發現一些新的語法,使用技巧等。
系統學習
基礎語法學習,能讓你快速上手,應用實踐。對技巧和坑的關注,一定程度上擴充了你的知識面。系統學習,一方面會進一步擴充你的知識面。另一方面,也有利於你語言知識結構的形成。
找幾本系統講解這門語言的書,認真學習。我在學PHP的時候,曾經認真看過PHP手冊。看完之後,很有收穫。
語法之外
任何一門成熟語言,都有其特有的生態。這個生態包括,框架,擴充套件包,解決方案,規範等。除了學習語法之外,這些東西也是需要學習的。這些我一般都是碰到了才去學。
如果還有精力,我還會去學習下語言更底層的東西。而不僅僅停留在應用層面。如jvm是如何執行java程式碼的。java的執行緒和作業系統執行緒的關係。以及一些作業系統方面的知識。
動手練兵
對於發現的新的語法或者技巧,建議大家親手實踐一次。有些文章已經很老了。實踐的目的,一是檢驗是否正確。另外就是加深印象。正所謂,紙上得來終覺淺。
有些人會困惑,每天工作都是資料庫的curd操作。如何把學到的東西應用到實踐中?我的解決方法是,自己業餘時間搞一些小專案,把學到的知識應用進入。我當初寫kvproxy的時候,沒人要求我去寫。我只是感覺搞這個能鍛鍊技術,又能解決一些問題。
歡迎交流
一家之言,不分對錯。歡迎交流。
我的部落格 www.bo56.com
原文連結:如何學習一門程式語言,轉載請註明來源!