回覆列表
  • 1 # 使用者9337261668376

    在軟體開發領域 C++ 曾保持了二十年的統治地位,C++開發幾乎應用到了所有領域。

    背後的原因就是計算能力的價格昂貴,而人力相對便宜,所以開發商願意採用執行效率比較高的語言和平臺來節省計算能力的成本,為此願意付出一定的開發、測試和維護成本。

    但是摩爾定律幾十年如一日地有效,每18個月計算能力的價格就下降一半,20年下來,單位價格的計算能力提升了近萬倍。

    最近幾年我們可以看到,在各個領域,尤其是應用開發領域裡,多種語言都有取代C++的趨勢,並且這個趨勢是不可能逆轉的。

    最近幾年已經很少有新成立的大型專案選擇C++作為開發語言了,應用程式開發領域C++基本也退出了,尤其是移動App,自從Symbian和黑莓掛掉之後,就沒有移動平臺把C++作為第一語言了。

    這不是說C++就要完蛋了,也不等於C++程式設計師沒人要了,只是C++的領土面積有些縮水,但是離亡國還早得很。

    C++傳統上很強勢的領域,它依然具有統治地位,主要就是基礎設施和超大型軟體應用領域。

    比如:

    資料庫,編輯器,編譯器,指令碼引擎,虛擬機器,排版軟體,遊戲引擎,應用程式框架,計算平臺等。

    代表性的專案有,MySQL,VisualStudio,LLVM,V8,VMWare,Office/WPS,3DMAX,Qt,WebRTC,Tensorflow等

    可以看出來,都不是小專案,原始碼都是上百萬行,甚至千萬行的,並且都有很長的歷史,有的多達30+年。

    這類專案採用C++一方面是歷史慣性,一方面是C++的效能在這些特地領域的確有優勢,比如C++和C 彙編混合呼叫的時候幾乎沒有額外開銷,而Java的JNI,Golang的CGO都是有額外成本的。

    對於剛進入軟體開發領域的年輕人來說 C++並不友好,新的工作機會的確在變少,而現有的專案需要的基本功和相關知識積累又非常高,不是初如職場的新人可以快速掌握的,除非你很聰明勤奮,又有很大決心去學習,比如 編譯器,資料庫領域,再聰明勤奮也要學很多年,而且要有豐富經驗的業界前輩來指導。在這些領域C++本身不是問題,難的是領域相關知識技能。

    選擇了C++就要斷了速成和賺快錢的念頭,要潛心研究慢慢積累,花5-10年去深入某個領域,這需要很大的決心毅力,別太在乎投入產出比。

    雖然我寫了二十年C++,也用C++寫了些大專案,但是我已經在逐步放棄C++了,最近一年裡用得最多的是Golang,Python,Objective-c,Java。

    因為我的領域是應用開發,是面向廣大終端使用者的應用,這個領域越來越強調開發效率,對效能到不是那麼介意,C++顯然很難勝任。

    以前的軟體開發,版本迭代週期一般是 半年到一年,而如今網際網路軟體的迭代週期通常是周為單位的。比如 YY 在某一年裡 發了25個版本,只有春節休息了下,這還不包括十多個小補丁版本。

    C++對工程師coding水準要求太高,很容易就搞出野指標,記憶體洩露,緩衝溢位什麼的,所以測試成本,除錯成本,崩潰解決成本都比較高,週期也長,耗費了開發者大量精力。

    那時候,經常有大量崩潰上報,看minidump又是崩得亂七八糟的callstack,至今心有餘悸。

    具體到題主的問題,我可以說 C++在這三個領域都沒啥前景,按照趨勢來看這三個領域未來都不算是C++的強勢領域了。

    服務端的瓶頸已經不是計算效能了,而是傳輸、IO、伸縮性,並行度等

    遊戲開發除非是引擎,業務邏輯劇情基本都是寫指令碼了,而除非是大公司有積累,否則也不會自己擼引擎。

    嵌入式依然受摩爾定律支配,隨著計算能力越來越便宜,語言也會更傾向於開發效率更高的,而不是執行效率高的。

    如果真的對C++有情有獨鍾,非要寫C++不可,那麼就去我上面提到的幾個C++強勢領域吧,基礎設施和超大型應用。

  • 中秋節和大豐收的關聯?
  • 退伍軍人退役後該怎麼發展?