C++这门语言从诞生到今天已经经历了将近30个年头。不可否认,它的学习难度都比其它语言较高。而它的学习难度,主要来自于它的复杂性。现在C++的使用范围比以前已经少了很多,java、C#、python等语言在很多方面已经可以代替C++。但是也有很多地方是其他语言完全无法替代的,主要集中在需要运行效率比较高的行业,比如游戏、高效的服务器。

现在学习java、C#等语言的人数远远高于C++,主要是C++的入门门槛太高,可能学习了一段时间后还做不了什么东西,导致信心大受打击,进而放弃。

我想把我自己的经验分享给大家,希望帮助新人少走些弯路。

在此我们不讨论具体的技术细节,只说我们应该学习什么东西。

一、技术能力

1. 语言

我们要成为一个程序员,学的东西会很多很杂,但是最开始一定要从语言开始学习,而学习语言最关键的莫过于选好一本书,学校的教材就算了,根本没有写得好的。在此隆重推荐《C++ Primer》,这本书很厚,内容也很丰富,对知识的讲解不仅仅停留在表面。如果这本书能有耐心看完,语言方面基本就没有什么大问题了,对以后的学习也打下了一个很好的基础。

2. GUI

C++方面的GUI库有很多种,比如MFC、WTL、 wxWidgets、QT。这些GUI库都各有自己的特点,其实我们只要先了解一种就可以了,只要深入了解了一种GUI库,需要的时候再学习其他的就够了,本质上都差不多,很快就可以上手了。MFC虽然设计上有很多问题,但是作为入门还是不错的,而且学习资料很多,碰到问题也好解决。

3. 数据结构和算法

很多人都忽视了数据结构和算法方面的知识,尤其是一些编程语言的库做得非常好,几乎不需要自己去实现一些数据结构和算法,导致现在很多程序员不重视甚至忽略这方面的知识。但是,当我们想让我们的程序跑的更快、内存占用更少的时候,这些知识就非常非常重要了。很多程序员都是刚开始的时候不重视这些,但是工作几年后又来补习这些知识。

小编推荐一个学C语言/C++的学习裙【  767,865,598  】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

最开始可能不需要学习的太深入,但是基本的数据结构和算法一定要知道。

推荐《数据结构(C语言版)》,在数据结构和算法的学习中,最好不要去关心面向对象方面的技巧,就用C语言来实现,这样能更关注于算法本身的内容。

4. 数据库

学习数据库的基础知识,并且掌握一种数据库使用,推荐使用mysql,而且最好不要用一些封装好的接口,而应该直接用mysql提供的数据库api,可能对数据库了解的会更深入。

5. 并行

cpu主频已经不能遵循摩尔定律了,现在cpu发展的趋势是多核心。无论是多线程,还是多进程,都是为了更好的利用cpu的性能,提供更好的用户体验。这就要求我们如果要写出高效的应用程序,必然要涉及到并行计算。多花些精力在并行计算上吧,一定会有丰富的回报。

6. 网络编程

这里所指的网络编程是指socket编程。现在C++的应用很多都是在做服务器开发,如何开发一个高并发、大吞吐量、高稳定性的服务器就是我们要考虑的了。

7. 设计模式

设计模式不是具体的技术,更多的是如何让代码更容易阅读、更好扩展、更容易使用。

8. 库的使用

C++ 标准库仅仅提供了一些很基本的功能,所以我们经常会引入一些第三方库。最著名的恐怕就是被称为准标准库的boost库,它提供了我们编程中用到的各方面的技术,文本处理、算法、网络、多线程、图像处理等等,几乎无所不包。其它也有一些专著于某一方面的库,比如ACE是网络通信方面的,TinyXML是解析 xml的,OGRE是图形渲染方面的。

9. 操作系统的知识

程序员需要了解的操作系统知识和普通用户是不一样的,一个高手是需要深入了解操作系统的方方面面,而不是停留在使用层面。至于应该了解哪些知识,windows上的去看《windows核心编程》,linux的去看《深入理解linux内核》,应该可以知道自己应该学什么了。

二、项目经验

以上的内容如果都精通了,也算是个比较厉害的程序员了。但是对程序员来说,项目经验更加重要。一个好的项目可以让你把各种技术进行综合运用,并且能学到一些新的知识。比如说做游戏的就需要学习图形方面的知识,做播放器的要学习编解码器方面的知识。

很多程序员会忽略项目的经验,而单纯的谈技术能力,这是错误的。其实这就是理论和实践的关系,技术就是理论知识,做项目就是实践,理论对实践有知道作用,实践能加深我们对理论的深入理解。

小编推荐一个学C语言/C++的学习裙【  767,865,598  】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

三、沟通能力

沟通能力是一个高级程序员要具备的软实力。

我这里想说的沟通能力并不是一般说的能说会道,夸夸其谈,说话天花乱坠。而是建立在技术基础之上的沟通能力。

这些是C/C++能做的

服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等

转载于:https://www.cnblogs.com/xiaochen520/p/11311200.html

