从 C++ 诞生到现在已经将近 30 年了。不可否认,它比其他语言更难学。而它的学习难度主要来自于它的复杂性。
现在C++的使用范围比以前少了很多。很多人说java、C#、python等语言可以在很多方面替代C++。但也有很多地方是其他语言完全无法替代的,主要集中在对运行效率要求比较高的行业;例如游戏和高效的服务器。
现在学习java、C#等语言的人数远高于C++,主要是C++的入门门槛太高。所以这里我们不讨论具体的技术细节,只是在什么阶段我们应该学习什么。有一个系统的计划。
1. 语言基础
如果我们想成为一名程序员,我们会学到很多东西,但我们必须从一开始就从语言开始学习。
学习一门语言的目的是打好基础,尤其是自学的,一定要规划好自己的学习路线,循序渐进地学习。学习一门语言最重要的是多读书,但不能随便找一本 C++ 的书就读。
学习C++推荐书籍:《C++入门加》、《C++编程语言》、《Effective c++》等。
2. 图形用户界面
C++中有很多GUI库,如MFC、WTL、wxWidgets、QT。
这些 GUI 库中的每一个都有自己的特点。其实我们只需要先了解其中一个,只要深入了解一个GUI库即可。
其他的东西在需要的时候学就够了,基本都是一样的,很快就可以上手了。
MFC的设计虽然有很多问题,但还是不错的入门,学习资料也很多,解决问题也很容易。
3. 数据结构和算法
很多人忽略了数据结构和算法的知识,尤其是一些编程语言的库非常好;自己去实现一些数据结构和算法几乎是没有必要的,所以现在很多程序员都不重视甚至忽略了这方面的知识。.
但是,当我们想让程序运行得更快并使用更少的内存时,这些知识非常非常重要。很多程序员一开始并没有注意这些数据报告,但是工作了几年之后,就来补充这方面的知识。
一开始你可能不需要学习太多,但你必须知道基本的数据结构和算法。
4. 数据库
学习数据库基础知识,掌握数据库使用方法。
推荐使用Oracle游戏开发学习,最好不要使用一些封装好的接口。
相反,你应该直接使用Oracle提供的数据库API,你可能对数据库有更深入的了解。
5. 并行
CPU频率已经不能遵循摩尔定律,现在CPU发展的趋势是多核。无论是多线程还是多进程,都是为了更好的利用CPU的性能,提供更好的用户体验。这就要求我们要想写出高效的应用程序,就必须涉及并行计算。把更多的精力花在并行计算上,就会有丰厚的回报。
6.网络编程
这里所说的网络编程是指套接字编程。
现在很多C++的应用都在做服务器开发。如何开发一个高并发、高吞吐量、高稳定性的服务器是我们需要考虑的。
7. 设计模式
设计模式不是关于特定的技术,而是更多关于如何使代码更易于阅读、更好地扩展和更易于使用。
另外,如果你想成为一名优秀有能力的程序员,做软件开发,可以学习C/C++,大家一起成长进步。
8. 库使用
C++标准库只提供了一些非常基础的功能,所以我们经常会引入一些第三方库。最著名的大概就是boost库,叫做准标准库,它提供了我们编程中用到的各种技术,文本处理、算法、网络、多线程、图像处理等等,几乎无所不包。
还有一些其他的库专门针对某个方面游戏开发学习,比如用于网络通信的ACE,用于解析xml的TinyXML,以及用于图形渲染的OGRE。
9. 操作系统知识
程序员需要了解的操作系统知识不同于普通用户。高手需要对操作系统的各个方面有深刻的理解,而不是停留在使用层面。
至于应该知道哪些知识,可以看Windows上的《Windows核心编程》,Linux上的《深入理解Linux内核》,应该就能知道该学什么了。
以上都是学习C++游戏开发的前期准备,也就是打好基础。以上都是基本功,看起来有点过头了,但是磨刀不失砍柴刀。这对你以后学习游戏开发很有帮助。
总而言之,路还很艰难,好好珍惜吧!!
另外,如果你想成为一名优秀有能力的程序员,做软件开发,可以学习C/C++,大家一起成长进步。