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内核》,应该可以知道自己应该学什么了。
二、项目经验
以上的内容如果都精通了,也算是个比较厉害的程序员了。但是对程序员来说,项目经验更加重要。一个好的项目可以让你把各种技术进行综合运用,并且能学到一些新的知识。比如说做游戏的就需要学习图形方面的知识,做播放器的要学习编解码器方面的知识。
很多程序员会忽略项目的经验,而单纯的谈技术能力,这是错误的。其实这就是理论和实践的关系,技术就是理论知识,做项目就是实践,理论对实践有知道作用,实践能加深我们对理论的深入理解。
三、沟通能力
沟通能力是一个高级程序员要具备的软实力。
我这里想说的沟通能力并不是一般说的能说会道,夸夸其谈,说话天花乱坠。而是建立在技术基础之上的沟通能力。
分享到:
相关推荐
《C++高级程序员手册》是一本专为C++开发者,特别是有一定基础的程序员设计的参考书籍。这本书旨在深入探讨C++编程语言的高级特性和使用技巧,帮助读者从初级阶段跃升至高级水平。通过阅读这本书,你可以全面提升对...
教程包括了面向对象编程、多线程技术以及设计模式等多个核心主题,这些都是C++高级程序员在实际工作和面试中必须掌握的知识点。 首先,"C++面向对象多线程编程.pdf"可能涵盖了C++的面向对象特性,如类、对象、封装...
### 如何成为程序员:成为一名C++程序员的详细指南 在当今快速发展的信息技术领域,成为一名出色的C++程序员不仅意味着掌握一门编程语言,更是一项能够开启众多职业机会的关键技能。本篇文章将深入探讨如何从零基础...
在"压缩包子文件的文件名称列表"中提到的"C或C++语言程序员面试宝典.pdf"很可能包含了这些问题的详细解答和实例,涵盖了从基础到高级的各种题目,对于准备面试的程序员来说是一份宝贵的参考资料。阅读并深入理解这份...
"C++高级程序员常用方法和技巧高清完整版"涵盖了这些关键知识点,为开发者提供了一套全面的学习资源。以下是一些核心的C++编程技术和实践策略: 1. **STL(Standard Template Library)标准模板库**:STL是C++中的...
C++是一种强大的、通用的编程...对于想要成为C++高级程序员的人来说,不断学习和实践是提升的关键。"牛刀小试C++基础"这个压缩包可能包含了这些基础概念的实例和练习,通过实际操作可以更好地巩固和理解C++的基础知识。
本资料"**C++ 编程惯用法 高级程序员常用方法和技巧**"深入探讨了在C++编程中的一些最佳实践和高级技术,旨在帮助开发者提升代码质量和效率。 首先,C++的核心特性之一是面向对象编程(OOP),包括封装、继承和多态...
本资源《C++编程惯用法(高级程序员常用方法和技巧)》将探讨一些核心知识点,帮助开发者提升其C++编程技能。 首先,C++的面向对象特性是其核心之一。包括类、对象、封装、继承和多态,这些都是C++的基础。理解如何...
很多初学者会选择使用微软的Visual Studio(MS-VC++ IDE)作为学习C++的工具,虽然这是一个功能强大的集成开发环境(IDE),提供了代码编辑、编译、调试等一系列便利的功能,但过度依赖IDE可能会掩盖对C++语言核心...
本资料包“C++高级程序员常用方法和技巧”旨在为深入学习和开发的人员提供实用的知识点,帮助提升代码质量和效率。以下是一些关键的C++高级编程主题: 1. **模板(Templates)**:C++模板允许编写泛型代码,适用于多...
C++ STL,全称为Standard Template Library(标准模板库),是C++编程语言中的一部分,它提供了高效、灵活的容器、...这份指南可能涵盖了STL的各个细节,从基本概念到高级应用,都是你成为C++ STL专家的重要参考资料。
如何成为高级C++程序员?小编感觉很不错,好东西要分享,希望大家喜欢!
2. 《C++ Primer》:作为一本权威的C++入门指南,这本书详细阐述了C++的基本概念和技术,同时也涵盖了现代C++编程风格,适合初学者和中高级程序员作为参考。 阶段2:进阶提升 1. 《Effective C++》和《More ...
总的来说,一个典型的C++程序员的成长过程涉及到从基础语言特性到高级设计原则和库的全面学习。这个过程中,程序员会不断探索、实践和反思,以提升代码质量,优化性能,并创建出可复用和可扩展的组件,从而能够编写...
该大纲为考生提供了清晰的学习路径和考试内容,对于有意参加高级程序员考试的朋友们来说,是一个非常宝贵的参考资料。 大纲内容通常涵盖以下几个核心领域: 1. **计算机基础与编程语言**:这部分内容会涉及到...
成为优秀的高级C++程序员需要掌握多个方面的知识和技能。首先,C++作为一门有着近30年历史的语言,它的复杂性和学习难度较高,这导致了很多学习者在入门阶段就因为难以做出实用的程序而失去信心,最终放弃。尽管C++...
【C++高级程序员成长之路】的探讨主要涵盖了成为一名成功的C++高级程序员所需的关键技能和经验积累。以下将详细阐述这些方面: 1. **语言基础**:C++的学习始于选择一本优秀的教材,如《C++ Primer》。这本书内容...
### 如何成为一个合格的C++程序员 在当今的软件开发领域中,C++因其高效性和灵活性而备受青睐,尤其在游戏开发、系统编程、高性能计算等领域有着不可替代的地位。因此,成为一名优秀的C++程序员不仅是很多程序员的...
在C++程序员的面试过程中,经常会遇到一系列旨在评估应聘者基础技能、问题解决能力以及对C++语言深入理解的问题。以下是对这些常见面试题目的详细分析和解答: 1. **C++基础** - **内存管理**:了解堆(heap)和栈...