摘要:\u003C\u002Fp\u003E\u003Cp\u003E在該系列最新一篇文章中,MSRC 團隊首席雲開發佈道師 Ryan Levick 解釋了爲什麼他們認爲 Rust 編程語言目前是業界採用的最佳選擇,不僅僅是因爲它能夠以內存安全的方式編寫系統級程序。不過現在談論的是對安全的\u003Cstrong\u003E系統\u003C\u002Fstrong\u003E編程語言的需求,此類工作負載需要 C、C++ 和 Rust 能夠提供的速度和可預測的性能。

"\u003Cdiv\u003E\u003Cp\u003E上週,MSRC(微軟安全響應中心)透露出擁抱 Rust 的打算,隨後他們將這個話題擴展爲一個系列,進一步闡述了使用安全的系統編程語言的的必要性,以及選擇 Rust 的原因。\u003C\u002Fp\u003E\u003Cp\u003E在該系列最新一篇文章中,MSRC 團隊首席雲開發佈道師 Ryan Levick 解釋了爲什麼他們認爲 Rust 編程語言目前是業界採用的最佳選擇,不僅僅是因爲它能夠以內存安全的方式編寫系統級程序。\u003C\u002Fp\u003E\u003Cp\u003E“首先,已經有很多出色的內存安全語言在微軟內外廣泛使用,包括 .NET 語言(像是 C# 或 F#)和其他語言(例如 Swift、Go 和 Python)。我們鼓勵目前使用 C 或 C++ 的人將其中任意一種語言納入考慮。不過現在談論的是對安全的\u003Cstrong\u003E系統\u003C\u002Fstrong\u003E編程語言的需求,此類工作負載需要 C、C++ 和 Rust 能夠提供的速度和可預測的性能。 通過垃圾回收實現內存安全的語言不是系統編程的理想選擇,因爲它們的運行時間會導致不可預測的性能和不必要的成本。”\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002F1fd25f99f42c4bee9a5af66f5af0c239\" img_width=\"1024\" img_height=\"576\" alt=\"微軟解釋爲什麼 Rust 是系統編程的最佳選擇\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cstrong\u003E性能和控制\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003ELevick 指出,最好先考慮一下無法從 C 和 C++ 放棄的東西——性能和控制,就能更清楚地明白 Rust 爲什麼是一個好的選擇。像 C 和 C++ 一樣,Rust 有一個最小的可選“運行時”。Rust 的標準庫同樣依賴於 libc,但標準庫也是可選的,因此在沒有操作系統的平臺上運行也是可能的。\u003C\u002Fp\u003E\u003Cp\u003E仍然像 C 和 C++ 一樣,Rust 爲程序員在何時分配內存以及分配內存的多少上提供了精細的控制,使程序員能夠非常清楚地知道程序每次運行時的確切執行方式。在原始速度、控制和可預測性方面,這對於性能來說意味着什麼?那就是,“Rust、C 和 C++ 可以用類似的術語來思考”。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E安全\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003ERust 與 C 和 C++ 的區別在於其強大的安全保障,某種程度上來說 Rust 完全是內存安全(memory safe)的。正如之前那篇文章提到的,微軟大約 70% 的安全問題是內存安全問題。如果這些軟件用 Rust 編寫,那麼這 70% 的安全問題很可能就不存在。\u003C\u002Fp\u003E\u003Cp\u003E在系統編程中,有時程序員必須執行無法靜態驗證爲安全的操作。Rust 爲程序員提供了將這些操作封裝在安全抽象中的工具,這意味着曾經降級爲代碼註釋或約定的東西可以由 Rust 編譯器靜態強制執行。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E不僅僅是性能與安全\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003ERust 最初引起 MSRC 的興趣正是由於上述性能與安全方面的特性。但它的的魅力不止於此,已經有其他微軟團隊開始採用 Rust,主要出於以下原因:\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E根據微軟內部調查,採用它的最主要原因是“精密性”(correctness)——“if it compiles, then it works”。\u003C\u002Fli\u003E\u003Cli\u003ERust 靜態地強制執行程序的許多屬性,已經遠超內存安全性,還包括空指針安全性和數據爭用安全性(即沒有來自兩個或多個線程的一塊內存的不同步訪問)。\u003C\u002Fli\u003E\u003Cli\u003ERust 的豐富類型系統使編寫富有表現力的程序成爲可能。 具有相關數據的枚舉和強大的 trait 系統等概念進一步強化了 Rust 的目標,即儘可能使程序無錯誤。\u003C\u002Fli\u003E\u003Cli\u003ERust 現有的社區對該語言有很大益處。雖然 Rust 仍然是一種年輕語言,但它擁有一個健康的生態系統,既能夠促進開源社區發展強大,又能夠支持生產用戶。\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003ELevick 表示有足夠的理由相信 Rust 會有一個光明的未來,“雖然現在大規模採用 Rust 還爲時過早,但早期採用 Rust 通常是非常積極且正面的”。他們相信 Rust 在編寫安全的系統軟件時會改變遊戲規則。Rust 提供編寫底層系統所需的性能和控制,同時使軟件開發人員能夠編寫更健壯、安全的程序。\u003C\u002Fp\u003E\u003Cp\u003E不過,MSRC 在研究 Rust 時發現了一些問題,其中包括如何規範 Rust 的“不安全”(unsafe)超集的使用,缺乏與 C++ 的一流互操作性,以及與現有 Microsoft 工具的互操作性。這確實對微軟採用 Rust 提出了挑戰,但 MSRC 還是滿懷期待:“我們對這些可能性感到興奮。 雖然還有許多關於 Rust 如何適應整個 Microsoft 工程的問題需要弄清楚,但我們鼓勵其他人一同加入,認真考慮這門語言,以滿足他們的系統編程需求。”\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E點擊,“瞭解更多”,查看MSRC 博客原文\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E"'.slice(6, -6), groupId: '6717168670474240515
相關文章