74 歲 C++ 之父最新藍圖:讓代碼更安全,還能兼容40年前的老程序!

2025年03月24日20:53:05 科技 1105

74 歲 C++ 之父最新藍圖:讓代碼更安全,還能兼容40年前的老程序! - 天天要聞

圖片來源:維基百科

C++ 仍在不斷發展,但許多開發者的使用方式似乎還停留在上個世紀。Bjarne Stroustrup 表示:「我希望整個社區,尤其是 WG21 的成員,能了解我對 C++ 未來發展的看法。」

這位 74 歲的 C++ 創建者用 40 年的時間見證了他在 1985 年設計的這門語言的成長。

為了推動一些渴望已久的特性,上個月,Stroustrup 在《ACM 通信》上發表了「21 世紀的 C++」一文https://cacm.acm.org/blogcacm/21st-century-c/。這篇長達 6300 字的文章旨在展示現代化的、類型安全的 「21 世紀 C++ 」中的一些「關鍵概念」,以便可以創建 「C++ on steroids」。例如,在文中,Stroustrup 着重介紹了長期以來一直在嘗試的方法,如使用 guideline-enforcing 配置文件編寫更安全的代碼。為了與幾十年來已經編寫的 C++ 代碼保持兼容,「我們不能改變語言,但我們可以改變它的使用方式......」,Stroustrup 寫道。

然而,這種演變並不完全取決於他自己。在文章末尾,Stroustrup 提到了 WG21(標準化工作組),以及它將如何不可避免地對語言的變化產生影響。Stroustrup 寫道,」我不願意對未來做出預測,部分原因是這本身就很冒險,更重要的是因為 C++ 的定義是由一個龐大的 ISO 標準委員會基於共識來管理的。「

「我上次看時,會員名單上有 527 條。這表明大家有着很高的熱情和廣泛的興趣,並且提供了廣泛的專業知識,但對於編程語言設計來說,這並不理想,而且 ISO 的規則也無法進行大幅修改"。

儘管如此,對於關鍵受眾,Stroustrup 告訴 TNS,「有些人缺乏歷史感,忽略了一些關鍵點。例如,指南和配置文件要符合 C++ 的長期發展方向。「因此,他正在採取措施教導他們。」為此,我必須說明關鍵特性的適用範圍」。

他這篇內容詳盡的文章是一個很好的開始,但也只是眾多措施中的一種。最終,它將改變整個 C++ 生態系統的發展軌跡,同時為程序員帶來他們渴望已久的高性能、類型安全和靈活的語言。

在完成這一切的同時,Stroustrup 也實現了自己從上世紀 80 年代起就一直堅持的目標......

呼籲採取緊急行動

Stroustrup 還直接與 WG21 進行了溝通。The Register 指出,「過去三四年來,業界和政府的網絡安全專家一直在勸阻人們使用 C 和 C++,同時鼓勵人們使用具有更好內存安全性的語言」。因此,在發表這篇文章三天後,Stroustrup 給 C++ 標準委員會留下了一份官方說明,他將其描述為 「呼籲採取緊急行動,部分是為了應對 C++ 所受到的前所未有的嚴重攻擊」。

「我認為, WG21 需要做一些有意義的事,並讓人們看到它在做這件事。Profiles 是一個可以實現這一目標的框架。「

Stroustrup 的觀點很明確。他在文章中寫道:「指南沒問題,也有用處,但在一個龐大的代碼庫中,要始終如一地遵循它們基本上是不可能的。我們需要的是一種執行機制,它能標記並防止諸如懸空指針、範圍錯誤和 nullptr 解引用等問題。」

幸運的是,這樣的執行機制已經以執行準則配置文件的形式提供了。參考資料部分提供了在 Visual Studio 2019 中使用這些配置文件的示例。它實現了 「Lifetime」 配置文件的早期版本,可檢查 C++ 對象生命周期中的懸空指針和引用以及其他常見錯誤...

