快速掌握一個語言最常用的50%
現在的開發工作要求我們能夠快速掌握一門語言。一般來說應對這種挑戰有兩種態度:其一,粗粗看看語法,就擼起袖子開幹,邊查Google邊學習;其二是花很多時間完整地把整個語言學習一遍,做到胸有成竹,然後再開始做實際工作。然而這兩種方法都有弊病。第二種方法的問題當然很明顯,不僅浪費了時間,偏離了目標,而且學習效率不高。因為沒有實際問題驅動的語言學習通常是不牢固不深入的。有的人學著學著成了語言專家,反而忘了自己原本是要解決問題來的。第一種路子也有問題,在對於這種語言的脾氣秉性還沒有了解的情況下大刀闊斧地拼湊程式碼,寫出來的東西肯定不入流。說穿新鞋走老路,新瓶裝舊酒,那都是小問題,真正嚴重的是這樣的程式設計師可以在短時間內堆積大量充滿缺陷的垃圾程式碼。由於通常開發階段的測試完備程度有限,這些垃圾程式碼往往能透過這個階段,從而潛伏下來,在後期成為整個專案的毒瘤,反反覆覆讓後來的維護者陷入西西弗斯困境。
實際上語言學習有一定規律可循,對於已經掌握一門語言的開發者來說,對於一般的語言,完全可以以最快的速度,在幾天至一週之內掌握其最常用的50%,而且保證路子基本正宗,沒有出偏的弊病。其實真正寫程式不怕完全不會,最怕一知半解的去攢解決方案。因為你完全不會,就自然會去認真查書學習,如果學習能力好的話,寫出來的程式碼質量不會差。而一知半解,自己動手土法煉鋼,那搞出來的基本上都是廢銅爛鐵。比如錯誤處理和序列化,很多人不去了解“正路子”,而是憑藉自己的一知半解去攢野路子,這是最危險的。因此,即使時間再緊張,這些內容也是必須首先完整了解一遍的。掌握這些內容之後進入實際開發,即使有問題,也基本不會傷及專案大體。而開發者本人則可以安步當車,慢慢在實踐中提高自己。
以下列出一個學習提綱,主要針對的是有經驗的人,初學者不合適。這個提綱只能用於一般的庸俗程式語言學習,目前在流行程式語言排行榜上排前20的基本上都是庸俗語言。如果你要學的是LISP之類非庸俗語言,或是某個軟體中的二次開發語言,這裡的建議未必合適。還是那句話,僅供參考。
1. 首先瞭解該語言的基本資料型別,基本語法和主要語言構造,主要數學運算子和print函式的使用,達到能夠寫譚浩強程式設計書課後數學習題的程度;
2. 其次掌握陣列和其他集合類的使用,有基礎的話可以理解一下泛型,如果理解不了也問題不大,後面可以補;
3. 簡單字串處理。所謂簡單,就是Regex和Parser以下的內容,什麼查詢替換,截斷去字串之類的。不過這個階段有一個難點,就是字元編碼問題。如果理解不了,可以先跳過,否則的話最好在這時候把這個問題搞定,免留後患;
4. 基本物件導向或者函數語言程式設計的特徵,無非是什麼繼承、多型、Lambda函式之類的,如果有經驗的話很快就明白了;
5. 異常、錯誤處理、斷言、日誌和除錯支援,對單元測試的支援。你不一定要用TDD,但是在這個時候應該掌握在這個語言裡做TDD的基本技能;
6. 程式程式碼和可執行程式碼的組織機制,執行時模組載入、符號查詢機制,這是初學時的一個難點,因為大部分書都不太注意介紹這個極為重要的內容;
7. 基本輸入輸出和檔案處理,輸入輸出流類的組織,這通常是比較繁瑣的一部分,可以提綱挈領學一下,搞清楚概念,用到的時候查就是了。到這個階段可以寫大部分控制檯應用了;
8. 該語言如何進行callback方法呼叫,如何支援事件驅動程式設計模型。在現代程式設計環境下,這個問題是涉及開發思想的一個核心問題,幾乎每種語言在這裡都會用足功夫,.NET的delegate,Java的anonymous inner class,Java 7的closure,C++OX的 tr1::function/bind,五花八門。如果能徹底理解這個問題,不但程式就不至於寫得太走樣,而且對該語言的設計思路也能有比較好的認識;
9. 如果有必要,可在這時研究regex和XML處理問題,如無必要可跳過;
10. 序列化和反序列化,掌握一下預設的機制就可以了;
11. 如果必要,可瞭解一下執行緒、併發和非同步呼叫機制,主要是為了讀懂別人的程式碼,如果自己要寫這類程式碼,必須專門花時間嚴肅認真系統地學習,嚴禁半桶水上陣;
12. 動態程式設計,反射和後設資料程式設計,資料和程式之間的相互轉化機制,執行時編譯和執行的機制,有抱負的開發者在這塊可以多下些功夫,能夠使你對語言的認識高出一個層面;
13. 如果有必要,可研究一下該語言對於泛型的支援,不必花太多時間,只要能使用現成的泛型集合和泛型函式就可以了,可在以後閒暇時抽時間系統學習。需要注意的是,泛型技術跟多執行緒技術一樣,用不好就成為萬惡之源,必須系統學習,謹慎使用,否則不如不學不用;
14. 如果還有時間,最好諮詢一下有經驗的人,看看這個語言較常用的特色features是什麼,如果之前沒學過,應當補一下。比如Ruby的block interator, Java的dynamic proxy,C# 3的LINQ和extension method。沒時間的話,我認為也可以邊做邊學,沒有大問題。
15. 有必要的話,在工作的閒暇時間,可以著重考察兩個問題,第一,這個語言有哪些慣用法和模式,第二,這個語言的編譯/解釋執行機制。
至此語言的基本部分就可以說掌握了,之後是做資料庫、網路還是做圖形,可以根據具體需求去搞,找相應的成熟框架或庫,邊做邊學,加深理解。對於一個庸俗語言,我自己把上面的內容走一遍大概要花2-3周時間,不能算很快,但也耽誤不了太多事情,畢竟不是每個月都學新語言。掌握了以上的內容,就給練武術打好了基本功,雖然不見得有多優秀,但是肯定是根正苗紅,將來不必繞大彎子。就算是臨時使用的語言,把上面這個提綱精簡一下,只看藍色重體字的部分,大致能在幾天到一週內搞定,不算是太耗時,而且寫出來的程式碼不會太不靠譜。
以上提綱未設及記憶體模型。對於C/C++,這個問題很重要,要放在顯著位置來考慮,但對於其他語言,這個問題被透明化了,除非你要做hardcore專案,否則不必太關注。http://blog.csdn.net/myan/archive/2008/10/25/3144661.aspx
[@more@]快速掌握一個語言最常用的50%
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24790158/viewspace-1041920/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何快速掌握一門新技術/語言/框架...框架
- 如何快速掌握一門新技術/語言/框架框架
- Top 5 榜單:最容易學習和最難掌握的程式語言
- 如何快速掌握一個ui框架UI框架
- 快速掌握iOS API的一個小技巧iOSAPI
- 50行Python程式碼寫一個語言檢測器Python
- 如何掌握程式語言
- 如何掌握 C 語言的一大利器——指標?指標
- 談下自己的認識只掌握一門語言
- 快速掌握Java8 Stream函數語言程式設計技巧Java函數程式設計
- 快速掌握mongoDB(一)——mongoDB安裝部署和常用shell命令MongoDB
- 50個常用的JQuery程式碼jQuery
- 漢語是最了不起的語言
- 最‘乾淨’的程式語言——空白程式語言
- 如何快速入門一門語言
- 你需要掌握的三種程式語言
- 一個題目涉及到的50個Sql語句SQL
- go語言:徹底掌握emojiGo
- 如何掌握所有的程式語言
- 王垠:如何掌握程式語言
- 小豬的C語言快速入門系列(一)C語言
- 一文帶你掌握C語言的迴圈結構C語言
- Basic語言誕生50週年:改變整個世界C語言
- Claude只用很少資料就能深刻掌握一門語言
- 快速搭建一個go語言web後端服務腳手架GoWeb後端
- 50個最常用的UNIX/Linux命令Linux
- BASIC 語言誕生 50 週年
- BASIC語言誕生50週年C語言
- 最喜歡與最討厭的程式語言
- 到底開發者需要掌握多少門語言?
- 20 種最奇怪的程式語言
- GitHub 上最流行的程式語言Github
- GO語言一個簡單的工程Go
- 一篇文章讓你徹底掌握 shell 語言
- 快速掌握Python基礎語法(下)Python
- 盤點十個最炫酷的雲端計算程式語言
- C語言第一個程式C語言
- 一個julia語言部落格