我的編程回顧 - 淺談怎么快速學習一門新的編程語言
我從2002年到現在,學習了好幾種編程語言。有一些,早已不用并且忘光了,有一些盡管不用但還會惦記著,還有一些,朝九晚五地用著。
我回顧過去9年的學習經歷,差不多每年會學習一門新的語言,現在把它記錄如下:
語言 |
學習時間 |
狀況 |
C |
2002 |
學習時候在TC上編了一些玩具程序,還曾記得,遷移到VC的時候,找不到graphics.h時的不知所措。讀C程序的時間遠遠多于寫C程序。 |
C++ |
2003 |
整天抱著TCppPL,混跡于CSDN C++版。2005-2008年,一直用C++寫代碼 |
Java |
2004 |
想了解一些Web方面的知識,于是開始學習Java。05年后一直沒碰到,直到08年轉做網頁游戲,又重新拾起。 |
Python |
2005 |
我第一份工作的第一個任務就是做游戲服務器的任務系統,用的腳本正是Python。后來幾年也會用Python寫一些小工具。 |
Lua |
2006 |
魔獸世界讓Lua火起來了,隨波逐流地開始學習,后來喜歡上了。現在Lua是我游戲開發的御用腳本。 |
Perl/Erlang |
2009 |
為了讀懂一些mysql管理工具,決定學習Perl。黃金國度的大部分工具都是用Perl開發。Perl帶給我最大的麻煩是,一段時間后,讀自己的代碼都很晦澀。07年的時候就聽大家討論Erlang了,但一直沒碰,借著國內出了第一本Erlang技術書的東風,開始學習起來。真的很喜歡,但也很清楚,短時間不會在商用項目里面使用,所以暫且擱置,但總會惦記著。 |
Scala |
2010 |
因為Erlang的原因,開始接觸Scala,嘗試了一段時間后,會覺得,既然我已經有Erlang,又何必要Scala呢。 |
ActionScript/Ruby |
2011 |
一直很少關注客戶端的技術,為了彌補這個缺陷,學習了AS。快樂編程是我追求的目標,于是開始嘗試Ruby |
每次開始學習一門新的語言,都會很興奮,如同進入一個嶄新的奇妙世界。興奮之后,會發現,每次的學習過程大同小異: 安裝編譯環境,測試Hello World,按照Tutorial一步一步的嘗試,訂閱郵件列表,看相關書籍,研讀源代碼,不斷寫代碼。不斷寫代碼是最重要的,其它步驟都是為它服務。
我竟然學了那么多語言,而且還在不斷學習新的。論語道“學而不思則罔,思而不學則殆”。所以,我要總結。我把學習一門新的語言分成3個階段: 會用、熟練用和舉一反三揚長避短用。因為精力有限,大部分時候,我們只是淺嘗則止,也就是我說的“會用”——能借助google和幫助文檔,完成功能開發,對代碼質量無要求。
我發現,“淘金式”的學習方法能幫助我們快速“會用”。我把要淘的金子總結如下:
1. 數據類型:數值、字符串和布爾
2. 數據結構:數組和哈希字典
3. 變量聲明與定義
4. 函數聲明與調用
5. 程序結構:條件和循環
6. 文件操作:打開文件、讀寫文件、遍歷目錄
7. XML文件
8. 正則表達式
9. 數據庫
10. 雜項:格式化輸出、調用外部命令、時間日期、隨機數和程序輸入參數
具體的例子,對于Ruby來說,知識點又是這樣的:
知識點 |
內容 |
數據類型 |
a. 支持整數、浮點數 b. 字符串是mutable的,可以設置編碼,對應String類,什么index/start_with/end_with/split應有盡有 c. 字符串判斷相等== 和?eql都可以 d. True/False/Nil |
數據結構 |
a. 對應Array和Hash b. 初始化分別是[1, 2, 3]和{“one”=>1, “two”=>2, “three”=>3} c. 遍歷方式: xx.each{|x| print x} d. |
變量聲明與定義 |
a. 支持全局變量、局部變量、類變量和實例變量。Ruby對于不同變量的命名有契約規則 b. 不需要提前聲明,也不需要指定類型,也沒有var等修飾符 |
函數聲明與調用 |
a. def foo() puts “hello world” end b. foo() c. 語句可以不要終止符’;’,有時函數調用中的圓括號可以被省略 |
程序結構 |
a. 條件式 if/elsif/else/end b. 循環 while/do/end c. 循環 for var in collection do end d.ruby的迭代/枚舉功能很強大 |
文件操作 |
File/Dir/FileTest |
XML文件 |
rexml/document足夠用了 |
正則表達式 |
=~ / / |
數據庫 |
Mysql/Ruby據說不錯 |
雜項 |
a. puts/print/printf b. `外部命令` c. Time.now d. srand/rand e. ARGV |
怎么樣?是不是對于Ruby有一個大概的認識?是不是想嘗試一下這種淘金式的學習方法?那就開始吧。
轉自:http://www.cnblogs.com/ro4tub/archive/2011/08/21/how_to_learn_a_new_computer_language.html