新手如何学好C++?

最近,很多学员都给我发邮件问我应该如何学习C++,如何学好C++/p>

 

那么作为一个从C语言小白摸爬滚打、入坑无数到成长为如今的高级C++游戏开发工程师、高级C++服务端工程师、项目经理、技术总监、我想跟大家分享下我自己的学习心得与体会!

Linus曾说过:“C++是一门很恐怖的语言,而比它更恐怖的是很多不合格的程序员在使用着它”,这个世界上最难的编程语言可能非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

 

然后C语言内存管理机制,附上指《C语言内存管理精讲视频课程》

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

 

然后C语言高手进阶课程,附上指《C语言高手之路视频课程》

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

 

掌握C语言数据结构,链表是重点,附上指《3天掌握C语言链表》

https://edu.csdn.net/course/detail/9588

 

3.C语言已经学的很好了,但没接触过C++

有了扎实的C语言基础,恭喜,你可以开始学习C++了

这里跟大家推荐小白可以短时间很快入门的C++视频课程:

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

 

4.C++基础语法都学会了,然后想学点高级的/strong>

以我多年的C++游戏服务器开发经验,企业中真实对开发者的考察要求无非就那么几点:

 

  •  Socket网络编程各种并发网络模型,这里跟大家推荐 C++ 高级网络编程视频课程:

 

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

 

 

  •  C++泛型编程,模板,各种项目中存在大量模板设计,特别是框架,推荐C++模板视频课程:

 

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

 

 

  •  C++多线程,线程同步,线程池。 99%的项目一定用到,列为重点。这里跟大家推荐C++ 多线程视频课程:

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

 

     

  •  C++动态链接库 dll 。开发项目中90%、SDK中一定用到,无需精通,但必须掌握。这里跟大家推荐《 Windows C++ 动态链接库视频课程》

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

 

  •  Win32 API 高级编程 。  重点,真实企业项目中大量用到win32 API ,一定有相关的经验。

掌握win32 API窗口编程,推荐《精通Windows API高级编程

https://edu.csdn.net/course/detail/7841

 

 

  •  C++数据结构,重点,最基础的链表、队列,栈,排序算法,各种算法,此乃程序的核心。

 

 

5.C++进阶知识也会了,你需要学习基础框架了。

 

  •  MFC框架 。  可选,虽说MFC在windows桌面运用中因为其复杂性越来越显得过时了。但是其OO思想还是发挥的淋漓尽致,可以了解熟悉下,各种控件、对话框、单文档程序、多文档走一遍,不仅可以掌握桌面运用开发,还可以再次巩固面向对象的理念,总之MFC是个大杂烩,总会学点东西的。 推荐《从小白入门MFC框架》高级课程

                https://edu.csdn.net/course/detail/7075

 

 

  •  QT框架. 跨平台的应用程序和用户界面框架,linux与windows桌面应用开发的优秀框架。

 

  • GTK+(GIMP Toolkit) GIMP 一个功能强大跨平台的图形库,是GNU/Linux下开发图形界面的应用程序的主流开发工具之一。 

 

  • STL  包含大量的STL容器,算法和函数等。 C++STL库,优秀的模板库,推荐《C++ STL标准模板库-优秀的C++标准库

   https://edu.csdn.net/course/detail/9231

 

  • Boost 一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,优秀而高效的模板与算法 ,推荐《C++ Boost高级开发视频课程》

    https://edu.csdn.net/course/detail/8697

 

6.相关开发工具、无需深入、会使用即可。

   打仗还得有枪,下面最长用的工具你必须掌握:

  •  VS2010   ~  VS2017  ,越来越强大的IDE。

推荐小白30分钟学会VS的《30分钟学会Visual Studio 2017视频课程

https://edu.csdn.net/course/detail/8641

 

  •  代码配置管理工具,  最简单易用的SVN  与   最流行的Git

      推荐小白30分钟学会的Git入门视频课程:

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

 

   推荐小白30分钟学会SVN的《30分钟学会SVN视频课程》

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

 

    推荐小白30分钟掌握虚拟机的《30分钟玩转虚拟机课程》

      https://edu.csdn.net/course/detail/23791

 

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等
 

 说了这么多,最后送各位小白一句自己的心得: 坚持学习、不断学习、总有一天你会是真正的大牛!

文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览114446 人正在系统学习中

来源:程序员黄老师

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年9月8日
下一篇 2017年9月8日

相关推荐