C++的实际应用
前言
首先說明,這是一篇務虛的文章,沒有什么技術理論和思想,也沒有什么實際技術的分析和學習,只是一篇從個人角度闡述看法的文章。
一、c++的面臨的環境
c++從誕生之初,其實就是代表著一種編程思想的進步,這是從面向結構編程向面向對象編程的一種跨越。但是這種跨越不是完全的、徹底的。這也可以理解,所以c++同時支持了二者的實際應用場景。
但是,隨著一些更加高級的語言的出現,如Java、C#、Python、Golang等,c++的應用在很多領域飛速降低,特別是在近20年來大爆發的互聯網(包括移動互聯網)上,c++基本上處于一種比較尷尬的境地。
而隨著近些年來,一些更新興的語言和技術框架的興起,c++被大家一直認為比較傳統的應用領域,也面臨著更多的競爭和挑戰。這使得c++不得不求新求變求發展。
二、c++應用
這里的應用指國內的c++應用,可以對執著的想要學習c++的同學們一個參考和借鑒:
1、操作系統和底層
把操作系統和底層作為c++的傳統的應用,其實略微有一些不太有底氣。其實OS更多是用C來完成,底層的驅動和一些軟件,有些是用C有些是用c++完成的。特別是在Linux上,驅動很多都是C,但c++也兼容C,這個看怎么想吧。
另外有很多基礎支持的軟件和工具軟件也可以劃到底層,比如對音視頻的處理軟件,圖片的處理軟件等。還有開發的一些軟件如編譯器、解釋器等都歸如此類。不過這種開發,國內就比較少了,一般也多是傾向于二次開發。
2、嵌入式和硬件相關
在這個場景下,基本上用C/C++屬于是平分秋色,偏底層一些用C的多,偏上層c++比較多。一些界面用Qt來完成,在早期的嵌入式開發上,基本就是Qt界面包打天下。直到后來蘋果和安卓出現,才把手機開發,從嵌入式開發專門獨立出去。而且手機應用開發比嵌入式開發從數量和質量上,都是超出非常多的。不過直到現在蘋果手機上開發,c++仍然是占有一席之地,Swift還沒有包打天下。
另外涉及到一些具體的硬件開發,比如讀寫一些硬件的數據并處理分析,好多都是用c++開發完成的。自從WinCE撤出后,基本上在硬件開發上,只有C/C++系列了。
3、網絡服務端
其實這里主要是指TCP/IP,UDP等的編程,這種高并發的網絡服務端,如QQ、微信這些社交軟件的服務端后臺,基本都是c++為主,當然這些年來隨著技術發展可能分布式技術的應用,使得c++的開發可能不再一統天下,但主流仍然還沒有動。
另外比如Http服務端類似這些底層協議的實現,大多也是c++來完成的,這當然有一定的歷史原因,大型軟件一旦完成,輕易無法重寫。
4、游戲
游戲也是c++應用的一個重要場景,目前看來,基本上大型軟件用c++來完成相關的網絡通信,數據解析等。圖片的處理和分析這方面c++天生也有優勢,所以游戲的引擎一般也是用c++來實現。
5、大型軟件和重寫成本高的領域
一些大型軟件一般對效率對空間要求都非常高,所以一般核心也都是用c++來完成。另外有一些大型軟件出現比較早,用c++已經完成,再重寫成本太高昂,典型的就是銀行業,很多核心的軟件就是c++寫的。
另外數據庫行業用C/C++的也非常多,即使到現在,傳統數據庫如MySql等和一些NoSql型數據庫如Redis、RocksDB等都是用C/c++來完成的。數據庫行業歸到底層開發也行,歸到大型軟件中也可以,劃分本身就沒有特別明確的標準。
另外比如一些組態軟件,應用面本身就越來越小,而其重寫的成本又比較高,綜合性價比,基本也沒人重寫。
6、部分中間件和框架引擎
這個就不占主流了,比如一些消息中間件如ZeroMQ ,一些瀏覽器的內核或者說引擎如V8等等這些吧,這類軟件的特點一般在國內是二次開發為主,也就是說是在別人開源的基礎上不斷的完善或者增加一些功能。最典型的就是瀏覽器了,有興趣大家可以搜搜,基本上都是用的那么一兩家的內核。
7、新興行業
另外在新興行業,c++的應用也有可圈可點之處,比如區塊鏈,比特幣、EOS就是用c++完成開發的。但它的應用場景仍然是大多限于底層開發,上層應用基本都是js或者其它框架或語言。還有AI,Tensorflow底層實現就是用c++來完成的,但應用基本是用Python居多。
最近重新又火爆起來的IOT底層和中間層包括不少的上層,都是用c++來實現的。車聯網,框架基本都是c++來實現的。
三、c++面對的競爭和未來
先說個人的看法和結論:c++面臨的競爭越來越激烈,應用場景在競爭中不斷縮小,但優勢場景仍然非常穩固,在新的應用場景不斷拓展。
c++在互聯網方向上,特別是前端,除了底層幾乎是一無所有了。而且,隨著新興的Rust語言的出現,前端底層的未來仍然不是特別光明。而隨著Rust的穩定性和大公司的不斷的加持光環,c++的一些固有優勢場景也有可能會喪失一些優勢,比如數據庫行業,有公司就宣布全部用Rust重構了。但是作為c++程序員的一個優勢在于,目前Rust程序員,大多數都是從c++程序轉過去的。
c++自身的改變和發展也是有目共睹的,逆水行舟,不進則退。這也是c++目前面臨的實際的大環境。包括在嵌入式上,不少的其它語言也都在向上面遷移,特別是在一些對效率要求比較低的場景下,更是如此。
c++的未來,希望是很大的,但競爭一定是非常激烈的。如果不能快速的適應軟件發展的方向和實際開發的需求,c++就有可能敗下陣來。世界上本來就沒有常開不敗的鮮花,但是只要能夠清醒的看清楚自己,c++的未來可期。
四、總結
這里總結的c++的應用是筆者親自接觸或者看到的比較重要的應用,其它一些沒有經歷看到的不代表沒有,更不代表不重要。有一些同學愿意學習c++這門偏向于底層的語言,不管出于何種目的,都是值得贊佩的。c++的復雜性和安全性,一直是讓人們望而卻步的主要原因。但是,不少應用場景對效率和空間的要求非常苛刻,特別是對內存和CPU的應用、管理都有極高的要求。這就導致很多高級語言無法達到這個目的,c++的用武之地和魅力也正在于此。其實這就是一個成本和收入的對比的問題,如果收入和成本達到閾值設定,那么語言的選擇就不是問題了。
沒有最好的,只有最合適的,這才是真話。
最后來一句“PHP是世界上最好的語言”。
總結
- 上一篇: VisualSVN Server版本库搭
- 下一篇: edge android 6.0,And