1. 程式人生 > >新手如何學好C++?

新手如何學好C++?

新手   c++ 編程   小白入門c++

最近,很多學員都給我發郵件問我應該如何學習C++,如何學好C++?


那麽作為一個從C語言小白摸爬滾打、入坑無數到成長為如今的高級C++遊戲開發工程師,高級C++服務端工程師,項目經理,我想跟大家分享下我自己的學習心得與體會!


Linus曾說過:“C++是一門很恐怖的語言,而比它更恐怖的是很多不合格的程序員在使用著它”,這個世界上最難的編程語言可能非C++莫屬了,呵呵,雖然有點誇張...... 但是, 大家記住,難度越高意味著含金量與競爭力越高,越能把你和別人區分開來,所以,你在一開始就需要有很小心謹慎的態度,並把C++當成一種難以訓服的猛獸來看待


那麽如果你只是一時興起,並沒有真正沈下心來想學好一門語言,那麽我不建議你學,因為學習C++是痛苦的,沒有興趣,那麽這個學習過程將是一種折磨與煎熬!


一般呢,學習C++的新手學員有以下幾種情況:

1.純小白(非計算機專業、沒學過任何編程語言)

2.接觸過C語言、但沒學好


針對第1、2種情況,我建議一定要把C語言基礎打牢,如果C沒學好,學C++會很受挫,打擊自信心,可以循序漸進!

這裏跟大家推薦小白可以短時間很快入門的C語言視頻課程:

http://edu.csdn.net/course/detail/5895


然後C語言中為核心知識點,附上指針精講視頻課程:

http://edu.csdn.net/course/detail/5896




3.C語言已經學的很好了,但沒接觸過C++

有了紮實的C語言基礎,恭喜,你可以開始學習C++了

這裏跟大家推薦小白可以短時間很快入門的C++視頻課程:


http://edu.csdn.net/course/detail/6200


4.C++基礎語法都學會了,然後想學點高級的?

以我多年的C++遊戲服務器開發經驗,企業中真實對開發者的考察要求無非就那麽幾點:



  • Socket網絡編程,各種並發網絡模型,這裏跟大家推薦 C++ 高級網絡編程視頻課程:


http://edu.csdn.net/course/detail/6082



  • C++泛型編程,模板,各種項目中存在大量模板設計,特別是框架,推薦C++模板視頻課程


http://edu.csdn.net/course/detail/5897




  • C++多線程,線程同步,線程池。 99%的項目一定用到,列為重點


  • C++動態鏈接庫 dll 。

    開發項目中90%、SDK中一定用到,無需精通,但必須掌握。


  • Win32高級編程 。 重點,真實企業項目中大量用到win32 API ,一定有相關的經驗。




  • C++數據結構,重點,最基礎的鏈表、隊列,棧,排序算法,各種算法,此乃程序的核心。



5.C++進階知識也會了,你需要學習基礎框架了。


  • MFC框架 。 可選,雖說MFC在windows桌面運用中因為其復雜性越來越顯得過時了。但是其OO思想還是發揮的淋漓盡致,可以了解熟悉下,各種控件、對話框、單文檔程序、多文檔走一遍,不僅可以掌握桌面運用開發,還可以再次鞏固面向對象的理念,總之MFC是個大雜燴,總會學點東西的。



  • QT框架. 跨平臺的應用程序和用戶界面框架,linux與windows桌面應用開發的優秀框架。


  • GTK+(GIMP Toolkit) GIMP 一個功能強大跨平臺的圖形庫,是GNU/Linux下開發圖形界面的應用程序的主流開發工具之一。


  • STL 包含大量的STL容器,算法和函數等。


  • Boost 一個可移植、提供源代碼C++庫,作為標準庫的後備,是C++標準化進程的開發引擎之一,一定要學習。



6.相關開發工具、無需深入、會使用即可。

打仗還得有槍,下面最長用的工具你必須掌握:

  • VS2010 ~ VS2015 ,越來越強大的IDE。

  • 代碼配置管理工具, 最簡單易用的SVN 與 最流行的Git

推薦小白30分鐘學會的Git入門視頻課程:


