編程語言在某種程度上很像朝代,隨著時間流逝而一代代更迭,
有些編程語言正面臨著淘汰,消亡在歷史的洪流中。
在互聯網上,關於C++將要被市場所淘汰的討論從未停止過,
有人說C++是一門過時的編程語言,也有人說,C++是不可替代的。
那麼,C++過時了嗎? C++程序員會不會被淘汰?
100offer的觀點是:
企業對C++的需求勢必越來越少,C++程序員全體競爭力也將越來越弱,
但C++在很長一段時間都不會徹底消亡。
讓我們先來看一組TIOBE的最新數據。
C++程序員快要被市場淘汰了嗎?
編程語言排行榜 TOP18 榜單
以上是TIOBE於2016年8月發布的「編程語言排行榜 TOP 18榜單」,
根據最新排名,Java再度奪得排行榜冠軍,有19.010%用戶,對應了之前的觀點——
從市場上的招聘現狀看,Java工程師依然有著其他語言不可取代的競爭優勢。
C和C++雖然分別拿到了亞軍與季軍,但是均再次跌破歷史最低點,
C較上個月下降3.43%,C++較上個月下降1.94%,情況不容樂觀。
前 10 名編程語言長期走勢圖
從TIOBE在8月發布的「前10 名編程語言長期走勢圖」能夠看出來,C++在21世紀初有著不可動搖的地位,
從2004年之後,C++的佔比開始不斷下跌,對比排在後面的編程語言不再具備優勢。
我們也選擇了五門編程語言,從企業發出面邀數和最終入職數做出對比分析——
從企業發給候選人的總面邀佔比以及程序員最終入職佔比可以看出,
java仍是市場上最供不應求的崗位,PHP緊隨其後,C++獲得的面邀數和offer數沒有任何優勢。
曾經是編程語言「三巨頭」之一的C++,為何現如今會面臨如此尷尬的局面?
C++不斷衰退的原因
1、技術不斷更新
以前,絕大數需求都要用C++來寫,所以C++曾無比興盛。
如今,很多領域都開始有專屬它的一門語言,使得實現需求變得更為便捷。
眾所周知,在20世紀末21世紀初,大部分的個人計算機只有文字排版、圖像製作的需求,
隨著個人計算機的迅速普及,用戶基數不斷增加,
這類需求迅速降低,新增用戶們的需求開始轉變為信息整合共享。
隨著互聯網的發展,技術不斷更新,
用戶只需簡單的「傻瓜式」操作就能滿足他們的需求,
候選人柯先生舉了在app裡加地圖的例子——
「以前,這類需求沒那麼容易,要用到OS 的UI 功能去集成一個native 模塊才能實現,
現在簡單多了,用Google Maps 做網頁的marshup 就行了。
C++在面臨新技術時,太多功能有局限性,未免顯得複雜了,
例如,C++的靜態類型限制太強導致動態功能不足。」
2、C++已過巔峰期
雖然C++仍在不斷更新,但使用C++的員工平均年齡不斷增長,
能使用C++新項目也越來越少,導致C++已過巔峰期。
候選人張先生提出,
「C++的語言機制在實際使用有很多問題,導致細節不能運用。
舉個典型問題,如STL,容易生成錯誤信息,而Java則不會出現這類問題。
所以,很讓人沮喪,C++早已過了巔峰期。」
此次接受100offer採訪的C++程序員們,有70%表示:
在初學時,耗費了太多太多精力投入到語言細節中去了。
他們如今在思考:這些細節對除C++以外的應用開發到底有沒有作用?或者說,作用只是微乎其微?
C++還有很強的生命力,只是顛峰早已不在,並且,強大生命力僅是從歷史上的興盛繼承而來。
無法掩飾的事實是:C++在應用領域開始展現出疲態。
3、市場需求減少
C++不斷衰退的最重要原因是:市場需求減少。
從文章開頭提供的相關數據可知:需要C++的企業越來越少,這是不爭的事實。
編程語言的盛衰與市場需求的關係更為明顯,並非是編程語言本身的優劣所影響市場需求。
我們不得不承認的現實是:會大規模自建基礎設施的企業,
除了BAT等巨頭企業外並不多,時代早已悄然發生改變。
即便是新興的互聯網巨頭企業們,留給基礎設施工程師的職位也不會很多,
更別提創業公司了。顯然易見,C++更偏向於基礎設施方向,
隨著業務系統開發的門檻持續性降低,C++職位需求勢必將越來越低。
當C++只剩下大型企業才有大量需求時,當C++對員工要求也越來越苛刻時,
當C++程序員的個人發展變得更為艱難時,這門語言自然不可避免會走向衰退。
C++為什麼不會消亡
即便C++的市場需求越來越少,但C++是不會消亡的。
從世界範圍的統計數據來看,C++雖然在不斷衰退,但仍多年排在第三名。
所以,在很長一段時間,C++都不會跌出前三的寶座。
C++為什麼不會消亡?我們採訪了多名C++程序員後,得出以下三個觀點——
1、在遊戲和工具領域仍然是主流
首先是遊戲領域,Milo Yip表示——
程序員必須使用C++框架/庫,如大部分遊戲引擎(如Unreal/Source)及中間件(如Havok/FMOD),
雖然有些C++庫提供其他語言的綁定,但通常原生的API性能最好、最新。
其次是工具領域,無論是網絡安全還是殺毒軟件,C++仍是主流語言。
2、C++程序員的收入沒有受到影響
根據100offer的後台數據顯示,目前入職的程序員年薪最高達47萬,最低22.4萬,
C++程序員的收入與其它編程語言的崗位相比處於持平狀態,沒有出現劣勢。
隨著C++逐漸成為某些特定企業和特定項目所需的語言後,高級C++程序員的收入也會更具有競爭性。
3、C++仍具有不可替代性
知乎紅人vczh說:「我在上大學的時候幾乎就只學習C++,後來實習的時候去了微軟,
結果到了那裡才知道,那個組是不用C++的,
怎麼辦?憑藉著C++帶給我的殷實的功底,
我按時完成了老闆給我的「兩個星期內學會C#和WCF基礎知識」的工作,順利開始工作。」
當然,這只是vczh的個人經歷,不具有普遍性,但不可否認的是C++仍具有不可替代性。
某家創業公司CTO在接受采訪時表示:
「即便有很多人唱衰C++,但在當代,仍有很多很多項目的目標平台暫時只提供C++編譯器的支持,
僅從這一點而言,C++是不可能徹底死亡的。」
從應用領域來說,C++適用於高性能計算、嵌入式系統、開發服務器軟件、遊戲、實時系統等,
所以,短期內能徹底取代C++語言並不存在。
C++在系統、圖形、網絡等很多領域都是不可替代的,它的光輝歲月讓它的死亡速度得以削減。
結論:
當某一種編程語言在市場需求明顯比另一種語言更強時,
強需求語言中的缺陷則容易被淡化,衰退的語言則不斷被人挑出致命硬傷。
這種編程語言之間的比較並不公平,且沒有意義。
編程語言都是用來表達思想和完成需求的工具,隨著時代的發展,
不同語言在不同領域都做出了取捨,取代雖然存在,但不是必然現象。
C++的需求隨著時代發展會不可避免地越來越少,但不可能徹底消失,
C++程序員也具有不可替代性,在市場上依舊有著競爭性。
原文出處:36Kr