在当今的互联网时代, java,  安卓, ios, 大行其道,而c/c++却显得越来越落寞。 其实这并不是c/c++程序员本身的问题,而是这是一个产品快速响应市场的年代。用过c/c++的人都知道, 使用c/c++直接去开发一款产品是多么的痛苦。而像java这样的高级语言,拥有各种框架 各种库,这是c/c++望尘莫及的地方。那么c/c++存在的意义是什么呢?那就是在其他语言不能做或者不适合做的地方。像那些可用或者可不用c/c++的地方, c/c++基本都退出了。 而在这几个领域c/c++依然是不可替代的, 分别是: 服务端,游戏, 音视频, 图像图像 以及嵌入式与驱动等。 那么作为一个c/c++程序员应该具备哪些技能, 才能显示出自己的价值呢?

1  c/c++语言,面向对象, stl等

2  linux操作系统

3  数据结构与算法

4  网络编程(包括socket, i/o模型,多线程 多进程等)

5  常用的开源服务器(nginx, redis, memcache等),熟悉源代码,能做定制开发

6  关系型数据库(mysql , oracle, 等)

7  nosql(redis, mongdb等)

8  掌握一门或多门脚本语言(shell, lua. python)

9  常见网络协议(tcp/ udp,   http,  音视频相关rtsp,rtp.rtcp, rtmp等)

10 Go语言(如果用c/c++开发服务器程序, 常见的一般是异步+回调的方式,但是这种编程模型对编程人员要求较高,且程序可读性较差。现在又有了协程的概念,c也有一些协程库如微信开源的libco等;而go在语言层面就天然支持协程,这是一个巨大的优势)

这是自己工作中的一些总结, 也许这些对一个合格的c/c++的程序员来说还不够。我想既然当了c/c++程序员, 注定是要与底层 原理这些东西打交道,这注定是枯燥的。但是能够揭开这许多技术最终的面纱, 又何尝不是一种乐趣呢


qi_gai Blogger