C++ 的起源可以追溯到 40 年前,但它仍然是當今使用最廣泛的程式語言之一。
到 2020 年 9 月為止,C++ 是僅次於 C 語言、Java 和 Python,位於全球第四的程式語言。根據最新的 TIOBE 索引,C++ 也是增長最快的語言。
近日,C++ 之父 Bjarne Stroustrup 在接受外媒訪談的時候,對 C++ 成功的關鍵和 它40 年來的發展歷程進行了回顧。
C++ 的成功屬於意料之外
1979 年,C++ 的建立者 Bjarne Stroustrup 開始著手開發這種程式語言,該語言最初被設計為對 C 語言對改進版,增加了基於物件導向程式設計的功能。
Bjarne Stroustrup 一開始沒想到 C++ 會獲得如此大的成功,他說:“C++ 的成功顯然令人驚訝。我認為它的成功取決於其最初的設計目標,就是有效的使用硬體,再加上強大的抽象機制,以及它根據來自實際使用情況的反饋進行謹慎的發展。”
構建 C++ 之初,Bjarne Stroustrup 希望用通訊系統構建一個多計算機系統,該通訊系統可以是共享記憶體,也可以是網路。他把重點放在了軟體上,去編寫底層的、接近硬體的程式碼。例如儲存管理器,程式排程程式和裝置驅動程式,以及分離軟體元件,便於它們可以在執行使用更好的方式執行。
40 年前,是沒有程式語言可以勝任這項工作的,Bjarne Stroustrup 對此花了很多心思。
現在,C++ 已經成為了最受開發人員歡迎的語言之一,鞏固了全球的系統和服務。
C++ 11 使 C++ 成為一種新的語言
他從很早開始就意識到了這項工作不可能由他一個人來完成,但當時也只有 Bjarne Stroustrup 和他在貝爾實驗室的幾個同事全身心的投入其中。隨著標準化程式加快,加入其中的人也越來越多,如今 C++ 標準委員會已有了 400 多名成員和更廣泛的使用者群體,他們共同努力影響著程式語言的發展方向。
1998 年是 C++ 正式標準化的一年,從那時起它就成了時間是最常用的程式語言之一,並至今都保持著這種地位。
Bjarne Stroustrup 說,其後 13 年到來的 C++ 11 為 C++ 的發展奠定了基礎,他說:“C++ 11 使 C++ 感覺像是一種新的語言。”對併發的型別安全的支援是必不可少的,C++ 提供了相互支援的功能密集網路,例如用於編譯時計算的函式、自動型別推導和可變引數模板的函式等等。
正如 Bjarne Stroustrup 所說,C++ 11 新增了一些新功能,這些功能可以使事情變得更簡單,同時保持了相容性和穩定性。不過,儘管 C++ 11 引入了一些使該語言更簡單、更快、更具表現力的新功能,但它還是非常難掌握的。
Bjarne Stroustrup 坦言:“C++ 確實很複雜,要學會很好的使用它需要付出很多努力,但很多人想要的是更簡單還具有更多功能的語言,並且不會破壞現有程式碼。”
對一種程式語言來說,最大的挑戰之一是就決定採用和忽略哪些功能達成共識,這本身就需要大量的努力,花費很多時間去討論。但即使是這樣,也不是所有好的功能都可以被採用,必須新增真正對人們有幫助的東西。
C++ 流行幾十年的祕訣
對於如何在幾十年中保持 C++ 生存的祕訣,Bjarne Stroustrup 提到,“應該從小做起,闡明長期理想,並根據實際使用情況的反饋來發展。”
確實,C++ 走到今天已經超過 35 年了,今天的 C++ 比早期的 C++ 更加強大且富有表現力。但是,直到今天,它的一些簡單程式仍在執行。
對於使用了數十年的系統來說,穩定性是一種非常重要的語言功能。事實上,許多早期的想法只有在 C++ 20 中才可用。Bjarne Stroustrup 說:“從一開始我就知道我無法構建理想的語言,所以我必須以漸進發展為目標。我不相信有完美的語言,這對語言本身和使用語言的人都有不同的標準。”
Bjarne Stroustrup 還補充道:“進化是應對不斷變化的世界的挑戰和融合新思想的必要條件。”
C++ 是一切的無形基礎
C++ 是一種通用的程式語言,由於其強大的功能和靈活性而受到開發人員的青睞,這使其成為作業系統、Web 瀏覽器、搜尋引擎(包括 Google)、遊戲和商務應用程式等的理想選擇。Bjarne Stroustrup 總結道:“如果有一個問題需要高效使用硬體並處理相當大的複雜性,那麼C++顯然是不錯的選擇。”
Bjarne Stroustrup 還提到,COVID-19 大流行阻礙了 C++ 下的兩個迭代 C++ 20 和 C++ 23 的進展。未來他們會推出新功能,並在每三年釋出一次修訂的標準,C++ 17 和 C++ 20 也會按時交付。
然而,儘管 C++ 已經廣泛流行,但 Bjarne Stroustrup 還是認為很難準確指出它的用途。他說:“在任何大型系統中,通常會在較低階別和對效能至關重要的部分中找到 C++。終端使用者甚至系統的其他部分的開發人員通常都看不到系統的這些部分,因此有時我指的是 C++ 是一切的無形基礎。”