小白该如何学好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等

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

猜你喜欢

转载自blog.51cto.com/14209412/2404184
今日推荐