在當今的互聯網時代, 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++程序員, 注定是要與底層 原理這些東西打交道,這注定是枯燥的。但是能夠揭開這許多技術最終的面紗, 又何嘗不是一種樂趣呢
文章列表