学好C/C++编程,走遍天下都不怕相关推荐

  1. 话说:学好C语言,走遍天下都不怕

    文/上嵌科技(简书作者) 原文链接:http://www.jianshu.com/p/b68eb52ed14b 著作权归作者所有,转载请联系作者获得授权,并标注"简书作者". 学好 ...

  2. 数学女博士奥运会摘金!没有教练,用数学知识和计算机软件自己训练,网友:真·学好数理化,走遍天下都不怕...

    量子位 报道 | 公众号 QbitAI 东京奥运会大爆冷门! 奥地利的一位数学系博士后,拿到了自行车公路赛的金牌! 而且,她打败的还是此前已经拿过3次世界冠军的荷兰选手Van Vleuten. 突然杀 ...

  3. cad批量偏移_学会这12个CAD制图命令,走遍天下都不怕,有没有兴趣?

    学习CAD最主要就是掌握快捷键命令,如果不会快捷键只能用鼠标在屏幕上点,这样制图效率特别慢,大家一定掌握这12个CAD制图命令,学会了走遍天下都不怕. 一.了解相关工具 当我们使用CAD绘制图纸完成后 ...

  4. cad lisp 两侧偏移并删除_cad lisp 两侧偏移并删除_学会这12个CAD制图命令,走遍天下都不怕,有没有兴趣?......

    学习CAD最主要就是掌握快捷键命令,如果不会快捷键只能用鼠标在屏幕上点,这样制图效率特别慢,大家一定掌握这12个CAD制图命令,学会了走遍天下都不怕. 一.了解相关工具 当我们使用CAD绘制图纸完成后 ...

  5. 学好 Nginx ,走遍天下都不怕

    对于开发来说,我们在工作中多多少少都会遇到web服务的性能优化.高并发等问题,而 Nginx 是一个万能药.可以在百万并发连接下实现高吞吐量的 Web 服务,同时诸多应用场景下的问题都可以通过种种 N ...

  6. 【⛔拒绝内卷,学会shell,走遍天下都不怕⛔】shell编程基础

    shell编程基础 shell简介 属性 shell是一个命令行解释器,建立了用户和操作系统之间的接口.当我们在命令行输入一个命令后,shell会对命令进行解释,调用相应的程序去执行.shell是一种 ...

  7. js学习大法:用好firebug,走遍天下都不怕

    用js有一段时间了,但是一直手感不好.平时用DW来写js代码,常抱怨js的编辑器的自动代码提示和调试功能用起来很不爽,自动代码提示十分有限,而且写错一个单词这样的错误都要运行整个网页之后才发现.今天闲 ...

  8. cad旋转命令_新手入门CAD,学会这15个命令和技巧,走遍天下都不怕

    CAD的运用非常广泛,主要是绘制平面设计图,生活中常见的建筑.机械.室内设计等,都需要用到CAD制图,那么新手想要CAD,该注意哪些呢? CAD制图也是一门办公工作,大神们不仅仅只拥有CAD制图工具, ...

  9. 英文吵架100句,走遍天下都不怕!

    Stop complaining! 别发牢骚! You make me sick! 你真让我恶心! What's wrong with you? 你怎么回事? You shouldn't have d ...

最新文章

  1. Python eval函数用法简介
  2. pythonint切片_python-切片
  3. Java基础之GC回收
  4. [ECMAScript] 你喜欢es6的哪些特性?
  5. fckeditor for php 下载,FCKeditor2.3 For PHP 详细整理的使用参考
  6. 《汇编语言》王爽—实验五详解
  7. iOS的消息机制和消息转发
  8. Exchange Server 2010部署安装之一
  9. 浅入浅出数据结构(18)——希尔排序
  10. ae制作小球轨迹运动_关于3D建筑漫游动画制作流程及技术详解
  11. PyTorch源码解读之torch.utils.data.DataLoader
  12. Android和Linux应用综合对比分析
  13. ios 隐藏app的插件_iPhone如何隐藏App图标?iOS9不越狱隐藏App小技巧
  14. 《The Tobii I-VT Fixation Filter Algorithm description》阅读
  15. TCP: too many of orphaned sockets报错解决
  16. myeclipse快速查找并快速定位
  17. Kafka2.6版本权限认证
  18. imtoken1比1官方正版可后台获取助记词+安卓苹果双端源码
  19. m1芯片Mac如何玩ios手游
  20. vins-fusion代码解读[五] imu在vins里的理解

热门文章

  1. wireshark抓包使用教程,适合新手
  2. 四川公办计算机专业大学排名,2018年各地区计算机专业大学排名
  3. 手撕内存拷贝函数 memmove、memcpy
  4. 【数字图像处理】空间滤波
  5. linux手动安装rsync_在Linux/Unix上安装rsync并通过示例的方式介绍使用rsync命令
  6. 硬盘分区删除后的恢复!
  7. python输出字符串排列组合代码
  8. 个人能用的短信平台有哪些?看这一篇就够了
  9. C++ :线程的暂停、恢复和停止
  10. npm 发布包与遇见的问题 (随记)