http://edu.csdn.net/course/detail/5894




7.有了以上6個方面的基礎,說明你已經具備企業開發的能力了。

但是每一行業都有其專註的技術,所以,你需要開始細分方向了,仔細思考你究竟想從事哪個行業,然後對號入座,

此刻就是術業有專攻了!一位真正的C++大牛即將誕生......


【流媒體開發工程師】
熟悉視音頻編解碼算法(如mpeg-4、H.264、H.265、G711、AAC等);
熟悉流媒體協議 RTP/RTCP , RTMP, RTSP, SIP ,HLS, HDS, TS;
熟悉開源多媒體項目 FFmpeg、GStreamer、 vlc、live555 ,nginx-rtmp , WebRTC、DSS、 ,darwin ;
熟悉流媒體服務器 Red5、FMS、Wowza等
熟悉多媒體容器封裝標準mp4, FLV , TS ,MPEG2-TS,mxf,mov 等流媒體文件封裝協議

【遊戲開發工程師】
熟練應用Cocos2d-x引擎,熟悉c++/cocos2dx開發模式;
Lua/Python腳本開發經驗者優先。
OpenGL/DirectX等工作經驗者優先
商業引擎 Unity 3D ,CE3和 UE4 , (Unreal Engine 4, CryENGINE 3 );


【服務器開發工程師】
有高性能高並發系統的開發經驗;
雲風skynet (基於C跟lua的開源服務端並發框架)
IOCP , epoll
具有分布式負載均衡相關經驗
lua ,python語言


【嵌入式開發工程師】
MTK平臺 (臺灣聯發科技 MediaTek)采用的是Nucleus OS, 嵌入式實時操作系統,使用標準C開發,其中Nucleus Plus提供源代碼下載。
vxworks、uc/OS等嵌入式操作系統開發
熟悉嵌入式CPU如STM8、STM32系列處理器的架構和應用;
精通ARM、AVR、STM32、8051、MSP430中一種MCU的結構和編程;
至少精通ARM、AVR、STM32、8051、MSP430中一種MCU的結構和編程;
熟練掌握ARM、MCU等控制器內部原理和配置
ZigBee是基於IEEE802.15.4標準的低功耗局域網協議。根據國際標準規定,ZigBee技術是一種短距離、低功耗的無線通信技術。


【人工智能工程師】
數學好
有基於Opencv開發項目經驗者優先
人工智能、深度學習、模式識別、 機器學習/機器視覺/圖像識別/語音識別/自然語言處理等算法開發;
目標檢測、識別算法,有Faster R-CNN,FaceNet等算法
熟悉深度學習開源平臺,如TensorFlow、Torth、Caffe、Keras、Theano 、Spark、OpenAI、Mxnet等
統計機器學習(如深度神經網絡、Boosting, 圖模型,概率統計,最優化方法、等)
計算機視覺(如圖像識別理解,人臉檢測識別、目標檢測和跟蹤、OCR、增強現實、圖像質量評價,圖像分割增強等)
熟悉主流的通用機器學習算法和大數據挖掘算法,如SVM,神經網絡,深度機器學習,數學建模,數據特征提取及挖掘等,並對CNN,RNN等模型有深入的研究。


【大數據工程師】
熟悉大數據平臺如Hadoop、HBase、Spark、Hive,Storm,Mahout更佳
使用tomcat/weblogic/WebSphere等中間件,懂得優化及集群搭建;
熟練使用mongodb/redis/Ehcache等流行技術;
熟悉MapReduce, Spark等基於Hadoop的數據架構及挖掘分析工具;
熟悉Matlab、SPSS等軟件工具,熟悉數種常用挖掘分析算法;
掌握常用的數據挖掘算法(貝葉斯、決策樹、k—均值、SVM、邏輯回歸、時間序列等)
掌握常用數據挖掘工具軟件:SPSS/MatLab/Weka等


說了這麽多,最後送各位小白一句自己的心得: 堅持學習、不斷學習、總有一天你會是真正的大牛!


本文出自 “IT牛魔王” 博客,請務必保留此出處http://huangqiang.blog.51cto.com/9068853/1976845

新手如何學好C++?