C++ 之父迴應被建議棄用:一些高管總喜歡迷戀新事物

語言: CN / TW / HK

Microsoft Azure CTO、Sysinternals 的主要開發者 Mark Russinovich 近日發表言論稱,建議開發人員停止使用 C/C++ 來啟動新專案,並建議可在需要使用 non-GC 語言的場景中使用 Rust。針對此言論,外媒 The Register 向微軟進行了詢問,即 Russinovich 的建議是否會在微軟全公司範圍內進行採納,但並未得到回覆。

同時,該網站還就此事採訪了 C++ 之父 Bjarne Stroustrup; Stroustrup 則為 C++ 進行了辯護:

“人們--尤其是一些高管--總是會迷戀那些承諾會使他們的生活更輕鬆的新事物,這是很正常的。而且,支援新事物遠比解決舊的和眾所周知的工具的已知問題更令人興奮。不幸的是,新的語言通常需要多年的時間和重大的努力,才能在其廣泛的應用領域中與成熟的語言相媲美。發燒友們很少看到這一點,他們的評論往往是相當片面的”。

Stroustrup 表示,考慮到安全性的重要程度,多年來他一直在致力於提高 C++ 的安全性;從而現在在 ISO C++ 中實現了可靠的完美型別和記憶體安全。也就是說,每個物件都根據它定義的型別來使用;這意味著消除了 dangling pointers 的使用、捕獲範圍錯誤並消除了資料爭用。

他還強調稱,包括 Rust 在內的每一種“安全”語言都存在著允許不安全程式碼的漏洞。並 談到了他參與編寫的  C++ Core Guidelines ,這份指南的基本思想是定義一套為保證安全而必須遵守的規則,然後通過靜態分析來強制執行。而之所以需要這些規則,就是因為任意的 C 或 C++ 程式碼本身都無法自證安全。

這就是符合 ISO 標準的 C++ 程式碼,那些感覺不需要安全保障或者還不能更新程式碼的人可以直接不執行分析器。目前,微軟 Visual Studio、Clang Tidy 等一些其他地方都有這種分析器的部分實現。

Stroustrup 指出,很顯然的是 C++ 正在積極改進中,譬如 在實際應用中的靈活性和效能提升的各種嘗試。目前已有數十億行的 C++ 程式碼被部署,因此無論是想要對 C++ 程式碼 進行替換還是加強安全性,都是一項需要循序漸進的艱鉅任務。“否則大量不安全的 C 和舊式 C++ 程式碼將'永遠'存在”。