小白該如何學好C++?

小白該如何學好C++?
那麼作爲一個從C語言小白摸爬滾打、入坑無數到成長爲如今的高級C++遊戲開發工程師、高級C++服務端工程師、項目經理、技術總監、我想跟大家分享下大牛的學習心得與體會!

Linus曾說過:“C++是一門很恐怖的語言,而比它更恐怖的是很多不合格的程序員在使用着它”,這個世界上最難的編程語言可能非C++莫屬了,呵呵,雖然有點誇張...... 但是, 大家記住,難度越高意味着含金量與競爭力越高,越能把你和別人區分開來,所以,你在一開始就需要有很小心謹慎的態度,並把C++當成一種難以訓服的猛獸來看待
最後,如果大家如果在自學遇到困難,想找一個C++的學習環境,可以加入我們的C++學習圈,點擊我加入吧,會節約很多時間,減少很多在學習中遇到的難題。
小白該如何學好C++?

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

門檻與含金量並存,一旦你學會了C++,可以說,很多語言對你而言也就不是難事了。

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

小白該如何學好C++?
1.純小白(非計算機專業、沒學過任何編程語言)

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

針對第1、2種情況,我建議一定要把C語言基礎打牢,如果C沒學好,學C++會很受挫,打擊自信心,可以循序漸進,不知道怎麼學的可以關注我們,我們有一站式的學習方案!

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

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

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

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

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

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

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

Socket網絡編程,各種併發網絡模型(Select WSASelect IOCP)

C++靜態庫、動態鏈接庫dll ,開發項目中90%、SDK中一定用到,無需精通,但必須掌握。

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

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

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

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

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

STL庫,優秀的跨平臺模板庫STL 包含大量的STL容器,算法和函數等。

Boost庫 一個可移植、提供源代碼的C++庫,作爲STL標準庫的後備,是C++標準化進程的開發引擎之一,優秀而高效的模板與算法

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

磨刀不誤砍柴工,打仗還得有槍,下面最常用的工具你必須掌握:

集成開發環境: VS2010 ~ VS2017 ,越來越強大的IDE。

代碼配置管理工具: 最簡單易用的SVN 或 最流行的Git

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

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

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

小白該如何學好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等

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章