C++后端已經不行了嗎?
共 2099字,需瀏覽 5分鐘
·
2024-05-24 14:06
圖解學習網站:https://xiaolincoding.com
在知乎看到一個問題:C++后端已經不行了嗎?
確實啊,網絡上一堆卷Java、Python的八股文,Redis、MySQL、Kafka等一堆中間件的資料多如牛毛,卻很少看到卷C++的。難道現在的應屆生們都不卷C++了嗎?難道C++真的不行了嗎?
根據作者提問的描述,他指的后端應該就是Web后端。如果是這個領域,那確實是,或者說在這個領域,C++這十幾二十年,從來就沒怎么行過。
如果你是想做Web后端開發(fā),首選Java,其次Python,用C++去寫Web后端,簡直找罪受。
把后端這個概念進一步拓寬,延展到非終端上的開發(fā)(前端、客戶端(包含PC、APP、小程序)),C++還是有一席之地,畢竟不是所有功能都適合用Java來做。
眾所周知,C++被詬病很多年了,但為啥還是有很多場景要用到C++?
1、性能。這應該是主要原因。雖然C語言同樣有著出色的性能,但在大型項目中,用面向對象開發(fā)對于絕大多數開發(fā)者來說還是更加容易駕馭一些。但我不是說C語言沒法處理大型項目,完全可以的,只不過這對開發(fā)者的軟件架構設計能力要求極高,我見過很多優(yōu)秀的大型軟件都是用純C寫的,比如Linux內核、Windows內核、Nginx、Suricata、Wireshark核心···其他面向對象更徹底的語言,如Java,在性能上又比不上C++。
2、歷史包袱。很多公司的產品、技術框架都積累很多年了,輪子也都造的差不多了,比如騰訊。輕易不會換技術路線,怕出問題怕擔責。甚至在有些公司,用C++還成為某種“政治正確”,新來的人敢換別的,是與很多吃這口飯的人為敵。這種現象嚴重到什么程度呢?幾年前,我見過有公司一直用的C++98,有新人加入想推動C++11的使用,開了個大會研討,結果一堆老人反對,最后只好作罷。
總體來說,C++適用的主要是非Web領域,對性能要求高,軟件復雜度也高,可能還有歷史包袱的團隊。
這種場景,一般就是需要處理大量數據的。
比如存儲系統——CEPH
比如數據庫——ClickHouse
比如游戲——使命召喚
比如瀏覽器內核——Chromium
比如圖像處理——PhotoShop
比如網絡流量處理——Zeek
比如高級語言虛擬機——JVM
······
基本上集中在了游戲、云計算、存儲、網絡安全、工業(yè)軟件等領域。
但是,國內做這些方面軟件開發(fā)的公司,你覺得有幾個?
國內大部分IT崗位都是互聯網+的公司,也就是利用互聯網技術服務于一個傳統行業(yè)的公司。
比如房地產、金融、教育、白酒···
這些公司的業(yè)務,不是圍繞IT技術來的,而是把IT技術作為一個工具,去為它的傳統業(yè)務服務。
這些公司的IT崗位,基本上都是Java后端+前端的模式,干的活也差不多就是數據庫的增刪改查。
這些公司是不可能招C++的。
國內能招C++崗位的,基本上就幾部分組成:
1、頭部大廠。華為、字節(jié)、騰訊、百度等。
2、游戲公司。大廠和中型公司居多。
3、網絡安全企業(yè)。搞流量處理、沙箱、檢測引擎等。
4、搞數據庫、存儲的公司。
5、搞工業(yè)軟件、機械控制系統的公司。
上面幾部分加起來,在整個IT行業(yè)崗位招聘中的占比,也是非常少的。再加上大家現在校招基本只看大廠,中小公司基本都忽略的情況下,能看得見的C++崗位就進一步縮減。
于是,很多人會發(fā)現:C++后端已經不行了。
C++一直在自己的領域內還在持續(xù)發(fā)熱,但不可否認的是,一些后起之秀(Go、Rust)也在一步步蠶食它的地盤,屬于C++不可替代的領地確實是在越來越少了。
除此之外,還有一個原因導致網絡上C++的聲音很少聽到。
不同于大家常常提到的互聯網后端開發(fā),學習的內容比較固定,差不多就緩存、數據庫、消息隊列、高并發(fā)那些東西,你把這一套東西吃透,就能有很多工作機會了。C++則不同,它所涉及的領域就太雜了。
比如搞圖像處理的和搞存儲的研究的東西就很不一樣,它們和工控系統開發(fā)、桌面軟件開發(fā)用到的東西又不一樣。雖然大家都是用的C++,但需要學習掌握的附帶技術棧有著天壤之別。所以C++的不同領域的唯一共同點,也就是都用著C++這門語言罷了,僅此而已。
甚至有網友說,C++不同領域之間的差別,比從C++跨Java之間的差別都大。
不過話說回來,如今普通Web后端卷的如此嚴重,新入行的朋友與其繼續(xù)投注這個卷到飛起的賽道,不如選擇穩(wěn)定緩慢一點的C++賽道,也不失為一種好的選擇啊。
在看這篇文章的你,有做C++的嗎,可以留言說說自己的行業(yè),給新人一點信心。
推薦閱讀:
