簡述C和C 的學習歷程

2021-06-16 02:55:12 字數 3931 閱讀 5901

1、可以考慮先學習c.

大多數時候,我們學習語言的目的,不是為了成為乙個語言專家,而是希望成為乙個解決問題的專家。做乙個有用的程式設計師,做乙個賺錢的程式設計師。我們的價值,將體現在客戶價值上,而不是語言寫得好不好看。

c++是c的乙個物件導向的解釋,c++為c擴充了大規模工程應用,複雜的系統結構的組織和掌控方法,但是,我認為,c++骨子裡還是c的。

畢竟,解決具體問題,每個函式內部,都是用c的方式寫程式,還是面向過程的。

因此,想要學習好c++,我的建議,先學習c,先學解決問題的能力,再討論解決大問題的能力。就是先學習怎麼走路,再學習怎麼跑步。

2、學習c的過程中,一定要理解結構化程式設計思維。

為什麼呢,我前面有文章說過,軟體語言的發展過程,就是乙個資料私有化的過程,大型工程應用,強調高內聚,低耦合,模組化設計,保持**最大的靈活性和安全性。

這是現代工程化開發的核心和靈魂。

因此,利用c這門語言入門,藉此理解結構化開發思維,可以說是個很方便的路子。因為c的函式,本來就是為重用做準備的。同時,全域性變數和cpp內部私有變數的差別,其使用原則,這些都能學到很多結構化開發思維。

3、開始學習c++

c++不難學的,很多人覺得c++難學,其實是因為它在c之外,又提供了很多的概念,尤其是物件,很難以理解。

不過我經過這麼多年,把這個問題反而看淡了,我認為物件導向相對面向過程,僅僅是結構化程式設計的乙個具體體現,是編譯器提供手段,強迫程式設計師必須遵循資料私有化的乙個例項,c++和c的關係,最核心的莫過於此。

現在我們回到c再看看,如果我們把乙個全域性變數,寫到乙個cpp裡面,並且在對應的h檔案中不宣告,它是不是就只有這個模組可以使用?它是不是就是私有變數,以這個理解,類能明白了嗎?

4、學習c++的深入技巧

c++在類的基礎上,經過這麼多年的發展,其實提供了很多深入的概念,看起來很複雜,其實我看也很簡單。比如模板,我的理解就是「類的類」,大家說是不是?

既然模板理解了,stl,atl這些,靜態模板庫,動態模板庫,還難理解嗎?就是一大堆類的類,可以藉此實現很多應用中需要的類,不需要程式設計師再自己寫而已。

ok,stl都理解了,泛型開發還難嗎?所謂泛型開發,其實就是我做乙個模板,來定義一套演算法規則,但是呢,我希望這個演算法規則,能進一步抽象,對核心資料型別不要限死,我把各種資料套進去,都可以用,這樣,僅演算法這部分,我不需要重寫了。你想想是不是這個道理?

學到這裡,c++和c,其實已經差不多了。再學語言,就是求全責備,過於鑽牛角尖了。

5、學習應用開發

前面說了,學習語言,目的不是讓別人認為自己是專家,是為了寫程式賺錢。因此,語言學完,要學習應用開發。

什麼叫應用開發呢,我會一門語言,但是,客戶不懂,客戶說的很直接,在windows下給我寫個程式,我要什麼什麼功能。為啥windows呢?因為我習慣。

ok,很多時候,應用開發要尊重客戶習慣,一般說來,語言這個東東,還是要結合具體平台的開發,才能開發出有意義的應用程式賣錢。那麼,一般說來,客戶端是windows系統,伺服器是linux,這些都是行業習慣,嵌入式不好說,各種平台都有,palm,s60,linux,wince,等等。要根據自己的目標客戶來定。

當我們選定目標平台後,有乙個問題,選什麼語言,很多時候,學生和商用程式設計師差別就在這裡,學生一般沒得選,自己會啥就用啥唄,企業裡的程式設計師不會,要先評估需求,看哪個語言更合適,不會的語言,要去學。

ok,假定我們選了c和c++,那麼,我們需要選擇開發平台,windows下不用說了,vc,這是最好用的,linux下呢,gcc,其他的也差不多。

假如我們開發vc,並且使用c++,這個時候,才需要考慮學習mfc了,因為這是微軟的標準類庫,至少windows平台下,它最權威,你看見沒有,我們從學習開始,走了多少步,才走到mfc?是不是mfc不是學習c++上來就必須學的?

6、學習mfc

學習mfc,很多人一上來就開始看其體系架構,看得一頭霧水,那個模組關係依賴圖,我到現在都看不懂。

呵呵,其實不是啦,和學語言一樣,我們學mfc的目的,也不是希望成為mfc的專家,而是要利用mfc開發windows應用程式,為我們賺錢。看見沒?mfc是手段,不是目的,目的是開發windows程式。

