background image

C++这门语言从诞生到今天已经经历了将近 30 个年头。不可否认,它的学

习难度都比其它语言较高。而它的学习难度,主要来自于它的复杂性。现在

C++

的使用范围比以前已经少了很多,

java、C#、python 等语言在很多方面已经可

以代替

C++。但是也有很多地方是其他语言完全无法替代的,主要集中在需要

运行效率比较高的行业,比如游戏、高效的服务器。

现在学习

java、C#等语言的人数远远高于 C++,主要是 C++的入门门槛

太高,可能学习了一段时间后还做不了什么东西,导致信心大受打击,进而放
弃。

我想把我自己的经验分享给大家,希望帮助新人少走些弯路。
在此我们不讨论具体的技术细节,只说我们应该学习什么东西。
一、技术能力
1.语言
我们要成为一个程序员,学的东西会很多很杂,但是最开始一定要从语言

开始学习,而学习语言最关键的莫过于选好一本书,学校的教材就算了,根本
没有写得好的。在此隆重推荐

C++ Primer

,这本书很厚,内容也很丰富,对

知识的讲解不仅仅停留在表面。如果这本书能有耐心看完,语言方面基本就没有
什么大问题了,对以后的学习也打下了一个很好的基础。(编注:这本书的第四
版还配有解答:《

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.网络编程