如何學習一門新的語言二——方法與步驟

來源:互聯網
上載者:User

之前發表過一篇文章,也是談如何學習一門新的語言《如何學習一門新的語言》,這篇文章主要的關注點是心態。

今天這篇文章主要的關注點是具體的方法和步驟,是我學習C++和python的一些經驗,整理出來和大家一起討論。另外,我主要針對的已經掌握了一門程式設計語言,再學習一門新的語言的情況。

先簡要介紹下我是如何學習c++的。

出發點:工作兩到三年內,我的主要開發語言是c。後來由於工作的需要,要實現一個流程引擎(屬於預研項目)。在研究的過程中發現使用c語言處理這種邏輯比較複雜的程式有些力不從心,我想嘗試使用物件導向的方式處理這個問題,所以我想到了c++。現在回想起來,其實當時自己也就是想使用c++的物件導向特性,我現在也基本只使用了c++的一個子集:物件導向。

起步:當時我們公司沒有人使用過C++,我也是在大學的時候接觸過,後來也沒有用過,所以整個過程困難還是比較多的。因為有c的基礎,所以我沒有看c++的入門資料,比如《C++primer》(其實我到現在也沒有從頭到尾讀過這本書,c++的很多特性我也沒有使用過。),我直接使用c++來編寫程式。中間遇到很多低級的問題,比如如何定義一個類的static成員變數;虛函數如何定義,如何使用;stl中string,list如何使用;c++如何調用c的庫等等。這些問題都比較好解決。

最大的障礙:從c到c++,最大的障礙不是文法的障礙,而是思維方式的轉變:由面向過程到物件導向的轉變。這個轉變時一個漫長的過程,我現在仍在進行。當時開發是為了更好的使用物件導向,快速的瀏覽了一下《設計模式》中的23個設計模式。現在想想,如果能夠找一份開源的c++代碼看看也許效果更好。

深入與提高:最終我還是用c++實現了我的目標。不過,這個程式在高層設計上採用的是物件導向,在中層和底層設計上仍然使用的是面向過程的思路。在這個過程中,我對c++和物件導向有了更深入的理解,也積累了一些經驗。這個時候我沒有選擇全面的學習一些c++的文法,而是選擇學習《effective c++》。這本書對外影響很大,讓我知道如何去更有效使用c++。學習的過程中也許會遇到一些不會的文法知識,查一下資料就可以解決了。後來又在幾個項目中使用了c++,慢慢的有些得心應手了。

下一步計劃:對於c++的文法,我的觀點是用到了在學。我下一步的計劃是學習《more effective c++》,《c++ 沉思錄》,《深入理解c++物件模型》,以求對c++有更深入的理解。另外,再深入的學習一下《設計模式》。還有就是google的c++編程規範。對於是否要涉及c++的其他子集,比如模板,我會繼續觀察,看有沒有這樣的需求。當然,有一點很重要,就是要在工作中去用它解決問題。

 

關於python學習

出發點:這門語言我剛開始學,還沒有學多長時間。我沒有想完全拋棄c++,但是我想找一個更加方便高效的工具來完成某些任務。我以後可能會考慮將python和c++混合使用。選擇python的另一個原因是google也在用它。

起步:找了一個入門的資料《簡明python教程》學習了一下,對python文法有了一個基本的瞭解。然後選擇《diveintopython》深入學習,目前還沒有學完。不過現在感覺有些問題,自己好像陷入到了這些細枝末節中。所以準備做一些調整。

下一步計劃:1)快速預覽《diveintopython》;2)找一個開原始碼學習一下;3)開始使用python來解決問題;4)後面深入提高。

 

最後總結一下:

1、把握重點與主線:什麼是學習一門新語言是的重點?我認為這應該是這門語言異於或優於你原有語言的地方(出發點不同,答案可能不盡相同)。對我來說,c++的重點就是物件導向,python的重點就是動態語言特性以及高效性。

2、不要陷入語言的細枝末節中:剛開始學習一門語言時,要避免過早陷入語言的細枝末節中(比如文法,技巧等)。並不是說這些東西不重要,而是這些東西可以在後面的實踐中慢慢的去學習的。那要怎麼做?看下面。

3、開始行動,而非等待準備就緒:不要等你把一門語言完全掌握了再開始行動。把握重點之後,馬上開始行動,用它來解決問題,在解決問題的過程中,完成對語言的完善和更深入一步的學習。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.