<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    海闊天空

    I'm on my way!
    隨筆 - 17, 文章 - 69, 評論 - 21, 引用 - 0
    數(shù)據(jù)加載中……

    如何“快速”掌握一門語言

    現(xiàn)在的開發(fā)工作要求我們能夠快速掌握一門語言。一般來說應對這種挑戰(zhàn)有兩種態(tài)度:其一,粗粗看看語法,就擼起袖子開干,邊查Google邊學習;其 二是花很多時間完整地把整個語言學習一遍,做到胸有成竹,然后再開始做實際工作。然而這兩種方法都有弊病。第二種方法的問題當然很明顯,不僅浪費了時間, 偏離了目標,而且學習效率不高。因為沒有實際問題驅動的語言學習通常是不牢固不深入的。有的人學著學著成了語言專家,反而忘了自己原本是要解決問題來的。 第一種路子也有問題,在對于這種語言的脾氣秉性還沒有了解的情況下大刀闊斧地拼湊代碼,寫出來的東西肯定不入流。說穿新鞋走老路,新瓶裝舊酒,那都是小問 題,真正嚴重的是這樣的程序員可以在短時間內堆積大量充滿缺陷的垃圾代碼。由于通常開發(fā)階段的測試完備程度有限,這些垃圾代碼往往能通過這個階段,從而潛 伏下來,在后期成為整個項目的毒瘤,反反復復讓后來的維護者陷入西西弗斯困境。

    實際上語言學習有一定規(guī)律可循,對于已經掌握一門語言的 開發(fā)者來說,對于一般的語言,完全可以以最快的速度,在幾天至一周之內掌握其最常用的50%,而且保證路子基本正宗,沒有出偏的弊病。其實真正寫程序不怕 完全不會,最怕一知半解的去攢解決方案。因為你完全不會,就自然會去認真查書學習,如果學習能力好的話,寫出來的代碼質量不會差。而一知半解,自己動手土 法煉鋼,那搞出來的基本上都是廢銅爛鐵。比如錯誤處理和序列化,很多人不去了解“正路子”,而是憑借自己的一知半解去攢野路子,這是最危險的。因此,即使 時間再緊張,這些內容也是必須首先完整了解一遍的。掌握這些內容之后進入實際開發(fā),即使有問題,也基本不會傷及項目大體。而開發(fā)者本人則可以安步當車,慢 慢在實踐中提高自己。

    以下列出一個學習提綱,主要針對的是有經驗的人,初學者不合適。這個提綱只能用于一般的庸俗編程語言學習,目前在 流行編程語言排行榜上排前20的基本上都是庸俗語言。如果你要學的是LISP之類非庸俗語言,或是某個軟件中的二次開發(fā)語言,這里的建議未必合適。還是那 句話,僅供參考。

     

    1. 首先了解該語言的基本數(shù)據(jù)類型,基本語法和主要語言構造,主要數(shù)學運算符和print函數(shù)的使用,達到能夠寫譚浩強程序設計書課后數(shù)學習題的程度;

    2. 其次掌握數(shù)組和其他集合類的使用,有基礎的話可以理解一下泛型,如果理解不了也問題不大,后面可以補;

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

    4. 基本面向對象或者函數(shù)式編程的特征,無非是什么繼承、多態(tài)、Lambda函數(shù)之類的,如果有經驗的話很快就明白了;

    5. 異常、錯誤處理、斷言、日志和調試支持,對單元測試的支持。你不一定要用TDD,但是在這個時候應該掌握在這個語言里做TDD的基本技能;

    6. 程序代碼和可執(zhí)行代碼的組織機制,運行時模塊加載、符號查找機制,這是初學時的一個難點,因為大部分書都不太注意介紹這個極為重要的內容;

    7. 基本輸入輸出和文件處理,輸入輸出流類的組織,這通常是比較繁瑣的一部分,可以提綱挈領學一下,搞清楚概念,用到的時候查就是了。到這個階段可以寫大部分控制臺應用了;

    8. 該語言如何進行callback方法調用,如何支持事件驅動編程模型。在 現(xiàn)代編程環(huán)境下,這個問題是涉及開發(fā)思想的一個核心問題,幾乎每種語言在這里都會用足功夫,.NET的delegate,Java的anonymous inner class,Java 7的closure,C++OX的 tr1::function/bind,五花八門。如果能徹底理解這個問題,不但程序就不至于寫得太走樣,而且對該語言的設計思路也能有比較好的認識;

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

    10. 序列化和反序列化,掌握一下缺省的機制就可以了;

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

    12. 動態(tài)編程,反射和元數(shù)據(jù)編程,數(shù)據(jù)和程序之間的相互轉化機制,運行時編譯和執(zhí)行的機制,有抱負的開發(fā)者在這塊可以多下些功夫,能夠使你對語言的認識高出一個層面;

    13. 如果有必要,可研究一下該語言對于泛型的支持,不必花太多時間,只要能使用現(xiàn)成的泛型集合和泛型函數(shù)就可以了,可在以后閑暇時抽時間系統(tǒng)學習。需要注意的是,泛型技術跟多線程技術一樣,用不好就成為萬惡之源,必須系統(tǒng)學習,謹慎使用,否則不如不學不用;

    14. 如果還有時間,最好咨詢一下有經驗的人,看看這個語言較常用的特色features是什么,如果之前沒學過,應當補一下。比如Ruby的block interator, Java的dynamic proxy,C# 3的LINQ和extension method。沒時間的話,我認為也可以邊做邊學,沒有大問題。

    15. 有必要的話,在工作的閑暇時間,可以著重考察兩個問題,第一,這個語言有哪些慣用法和模式,第二,這個語言的編譯/解釋執(zhí)行機制。

    至 此語言的基本部分就可以說掌握了,之后是做數(shù)據(jù)庫、網絡還是做圖形,可以根據(jù)具體需求去搞,找相應的成熟框架或庫,邊做邊學,加深理解。對于一個庸俗語 言,我自己把上面的內容走一遍大概要花2-3周時間,不能算很快,但也耽誤不了太多事情,畢竟不是每個月都學新語言。掌握了以上的內容,就給練武術打好了 基本功,雖然不見得有多優(yōu)秀,但是肯定是根正苗紅,將來不必繞大彎子。就算是臨時使用的語言,把上面這個提綱精簡一下,只看藍色重體字的部分,大致能在幾 天到一周內搞定,不算是太耗時,而且寫出來的代碼不會太不靠譜。

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



    摘自:http://blog.csdn.net/myan/archive/2008/10/25/3144661.aspx

    posted on 2009-08-21 21:45 石頭@ 閱讀(1902) 評論(0)  編輯  收藏 所屬分類: java_base

    主站蜘蛛池模板: 亚洲无线码一区二区三区| 无码视频免费一区二三区| 久久久久亚洲AV无码专区网站 | 亚洲国产精彩中文乱码AV| 激情亚洲一区国产精品| 蜜桃成人无码区免费视频网站 | 亚洲高清中文字幕免费| 亚洲妇女水蜜桃av网网站| 亚洲人成网男女大片在线播放 | 在线人成精品免费视频| 亚洲国产精品成人久久蜜臀 | 免费看的一级毛片| 亚洲爆乳精品无码一区二区| 成年性午夜免费视频网站不卡| 亚洲色成人四虎在线观看| 免费观看毛片视频| 免费无码婬片aaa直播表情| 亚洲国产成人久久精品99| 国产啪精品视频网站免费尤物 | 欧美好看的免费电影在线观看| 亚洲毛片不卡av在线播放一区| 国产精品福利在线观看免费不卡| 无码日韩人妻av一区免费| 亚洲乱码中文字幕综合| 四虎国产精品永久免费网址 | 亚洲综合精品一二三区在线| 羞羞视频免费网站含羞草| 亚洲中文无码永久免费| 精品国产亚洲AV麻豆| 曰韩亚洲av人人夜夜澡人人爽| 小草在线看片免费人成视久网| 久久精品国产亚洲av麻豆蜜芽| 在线观看国产情趣免费视频| 毛片基地看看成人免费| 亚洲黄色免费观看| 国产jizzjizz免费视频| a毛片免费全部在线播放**| 亚洲欧洲成人精品香蕉网| 13一14周岁毛片免费| 狠狠综合亚洲综合亚洲色| 亚洲av丰满熟妇在线播放|