當前位置:
首頁 > 最新 > 程序員如何學習一門新的編程語言

程序員如何學習一門新的編程語言

很多程序員在學習一門新的編程語言時往往會走兩種路子:

? 1.粗粗看看語法,就擼起袖子開干,邊查Google邊學習

? 2.花很多時間完整地把整個語言學習一遍,做到胸有成竹,然後再開始做實際工作

第一種學得太少,第二種學得太多,都不合適,其實學習一個編程語言達到能夠入流的程度並不需要太高深的東西,平時需要用到的大都是基礎知識,集中一周業餘時間學習一下完全能達到掌握的目的。

其實寫程序不怕完全不會,最怕一知半解的去攢解決方案。因為你完全不會,就自然會去認真查書學習,如果學習能力好的話,寫出來的代碼質量不會差。而一知半解,自己動手土法鍊鋼,那搞出來的基本上都是廢銅爛鐵。

因此,即使時間再緊張,使用新編程語言進行開發之前,下面的這些內容也是必須首先完整了解一遍的。掌握這些內容之後進入實際開發,即使有問題,也基本不會傷及項目大體。而開發者本人則可以安步當車,慢慢在實踐中提高自己。

1. 了解該語言的

? 基本數據類型

? 基本語法和流程式控制制,判斷/分支/循環等

? 主要數學運算符

? print函數的使用

達到能夠編寫數學習題的程度.

2. 掌握

? 數組和其他集合類的使用

? 有基礎的話可以理解一下泛型,如果理解不了也問題不大,後面可以補;

3. 簡單字元串處理

? 所謂簡單,就是Regex和Parser以下的內容,什麼查找替換,截斷去字串之類的。不過這個階段有一個難點,就是字元編碼問題。如果理解不了,可以先跳過,否則的話最好在這時候把這個問題搞定,免留後患;

4. 基本面向對象或者函數式編程的特徵

無非是什麼

? 繼承、

? 多態、

Lambda函數之類的,

如果有經驗的話很快就明白了;

5. 異常、錯誤處理、斷言、日誌和調試支持,對單元測試的支持

你不一定要用TDD,但是在這個時候應該掌握在這個語言里做TDD的基本技能;

6. 程序代碼和可執行代碼的

? 組織機制

? 運行時模塊載入

? 符號查找機制

這是初學時的一個難點,因為大部分書都不太注意介紹這個極為重要的內容;

7. 基本輸入輸出和文件處理,輸入輸出流類的組織

這通常是比較繁瑣的一部分,可以提綱挈領學一下,搞清楚概念,用到的時候查就是了。到這個階段可以寫大部分控制台應用了;

8. 該語言如何進行callback方法調用,如何支持事件驅動編程模型。

在現代編程環境下,這個問題是涉及開發思想的一個核心問題,幾乎每種語言在這裡都會用足功夫,

? .NET的delegate,

? Java的anonymous inner class,

? Java7的closure,

? C++ OX的 tr1::function/bind,

五花八門。如果能徹底理解這個問題,不但程序就不至於寫得太走樣,而且對該語言的設計思路也能有比較好的認識;

9. 序列化和反序列化

掌握一下預設的機制就可以了;

10. 動態編程,反射和元數據編程,數據和程序之間的相互轉化機制,運行時編譯和執行的機制,

有抱負的開發者在這塊可以多下些功夫,能夠使你對語言的認識高出一個層面;

11. 如果有必要

可了解一下線程、並發和非同步調用機制,主要是為了讀懂別人的代碼,如果自己要寫這類代碼,必須專門花時間嚴肅認真系統地學習,嚴禁半桶水上陣;

12. 如果有必要

可在這時研究regex和XML處理問題,如無必要可跳過;

13. 如果有必要

可研究一下該語言對於泛型的支持,不必花太多時間,只要能使用現成的泛型集合和泛型函數就可以了,可在以後閑暇時抽時間系統學習。

需要注意的是,泛型技術跟多線程技術一樣,用不好就成為萬惡之源,必須系統學習,謹慎使用,否則不如不學不用;

14. 如果還有時間

最好諮詢一下有經驗的人,看看這個語言較常用的特色features是什麼,如果之前沒學過,應當補一下。比如

? Ruby的block interator,

? Java的dynamic proxy,

? C# 3的LINQ和extension method。

沒時間的話,我認為也可以邊做邊學,沒有大問題。

15. 在工作的閑暇時間,可以著重考察兩個問題,

? 第一,這個語言有哪些慣用法和模式,

? 第二,這個語言的編譯/解釋執行機制。

至此語言的基本部分就可以說掌握了,之後是做資料庫、網路還是做圖形,可以根據具體需求去搞,找相應的成熟框架或庫,邊做邊學,加深理解。

掌握了以上的內容,就給練武術打好了基本功,雖然不見得有多優秀,但是肯定是根正苗紅,將來不必繞大彎子。就算是臨時使用的語言,把上面這個提綱精簡一下,只看重體字的部分,大致能在幾天到一周內搞定,不算是太耗時,而且寫出來的代碼不會太不靠譜。

以上提綱未設及內存模型。對於C/C++,這個問題很重要,要放在顯著位置來考慮,但對於其他語言,這個問題被透明化了,除非你要做hardcore項目,否則不必太關注。

轉自: 喬高建-博客園

權威發布有關Imagination公司CPU,GPU以及連接IP、無線IP最新資訊,提供有關物聯網、可穿戴、通信、汽車電子、醫療電子等應用信息,每日更新大量信息,讓你緊跟技術發展,歡迎關注!伸出小手按一下二維碼我們就是好朋友!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Imagination Tech 的精彩文章:

2017 Imagination假日禮品指南——十大產品介紹
Imagination月度問答:AI被過度炒作了嗎?
人工智慧時代的研究熱點是什麼,主要應用領域是什麼?
圖像識別的原理、過程、應用前景,精華篇!

TAG:Imagination Tech |