其實windows下,有一套很標準的c介面,叫win32api,這個才是windows的標準程式設計核心,因此,學習mfc,真實的目的是理解windows程式開發,建議可以先學習win32api,看來我們又回到c了哈,呵呵。剛開始學c有用吧?

7、win32api

其實win32api不難學的,因為雖然它很大,有很多介面,但不是必須的,我們真正做個簡單的windows應用,其實用不到這麼多的。做個簡單的dialog,然後實現個功能,你遇到的介面函式,其實絕大多數,就是以後常用的了。把常用的記熟練,就ok了。

關鍵是,這個時候要通過winmain方式,去理解windows的事件機制,這是核心,其實說起來簡單得要死。就是以前你的程式,由於沒有系統支撐,很多事必須自己做,比如檢查滑鼠和鍵盤輸入,你需要寫個死迴圈,自己不斷去看,而windows說,這些事你不要做了,我來做比你好。你沒事就玩去吧,我把和你相關的訊息放到乙個佇列裡,就是你的事件佇列,你自己沒事去找找看,有沒有新訊息來,有就做事,沒事就玩好了。很簡單是不?

當然,windows是多工作業系統,有時候,我們的邏輯需要併發一些功能,比如說,我在等滑鼠鍵盤訊息的時候,需要再看看印表機準備好了沒有,這裡就需要理解平行計算了,這和語言無關,和作業系統無關,這是另外乙個話題,這裡不多說了,你可以自己找找執行緒開發的相關資料看。

看見沒,為了學習好windows程式設計,其實我們不僅僅需要學習語言,還要學習作業系統,平行計算原理,記憶體原理,可能有時候還需要學習網路通訊,等很多知識,所以說,單憑學習語言,是成不了商用程式設計師的,乙個合格的程式設計師,需要理解的東西,太多了,要廣為學習。

當我們把win32api,以及基本的視窗化程式設計理解了,就可以回到mfc繼續學習了。是不是有點遞迴返回的意思?呵呵。

8、回到mfc

原來學mfc很難的,因為其封裝了太多細節,很難理解透徹。不過還好,我們有侯老師的深入淺出mfc,去找本來看看,如何從win32api的純c程式設計,改變為mfc的c++方式,看這個最快,基本上前6章看完,已經會了,這裡我就不多說了。

9、com

com、com、com,我最頭疼的com,呵呵。

com就是一種遠端過程呼叫,即你請求的**是在另外乙個程序中執行的,通過某種通訊協議來回傳遞引數和結果。僅此而已。dcom進了一步,服務者可以在另外一台計算機上。在公司開發中,大家可能各做一塊,如果要合作,windows下建議多使用com.(我個人喜歡socket通訊哈)

簡單說,com提供了一種機制,可以跨程序通訊,甚至跨機器通訊。不過,為了傳遞各種型別的引數,com可謂是無所不用其極,它發明了智慧型指標,可以指向任何型別的資料,同時,為了實現智慧型指標,它使用了大量的c++泛型設計,看見沒,c++的基本功就起作用了,還用到了atl.

學習com,要注意乙個介面的概念。由於開發者是不同的人,呼叫程式和服務程式,可能不是同一種語言,ok,不能簡單提供乙個c或c++的。h檔案來解答介面,因此,com提供了標準介面,使用者在程式內部,以查詢方式獲得可用介面,進而以介面id呼叫。很累人的。

學會了com,就可以多理解一點activex了,那麼再學習一點dll(動態鏈結庫)的知識,我們就已經可以寫ocx控制項了。一般說來,ocx控制項是個很好的設計,哪都能用,乙個軟體的模組,最理想是開發成這個樣子,比exe靈活。

按少林派說法,學了上述這些,其實已經算打過18銅人陣了,已經可以下山助明主,掃奸佞,扭轉乾坤,解萬民於倒懸了。

不過,關鍵是你通過上面的過程,是不是已經學會了學習的方法,再遇到新的東東,是不是已經不難學了?這大概就是武學中的悟性了,有了這個根基,以後只要慢慢修煉,估計20年後,可與天下英雄一較短長了。

簡述C和C 程式設計師學習歷程

j 0 p w t5 d6 d c9 0 b u x x p y h i 9 l k9 s v4 m j4 s0 z f h g9 i p9 y k 3 j g e6 d n r 8 w8 q k m r o4 o b b 1 i7 j w x1 j4 s p1 f3 u0 m 假如我們開發vc,並...

c 學習歷程3

class animal get public virtual void voice class house animal class sheep animal 多型 乙個方法多種狀態 animala newhouse animalb newsheep method a method b 如果沒虛函...

C 學習歷程(一 C 基礎)

1 c 的結構體 struct employee intmain c 結構體可以帶方法的,訪問許可權可以是public private protected,並且可以從類或結構體那裡繼承而來 2 c 的類 class employee intmain c 結構體成員預設訪問級別 繼承是public,c...