c/c++程序员的技术栈

在当今的互联网时代, 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++ 程序员, 注定是要与底层 原理这些东西打交道,这注定是枯燥的。但是能够揭开这许多技术最终的面纱, 又何尝不是一种乐趣呢