如何成为一个C++高级程序员

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语言来实现,这样能更关注于算法本身的内容。

  4. 数据库

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

  5. 并行

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

  6. 网络编程

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

  7. 设计模式

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

  8. 库的使用

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

  9. 操作系统的知识

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

  二、项目经验

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

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

  三、沟通能力

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

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

时间: 2024-12-09 18:28:51

如何成为一个C++高级程序员的相关文章

作为高级程序员应具有的基本素质

那么作为高级程序员,以至于系统分析员,也就是对于一个程序项目的设计者而言,除了应该具备上述全部素质之外,还需要具备以下素质: 第一,需求分析能力 对于程序员而言,理解需求就可以完成合格的代码,但是对于研发项目的组织和管理者,他们不但要理解客户需求,更多时候还要自行制定一些需求,为什么这么说呢? 一般而言,进行研发任务,也许是客户提出需求,也许是市场和营销部门提出的需求,这时候对于研发部门,他们看到的不是一个完整的需求,通常而言,该需求仅仅是一些功能上的要求,或者更正规些,可能获得一个完整的用户视

一个大神程序员的使命感究竟应该是什么

来源:一个大神程序员的使命感究竟应该是什么 工作了五年的工程师,算不算高级开发者?归类开发者不是简单地看工作年限,因为经验这种东西千金难换但又一文不值. 我们现在工作的行业很奇怪.明明每年都有新的从业人员涌入人才市场,但企业依旧诉苦自己迫切需要大量的开发.这种问题存在已久,而且已经越发严峻. 开发者这个行业非常年轻,也面临着很严重的人才短缺问题.大部分的软件开发项目无疾而终,原因是后期开支过于庞大.那些行业里的大佬是怎么建议我们 的,他们说「世界上永远存在解决问题的办法,但我们还是会遇到各种难题

细说高级程序员的几个成长阶段

转发自:http://chuansong.me/n/1522918 软件开发是一个奇怪的行业,市场远远供不应求.这是一个已经存在多年的问题,而且随着时间的流逝,愈演愈烈. 我们严重缺乏能够满足需求的人才.这个行业相当年轻.大多数软件项目是失败的.几乎所有的项目都会超出预算.我们解决问题的最佳指导方针可以归结为——“用一些通用方法去解决问题,当然这些方法常常不管用,于是,唯一能做的就是不断地尝试,逐个看看是否奏效”. 现在我们把淫浸代码时间超过3年的开发人员称为“高级开发人员”.这些人通常把持领导

【知乎】怎么成为一个优秀的程序员,而不是一个优秀的码农?

怎么成为一个优秀的程序员,而不是一个优秀的码农? 9 条评论 分享 默认排序按时间排序 98 个回答 3844赞同反对,不会显示你的姓名 萧井陌 微信公众号:炼瓜研究所 技术社区 - 3844 人赞同 优秀的程序员会告诉你打根基的重要性,会劝你在厚积薄发前要隐忍. 优秀的码农会告诉你学啥底层.啥啥啥一拖就好了,学了python还要啥自行车啊,数据结构排序函数二分搜索这不都内置了吗?工作中永远用不到,学算法有啥用啊?成为高手有很多种方法汇编是个屁啊? +++基础的分割线+++ 列举几个我认为比较重

高级程序员和低级程序员的区别

低级程序员认为自己与高级程序员的区别, 主要是高级程序员任何功能都能编码实现, 编码速度快, 代码无 bug. 正如一惯的那样, 低级程序员之所以低级, 正是因为他们勉强能看到(或者根本看不到)事物的表象而看不到本质. 所以, 低级程序员总结出的一切东西, 你都可以大胆的忽略. 所以, 我们来听听高级程序认为自己与低级程序员的区别是什么. 高级程序员之所以高级, 在于他们认识到代码 bug 是不可避免的, 有千万种理由可以导致 bug, 但他们可以在设计和逻辑上保证(追求)滴水不漏, 并用逻辑的

岗位作业书-高级程序员

岗位:高级程序员 一.每日例行工作: 1.早上到公司后立即打开禅道查看任务.测试模块看是否有工作任务 2.打开QQ,注意接收禅道发过来的任务.Bug的提醒邮件 3.根据提醒邮件进行工作 4.接收任务后编写详细设计文档 5.编码 6.单元测试通过后的代码,上传到SVN 7.下班前上禅道填写今日工时消耗情况 二.分阶段工作: 1.需求讨论 工作内容:无 2.需求确认 工作内容:无 3.版本定义 工作内容:无 4.分配任务 工作内容:无 5.详细设计 工作内容: 负责编写所负责任务的详细算法设计,直接

一个初中生到程序员的辛酸经历

一个初中生到程序员的辛酸经历 转自木板 前言:我将写下一个穷苦家庭的农村孩子的经历.我念书不多,文笔不好,基本上是流水式的叙述,大家多多见谅.如果你现在年轻或迷惘,那你看下这篇文章或许有帮助.如果你想了解社会的底层,也可以看看本文.在这篇文章里我会写一些我对人生的看法,希望可以给各位参考参考. 我今年二十八岁,个子不高,长得还算端正.在学校受的教育不高,就读到初中二年级下学期.   我干过很多行业,学过厨师,学过装修,做过酒店服务员,送过报纸.可以说在在社会底层的经历十分的丰富.后来参加自考拿了

成为高级程序员的10个步骤

成为高级程序员的10个步骤 步骤1:奠定基础 <The Pragmatic Programmer >对于我们掌握软件是一个很好的起点.该书总结了高水平的实践探索.这与我们使用的是什么语言/技术无关.无论你选择的是哪种技术堆栈,其主要原理都是一样的. 步骤2:掌握你的编程语言 你以后每天需要面对哪种编程语言取决于你今天选择的技术.但是编程语言总有主次之分.例如,Ruby on Rails 开发人员主要使用 Ruby,AngularJS 开发人员大多数时间用的是 JavaScript.确定编程语言

来自开发者技术前线 高级程序员,你需要养成这7个习惯

要有负责心 在我们的每日工作中,有一半以上时间是在解决各种Bug.高级程序员在面对这些Bug时会从多个维度思考,Bug出现的时间.系统环境.硬件版本以及软件版本等等.接着修复问题,严格自测,上线后观察,一直会跟进到底,把影响降低到最小. 他们会主动承担责任,为结果负责.面对各种问题时,不是第一时间为自己找借口,不是互相推脱,互相指责.而是,想尽一切办法解决问题,即使解决不了,也会给出最优选择. 责任心在程序员的职业生涯中,具有最重要的指导意义,也是成为高级程序员必须具备的素质. 2掌握代码调式技