一般來說,每個配置文件通常都是在編譯時驗證要求是否得到滿足,是否實現了特定的效果。除了 「Lifetime」 檢查配置文件,他們還計劃推出更多配置文件,包括 「Bounds」 配置文件,以便確保所有訪問數組的代碼都包含範圍安全檢查。

在我們的電子郵件採訪中,Stroustrup 指出,通過 2020 年推出的新 span 類模板,C++ 已經為防止範圍錯誤提供了更好的支持。Bounds Profile 只是為了確保這些用於保證邊界安全的功能確實已經執行到位。

Stroustrup 告訴我:「其中很多都是標準的,現在就可以使用「。此外,他們還計劃推出其他幾個配置文件,從而幫助開發人員避免代碼中的類型或算術錯誤。Stroustrup 認為:」在不久的將來,Profiles 將為各種約束的執行提供一個框架。「

希望這能為 C++ 提供人們所期待的安全保障。不過,這也是 40 年前 Stroustrup 最初的 C++ 構想的一個自然發展過程。

「更好的近似」

像類型安全等特性一直是 Stroustrup 為 C++ 設定的安全和性能目標之一。

他在文章中寫道:「這一點從一開始就沒有變過」,並在參考資料中向讀者介紹了他 1994 年出版的《C++ 語言的設計與演化》一書。但是,當代 C++ 比早期版本更好地實現了這些長期目標,其中一部分原因是這種語言「從設計之初就在不斷發展」,Stroustrup 在文章末尾寫道。因此,經過幾十年的改進,他將 C++ 23(10 月份發佈的版本)這樣的 「當代 C++」稱為他最初理想的 「更好的近似」。

74 歲 C++ 之父最新藍圖:讓代碼更安全,還能兼容40年前的老程序! - 天天要聞

在敦促 WG21 採用 Profiles 的說明中,他也強調了這一點:「正如我之前所說,這也是一個機會,因為類型安全和資源安全(包括內存安全)從一開始就是 C++ 的關鍵目標"。

「對於這一點,我的感受很強烈。請不要被我相對平靜的語言所迷惑"。

Stroustrup 在文中指出,語言不斷發展的一個問題是「許多人對 C++ 的理解已經過時。如今,我們仍然可以看到人們不斷地提及神話語言 C/C++,這通常意味着,人們認為 C++ 是 C 語言的一個次要擴展,包含了 C 語言所有最糟糕的方面,以及對 C++ 複雜特性的怪異濫用......」 但是,C++ 仍在繼續發展,Stroustrup 強調說,C++ 「正在進行中的工作」及實驗性功能已經可以改進異步計算通用模型和 SIMD。

Stroustrup 寫道:「一個嚴重的問題是,如何將不同的想法整合成一個連貫的整體。與大多數軟件項目——甚至是學術界的大多數計算機科學工作——不同,設計一種語言需要「在一個並非所有相關因素都能為人所知的空間里做決定,而且接受以後數十年內都不會有重大改變」。

簡而言之,這是一個棘手的問題——這仍然是一個已知的問題。「幾十年來,幾乎所有的語言設計工作都以失敗告終,這說明了這個問題的嚴重性「。

但這並不意味着 C++ 要不再嘗試進化......

顯著改進

Profiles 並不是 21 世紀 C++ 採用的唯一改進方式。Stroustrup 在接受我們的電子郵件採訪時說:「我還要指出,模塊是一種能使代碼更簡潔並大大縮短編譯時間的機制。」

Stroustrup 在文章中提到,導入已編譯模塊比使用老式的 #include 語句速度「高出 7 到 10 倍」。

他告訴我:「現在,大多數人都可以使用 C++23 提供的功能大幅改進他們的代碼。「展望未來,Stroustrup 預測,未來會有更多提升性能的特性。「在 C++26 中,我們很可能會看到經過改進的並發支持、靜態反射和契約,以及許多細微的改進和標準庫組件。」

