之前發表過一篇文章,也是談如何學習一門新的語言《如何學習一門新的語言》,這篇文章主要的關注點是心態。
先簡要介紹下我是如何學習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、把握重點與主線:什麼是學習一門新語言是的重點?我認為這應該是這門語言異於或優於你原有語言的地方(出發點不同,答案可能不盡相同)。對我來說,c++的重點就是物件導向,python的重點就是動態語言特性以及高效性。
2、不要陷入語言的細枝末節中:剛開始學習一門語言時,要避免過早陷入語言的細枝末節中(比如語法,技巧等)。並不是說這些東西不重要,而是這些東西可以在後面的實踐中慢慢的去學習的。那要怎麼做?看下面。
3、開始行動,而非等待準備就緒:不要等你把一門語言完全掌握了再開始行動。把握重點之後,馬上開始行動,用它來解決問題,在解決問題的過程中,完成對語言的完善和更深入一步的學習。
如何學習一門新的語言二 方法與步驟
之前發表過一篇文章,也是談如何學習一門新的語言 如何學習一門新的語言 這篇文章主要的關注點是心態。今天這篇文章主要的關注點是具體的方法和步驟,是我學習c 和python的一些經驗,整理出來和大家一起討論。另外,我主要針對的已經掌握了一門程式語言,再學習一門新的語言的情況。先簡要介紹下我是如何學習c ...
如何學習一門新的知識
想要學習一門新的知識,我認為需要從以下幾點入手。有了獲取知識的材料後,還要有能夠讓你動手實踐的環境。以學習python為例,我們可以使用簡單的文字編輯器來編寫 也可以使用python自帶的idle,還可以使用第三方的ide,例如我在 最好的python ide eclipse pydev 說的ecl...
如何學習一門新的技術
作為乙個從事軟體開發工作多年的程式設計師,技術是在不斷變化,我們在做乙個專案的過程中,會遇到很多新的技術,我們可以看到那些多年前的技術大牛,現在依然是技術大牛,那麼原因是什麼呢?原因很簡單,因為他們從來沒有間斷過學習,遇到新的技術,他們會按照自己的方法,及時去學習,實戰。那麼問題來了,對於我們這些技...