簡述C和C++的學習過程。小哥老師總是被同學問怎麽學C和C++才不至於無所適從,不至於亂學。想了壹下,這裏是壹個大概的回復。作為壹家人,歡迎拍磚。1,可以考慮先學C。很多時候,學習語言的目的不是成為語言專家,而是成為解決問題的專家。做壹個有用的程序員,做壹個賺錢的程序員。我們的價值會體現在客戶的價值上,而不是語言好不好。C++是C的面向對象解釋,C++為C擴展了大型工程應用和復雜系統結構的組織控制方法,但是,我覺得C++骨子裏還是C。畢竟要解決具體問題,每個函數都是用C寫的,還是面向過程的。所以,想學好C++,我建議妳先學C,先學解題能力,再討論解決大問題的能力。就是先學會走,再學會跑。2.在學習C的過程中,壹定要了解結構化的編程思維。為什麽?我在前面的壹篇文章裏說過,軟件語言的開發過程就是壹個數據私有化的過程。大型工程應用強調高內聚、低耦合和模塊化設計,保持代碼的最大靈活性和安全性。這是現代工程發展的核心和靈魂。所以用C語言入門,了解結構化開發思維,是壹個非常方便的方法。因為C的功能本來就是準備重用的。同時,從cpp內部全局變量和私有變量的區別及其使用原則中,我們可以學到很多結構化的開發思維。3.開始學習C++ C++並不難。很多人覺得C++難學,其實是因為它提供了很多概念,尤其是對象,很難理解。但是,這麽多年過去了,我已經淡化了這個問題。我認為面向對象是相對面向過程的,這只是結構化編程的壹個具體體現,是編譯器提供手段迫使程序員遵循數據私有化的壹個例子,C++和C的關系核心也無非如此。現在讓我們回到c,如果我們把壹個全局變量寫入壹個cpp,而沒有在對應的H文件中聲明它,那麽它是唯壹可以使用的模塊嗎?是私有變量嗎?有了這樣的認識,班級能理解嗎?4、在類的基礎上學習C++的深入技巧,C++經過這麽多年的發展,其實提供了很多深入的概念,看似很復雜,其實我覺得也很簡單。比如模板,我的理解是“類的類”,妳說是不是?現在模板理解了STL,ATL,靜態模板庫,動態模板庫,是不是還很難理解?就是很多類,可以用來實現應用中需要的很多類,不需要程序員自己寫。好了,STL明白了,泛型開發還有難度嗎?所謂泛型開發,其實就是我做壹個模板來定義壹套算法規則。不過我希望這個算法規則可以進壹步抽象,核心數據類型我不做限制。我可以使用各種數據,所以不需要只重寫這部分算法。妳認為這是事實嗎?學到這裏,C++和C,其實差不多就夠了。再學壹門語言,就是求全責備,太過分了。5、學習應用開發前面說過,學習語言的目的不是讓別人認為自己是專家,而是寫程序賺錢。所以學了語言學之後,要學應用開發。什麽是應用開發?我懂壹種語言,但是客戶不懂。客戶直接說。給我寫壹個Windows下的程序,要什麽功能。為什麽是Windows?因為我習慣了。好吧,很多情況下,應用開發要尊重客戶的習慣。壹般來說,語言要結合具體平臺的開發,才能開發出有意義的應用,才能賣錢。嗯,壹般來說,客戶端是Windows系統,服務器是Linux,這些都是行業習慣。嵌入式系統就不好說了,有各種平臺,比如Palm,S60,Linux,WinCE等等。這取決於妳的目標客戶。當我們選擇目標平臺的時候,有壹個問題,選擇哪種語言。很多時候,這就是學生和商業程序員的區別。學生壹般沒得選,知道什麽就用什麽,企業的程序員不行。我們必須首先評估需求,看看哪種語言更合適。如果我們不能,我們必須學習。好的,如果選擇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應用,但是不需要那麽多。做壹個簡單的對話,然後實現壹個功能。其實妳遇到的大部分界面功能都是以後常用的。熟練的記住常用的,就ok了。重點是此時通過WinMain了解Windows的事件機制,這是核心。其實就和死壹樣簡單。以前妳的程序,因為沒有系統支持,很多事情都要自己做,比如檢查鼠標鍵盤輸入。妳需要寫壹個無限循環,然後壹直自己看著它,但是Windows說,不要做這些事情,我會比妳做得更好。沒事就去玩吧。我會把和妳相關的新聞放在壹個隊列裏,這個隊列就是妳的事件隊列。沒事就自己去找吧。如果有什麽新消息,就做點什麽。沒事就好好玩。很簡單,不是嗎?當然,Windows是壹個多任務操作系統。有時候,我們的邏輯需要並發函數。例如,當我在等待鼠標和鍵盤消息時,我需要查看打印機是否準備好了。在這裏,我需要理解並行計算,它與語言和操作系統無關。這是另壹個話題,這裏就不多說了。可以自己去找線程開發的相關資料。看到了吧,要想學好Windows編程,其實我們需要學習的不僅僅是語言,還有操作系統,並行計算的原理,內存的原理,也許有時候還需要學習網絡通信等很多知識,所以單靠學習語言是無法成為商業程序員的。壹個合格的程序員要理解的東西太多了,要廣泛學習。當我們理解了Win32API和基本的窗口編程之後,就可以回到MFC繼續學習了。是不是有點遞歸返回?哈哈。8.回到MFC學習MFC是非常困難的,因為它封裝了太多的細節,很難理解透徹。不過幸運的是,我們有侯老師對MFC的簡單解釋。下面我們來了解壹下如何從Win32API的純C編程轉換到MFC的C++模式。看到這個是最快的。看完前六章,我已經學會了,這裏就不多說了。9,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靈活。10,沒了。按照少林門派的說法,學完以上,妳其實已經在18青銅陣中戰鬥過了,可以下山幫助智主,掃除漢奸,扭轉乾坤,拯救萬民。但是,關鍵是妳有沒有通過上面的過程學會學習方法,遇到新的東西就不難學了。這大概是武俠裏的理解。有了這個基礎,以後只要慢慢練,估計20年後,妳會比天下英雄都厲害。呵呵,妳不覺得嗎?咻,我太累了。從
記得領養
上一篇:有哪些文化和民間工藝美術?中國傳統民間藝術有哪些類型?下一篇:保險集團對子公司的管理