幹掉CC++?

最近某平臺總是給我推送一些應用開發者對C/C++語言的吐槽;還有一些人工智慧公司的人對我說:機器學習不是用python嗎?為什麼用C/C++?。

幹掉C/C++?

吐槽C/C++

這裡我不想引發論戰,我只想試著澄清一下大家長久以來對C/C++的誤解。我想這對於那些正在艱難的選擇是否學習C/C++的人來講也許是個參考。

幹掉C/C++?

首先C/C++相對於其他高階開發語言來說是個“古聖先賢”,它更傾向於“機器”而不是“人類”,因此學習起來比較“不通情理”和“難以理解”;它執行速度非常快,幾乎與組合語言相當;但是對於快速變化的業務需求卻疲於奔命。

幹掉C/C++?

幹掉C/C++?

因此這些特點決定了C/C++在“作業系統”、“系統軟體”、“高效能計算”、“邊緣計算”領域,而不是“應用開發”,有著廣泛的應用。下面就讓我們一瞥C/C++在這些領域的應用吧。

作業系統

幾乎所有的作業系統都是由C/C++開發的,包括:apple osx,linux,windows,unix,android等。

幹掉C/C++?

系統軟體

C/C++開發了著名的系統軟體,例如 MATLAB , Adobe系列,office 系列,瀏覽器系列等

幹掉C/C++?

幹掉C/C++?

幹掉C/C++?

機器學習

所有的機器學習實現框架(例如tenssorflow,torch,onnx等)都是由C/C++完成的,然後在此之上綁定了對人類更友好的python等介面。著名的工具庫opencv,Numpy 等都是類似的情況。

幹掉C/C++?

編譯器,虛擬機器,直譯器,runtime

目前大部分其他高階語言的編譯器,虛擬機器,直譯器,runtime 都直接或者間接從C/C++受益。

嵌入裝置程式設計

嵌入式程式設計也是C/C++的主場,尤其是對記憶體和速度有極高的要求時。雖然也存在著其他部分場景使用java 或者python ,但他們也必須得到C/C++支援。

幹掉C/C++?

幹掉C/C++?

遊戲和元宇宙

遊戲引擎、增強現實和虛擬現實目前被C/C++(unreal)和它的“遠房表弟”C#(unity)瓜分。許多酷炫的遊戲也直接由C/C++開發,例如我個人最喜歡的“反恐精英”。

幹掉C/C++?

其他領域

我所提到的C/C++領域僅僅是冰山一角,但當系統性能是關鍵因素,或者當需要與裝置進行近距離對話時,我覺得你可以考慮使用C/C++。

幹掉C/C++?

未來前景

C/C++的生命力很強,一直在不斷的發展中,以適應時代的需求,但終將有老去的一天,這是無法擺脫的自然法則。Rust 正在對它發起挑戰,它的終極目標是替換C/C++,但是正所謂“尾大不掉”,C/C++也許是當前世界應用最廣泛的語言。因此Rust 的中期目標是“在新領域,例如區塊鏈,使用Rust;在傳統領域將於C/C++長期共存,在其之上提供封裝”。

幹掉C/C++?

最後,你願意加入到研發基礎軟體或者系統軟體的研發陣營中來麼?有或者你願意做一個幕後的獨行者,為其他應用開發語言提供支援麼?如果是,你就毫不猶豫的學習C/C++和Rust。