這種前瞻性的希望或許可以解釋,為什麼 Stroustrup 在宣傳 Profiles 時會以 C++ 的歷史為基礎。Stroustrup 告訴我,他的文章「展示了 C++ 演進的方向。安全保證即將到來。這在 C++ 中並不是一個新奇的想法,而是長期目標的一部分。完備的類型安全和資源安全是 C++ 最初的目標之一,但推動大量應用領域的發展需要時間,而且必須循序漸進。」

他知道,已安裝的代碼庫非常廣泛,C++「目前涵蓋了大量的應用領域」。安全保證必將涉及那些已經使用 C++ 提供高質量應用程序的領域。

「關注內存安全的人應該注意到,C++ 並非 C 語言。在 C++ 中,基於更安全的編程風格和加固庫的解決方案已經廣泛部署。「

我問,是否有跡象表明他在 ACM 發表的文章產生了影響——顯然這很難量化。Stroustrup 說:"我不願意對未來做預測,但我們已經看到,泛型編程已經從 concepts 中獲得了更好的支持。」

Stroustrup 指出,如果你正在尋求有效的改進,那麼你也可以將目光投向語言之外。目前,有很多工具可供 C++ 開發人員選擇。

「語言不僅僅是語言規範或正式標準中的內容「。

原文鏈接:

https://thenewstack.io/bjarne-stroustrup-on-how-he-sees-c-evolving/

科技分類資訊推薦

長安啟源Q07正式預售,13.98萬元起,預訂可享7重先享禮 - 天天要聞

長安啟源Q07正式預售,13.98萬元起,預訂可享7重先享禮

3月31日,長安啟源Q07先享預訂發佈會在雲南大理舉行,「全家人的智能SUV」——長安啟源Q07正式開啟預售,預售價13.98萬元起,共推出5個版本,並首發月華銀限定色,為不同需求的家庭用戶提供自由選擇,更有7重先享預訂專屬好禮,大訂用戶可享「大訂1999抵4
便宜買奇瑞,個性買阿維塔,檔次上問界,最保值的不是雷克薩斯 - 天天要聞

便宜買奇瑞,個性買阿維塔,檔次上問界,最保值的不是雷克薩斯

出了便宜,奇瑞的安全性也不錯。目前奇瑞車系共有26個車系在售,奇瑞新能源有5個車系在售,而奇瑞高端品牌星途有8個車系在售。奇瑞汽車的品系越來越多,產品也越來越豐富。正所謂「樹大招風」,這麼多的車型安全性是否有保障呢?以瑞虎7的碰撞車試為例,該車正面100%碰撞
康邁輪端主掛一體:安全、經濟、高效 - 天天要聞

康邁輪端主掛一體:安全、經濟、高效

在運輸運營中車輛出勤率和維保成本至關重要當主車配備康邁免維護輪端而挂車輪端卻仍需頻繁進站保養時則會嚴重影響整車高效運營康邁開發了與主車輪端相同技術標準的挂車免維護輪端產品實現康邁輪端主掛一體化軸承游隙預調整技術賦能挂車康邁作為行業技術引領者將北美先進輪端油潤滑
極狐汽車 3 月衝進前六,靠的是什麼? - 天天要聞

極狐汽車 3 月衝進前六,靠的是什麼?

在當下風雲變幻的新能源汽車市場,每月的銷量榜單都是各方關注的焦點。剛剛過去的 3 月,極狐汽車宛如一匹黑馬,強勢躋身銷量排行榜前六,這一傲人成績瞬間吸引了整個行業的目光。今天,就讓我們一同深入探尋極狐汽車此次突破背後的制勝法寶。
一季度狂賣70萬輛,吉利交出「滿分答卷」 - 天天要聞

一季度狂賣70萬輛,吉利交出「滿分答卷」

4月1日,吉利汽車集團公布了最新銷量數據,2025年第一季度,吉利汽車累計銷量達703,824輛,同比增長48%,超額完成全年銷量目標的四分之一。其中,新能源車型(含吉利、領克、極氪)銷量達339,200輛,同比增長135%,新能源佔比提升至48%,展現出強勁