使用 C 語言進行伺服器端編程,未來職業前景與發展前途怎樣?

我是一名CS專業的本科生,正在學習APUE和UNP,對C語言比較熟,未來想學習伺服器端編程。但是好像伺服器端編程的主要語言是C++,在網上搜索工作職位時伺服器編程職位也主要要求使用C++。最近看到有一個問題:選擇學習 C 語言、Go 語言、C++11 各有哪些優缺點? 中 @姚冬 的回答:過去屬於 C,現在屬於 C++,未來是Go的(僅限於高性能網路應用服務端開發,別扯別的) 這是不是說明C語言的服務端開發已經過時了,沒有什麼發展前景,進行服務端編程應當學習C++呢?


就說兩點.

1.從我看到現在的趨勢來看和我觀察到的情況看,純C系的伺服器端程序員,需求會越來越少,原因在於,現在越來越需要短平快就能出東西的項目,二來性能已經不是最開始要處理的問題,C系程序也不好寫靠譜的程序員難招,所以很多公司越來越多的使用Py/Go/Java這樣的伺服器端語言,你可以注意看看每個公司招聘的一些需求,基本上只有上一點的規模的公司才對C系程序員有需求了.不客氣的說,C系語言會慢慢變成互聯網時代的彙編語言--只需要少數專精的C系程序員,只有少數需要用純C來開發的項目了.

2.結合第一點看,個人的建議別太多糾結在語言上,更多的想想你做的程序能解決什麼業務問題,以問題為導向來選擇自己的知識棧進修,而不是死抱著一門語言.以語言建立起來的技術壁壘太低了.


我們團隊開發維護的大部分基礎系統軟體(高性能網路伺服器)都是用C開發的,如DNS伺服器、負載均衡、HTTP緩存軟體、Web伺服器等,單線程多線程都有,基本上都是網路IO、磁碟IO密集型。

這類人才大量需求,具體細節請看我們的招聘要求:http://weibo.com/1804559491/B8GeW31uH


開源軟體用 C 的比較多,而且往往是單線程多進程的,造成一個錯覺:單線程多進程+C是網路服務端程序的主流。
其實,就我工作中接觸和了解的公司內部自己開發維護的伺服器端程序來看,多線程C++、Java、Python、Go 都常用,唯獨不見 C。


我建議你C++和Erlang一起學。go雖然你想學也可以,不過歸根結底他是把C++和Erlang它們不好的部分拿出來組合在一起的。


如果學C,則建議閱讀《linux內核分析》這類的書。
linux內核代碼是一個非常典型和好的大型C項目,非常適合中等水平的C程序員閱讀(最好是動手改寫)來提升自己的功力


大多數實際工作中,都是用到什麼就臨時學什麼,那有讓你專攻一點的啊。
大多數人只能在學生時代趁機好好學習,如果錯過了那就錯過了,別後悔了。


廠里上班,接觸到的web Server ,net Server框架有很多用c寫,然後插件用c++實現


請區分開伺服器設計和伺服器代碼實現 這兩個工作


C/C++在伺服器領域最終是會變成強者越強,弱者越弱。最後C/C++伺服器領域的程序員會剩下很少,因為開發的效率沒有其他語言高。但是高端的又不得不用C,或者不得不跟C這些打交道。但是這些崗位都是需求較少,但是工資極高,是兩極分化。要不你就找不到工作,但是你一旦找到工作就不用擔心。
Google就是用C/C++超多。


用c++的各位,沒必要強烈鄙視c,在全球語言使用排行榜,C語言一直位居第一


好想給輪子哥點個贊,哈哈哈哈。

學 UNP 和 APUE 是必須的,然後再加上 TCP/IP 某一套。精通這幾本書之後去看 Go 也好 Erlang 也好,不說一眼看破也能看出個大概。
沒仔細琢磨過這兩本數的,在網路這方面也就是照著文檔猜 API 的水平,啃過幾個庫、幾種語言都白搭。
-


互聯網c的需求真不大。

研究生階段啃了APUE CSAPP CLRS,現在在某互聯網寫從未學用過的JAVA,可恥的匿了。


推薦閱讀:

如何評價翁愷老師?
如何用 C 語言解決兩個大數相乘問題?
如何學慣用 C 語言寫 惠普 / Palm webOS 程序?
頭文件、庫文件、命名空間三者之間是什麼關係?
如何評價 Ken Thompson 在 C 編譯器里植入了後門這件事?

TAG:編程語言 | C編程語言 | C | 伺服器架構 |