一、技术能力
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内核》,应该可以知道自己应该学什么了。
二、项目经验
以上的内容如果都精通了,也算是个比较厉害的程序员了。但是对程序员来说,项目经验更加重要。一个好的项目可以让你把各种技术进行综合运用,并且能学到一些新的知识。比如说做游戏的就需要学习图形方面的知识,做播放器的要学习编解码器方面的知识。
很多程序员会忽略项目的经验,而单纯的谈技术能力,这是错误的。其实这就是理论和实践的关系,技术就是理论知识,做项目就是实践,理论对实践有知道作用,实践能加深我们对理论的深入理解。
三、沟通能力
沟通能力是一个高级程序员要具备的软实力。
我这里想说的沟通能力并不是一般说的能说会道,夸夸其谈,说话天花乱坠。而是建立在技术基础之上的沟通能力。
本文来自于:http://blog.csdn.net/stick_insect/article/details/6994233
分享到:
相关推荐
本书是久负盛名的C++经典教程,完美结全了C++大师Stanley B.Lippman...对于中高级程序员,本书也是不可或缺的参考书。 原文出自【风信网】,转载请保留原文链接:http://www.ithov.com/book/programme/c++/27272.shtml
在软件开发中,尽管高级语言如C++、Java等广泛应用,但在某些需要高效性能或直接控制硬件的场景下,汇编语言仍然是必不可少的。 【描述】"未来汇编(转载) 看韩剧www.pigkrtv.com" 提到了"未来汇编",这可能是指...
在高级语言中,程序员可以将程序划分为独立的模块或文件,然后每个独立部分分别编译。在编译之后,由链接器把这些独立的片段(称为编译单元)“粘接到一起”。在 C/C++中,这些独立的编译单元包括 obj 文件(一般的...
高级语言的大多数都支持分别编译,程序员可以显式地把程序划分为独立的模块或文件,然后每个独立部分分别编译。在编译之后,由链接器把这些独立的片段(称为编译单元)“粘接到一起”。在 C/C++ 中,这些独立的编译...
《VC++6.0游戏源代码解析》 在IT领域,游戏编程一直是众多开发者热衷的领域,而...尽管现代游戏开发更多地转向了Unity、Unreal Engine等高级引擎,但对经典工具的理解和应用,仍然是每一个游戏开发者不可或缺的素养。
此外,`boost::future`是Boost库中的一个高级特性,用于异步计算结果的获取。`boost::future`对象代表了一个异步操作的结果,可以通过`get()`方法获取结果,也可以设置回调函数在结果可用时自动执行。 在实际项目中...
游戏编程指南旨在为初学者和有经验的程序员提供一个关于创建游戏的综合教程。本指南主要基于Microsoft Visual C++ 7.0(VC7.0)环境,利用DirectX 9.0图形库和Winsock 2.2网络库进行开发。作者彭博建议读者使用Word ...
此外,王爽老师的书中还会讲解如何使用伪指令、寄存器、内存访问、循环结构、子程序设计、中断调用等基本概念,以及如何与高级语言(如C/C++)进行交互。这些知识对于深入理解计算机工作原理、优化系统级程序,甚至...
NASM 支持在高级语言(如 C/C++)中内联汇编,方便混合编程,提升性能关键部分。 通过 NASM 中文手册的学习,开发者可以掌握 NASM 的使用技巧,编写高效、可维护的汇编代码。无论是在操作系统开发、底层库构建还是...
"反调试技术实例_VC版"是针对Visual C++(VC)平台的一个示例集合,可能包含了多种反调试策略的实现。 1. **调试器检测**: 反调试的基本思想是通过检查系统状态和执行流程来判断是否存在调试器。例如,`DetectOD`可能...
Java工程师新人入门通常需要经历一个从基础到进阶的过程,以下是一些推荐的书籍和学习路径,帮助初学者系统地掌握Java技术。 1. **新手入门打基础**: - 《Java 语言程序设计》:这本书适合初学者快速学习Java语法...