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