微软解释为什么Rust是系统编程的最佳选择
上周,MSRC(微軟安全響應(yīng)中心)透露出擁抱 Rust?的打算,隨后他們將這個(gè)話題擴(kuò)展為一個(gè)系列,進(jìn)一步闡述了使用安全的系統(tǒng)編程語(yǔ)言的的必要性,以及選擇 Rust 的原因。
在該系列最新一篇文章中,MSRC 團(tuán)隊(duì)首席云開(kāi)發(fā)倡導(dǎo)者 Ryan Levick 解釋了為什么他們認(rèn)為 Rust 編程語(yǔ)言目前是業(yè)界采用的最佳選擇,不僅僅是因?yàn)樗軌蛞詢?nèi)存安全的方式編寫(xiě)系統(tǒng)級(jí)程序。
“首先,已經(jīng)有很多出色的內(nèi)存安全語(yǔ)言在微軟內(nèi)外廣泛使用,包括 .NET 語(yǔ)言(像是 C# 或 F#)和其他語(yǔ)言(例如 Swift、Go 和 Python)。我們鼓勵(lì)目前使用 C 或 C++ 的人將其中任意一種語(yǔ)言納入考慮。不過(guò)現(xiàn)在談?wù)摰氖菍?duì)安全的系統(tǒng)編程語(yǔ)言的需求,此類工作負(fù)載需要 C、C++ 和 Rust 能夠提供的速度和可預(yù)測(cè)的性能。通過(guò)垃圾回收實(shí)現(xiàn)內(nèi)存安全的語(yǔ)言不是系統(tǒng)編程的理想選擇,因?yàn)樗鼈兊?span style="font-family:'-apple-system', 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', SimSun, 'Segoe UI', Roboto, sans-serif;font-size:15px;">運(yùn)行時(shí)間會(huì)導(dǎo)致不可預(yù)測(cè)的性能和不必要的成本。”
性能和控制
Levick 指出,最好先考慮一下無(wú)法從 C 和 C++ 放棄的東西——性能和控制,就能更清楚地明白 Rust 為什么是一個(gè)好的選擇。像 C 和 C++ 一樣,Rust 有一個(gè)最小的可選“運(yùn)行時(shí)(runtime)”。Rust 的標(biāo)準(zhǔn)庫(kù)同樣依賴于 libc,但標(biāo)準(zhǔn)庫(kù)也是可選的,因此在沒(méi)有操作系統(tǒng)的平臺(tái)上運(yùn)行也是可能的。
仍然像 C 和 C++ 一樣,Rust 為程序員在何時(shí)分配內(nèi)存以及分配內(nèi)存的多少上提供了精細(xì)的控制,使程序員能夠非常清楚地知道程序每次運(yùn)行時(shí)的確切執(zhí)行方式。在原始速度、控制和可預(yù)測(cè)性方面,這對(duì)于性能來(lái)說(shuō)意味著什么?那就是,“Rust、C 和 C++ 可以用類似的術(shù)語(yǔ)來(lái)思考”。
安全
Rust 與 C 和 C++ 的區(qū)別在于其強(qiáng)大的安全保障,某種程度上來(lái)說(shuō) Rust 完全是內(nèi)存安全(memory safe)的。正如之前那篇文章提到的,微軟大約 70% 的安全問(wèn)題是內(nèi)存安全問(wèn)題。如果這些軟件用 Rust 編寫(xiě),那么這 70% 的安全問(wèn)題很可能就不存在。
在系統(tǒng)編程中,有時(shí)程序員必須執(zhí)行無(wú)法靜態(tài)驗(yàn)證為安全的操作。Rust 為程序員提供了將這些操作封裝在安全抽象中的工具,這意味著曾經(jīng)降級(jí)為代碼注釋或約定的東西可以由 Rust 編譯器靜態(tài)強(qiáng)制執(zhí)行。
不僅僅是性能與安全
Rust 最初引起 MSRC 的興趣正是由于上述性能與安全方面的特性。但它的的魅力不止于此,已經(jīng)有其他微軟團(tuán)隊(duì)開(kāi)始采用 Rust,主要出于以下原因:
根據(jù)微軟內(nèi)部調(diào)查,采用它的最主要原因是“精密性”(correctness)——“if it compiles, then it works”。
Rust 靜態(tài)地強(qiáng)制執(zhí)行程序的許多屬性,已經(jīng)遠(yuǎn)超內(nèi)存安全性,還包括空指針安全性和數(shù)據(jù)爭(zhēng)用安全性(即沒(méi)有來(lái)自兩個(gè)或多個(gè)線程的一塊內(nèi)存的不同步訪問(wèn))。
Rust 的豐富類型系統(tǒng)使編寫(xiě)富有表現(xiàn)力的程序成為可能。?具有相關(guān)數(shù)據(jù)的枚舉和強(qiáng)大的 trait 系統(tǒng)等概念進(jìn)一步強(qiáng)化了 Rust 的目標(biāo),即盡可能使程序無(wú)錯(cuò)誤。
Rust 現(xiàn)有的社區(qū)對(duì)該語(yǔ)言有很大益處。雖然 Rust 仍然是一種年輕語(yǔ)言,但它擁有一個(gè)健康的生態(tài)系統(tǒng),既能夠促進(jìn)開(kāi)源社區(qū)發(fā)展強(qiáng)大,又能夠支持生產(chǎn)用戶。
Levick 表示有足夠的理由相信 Rust 會(huì)有一個(gè)光明的未來(lái),“雖然現(xiàn)在大規(guī)模采用 Rust 還為時(shí)過(guò)早,但早期采用 Rust 通常是非常積極且正面的”。他們相信 Rust 在編寫(xiě)安全的系統(tǒng)軟件時(shí)會(huì)改變游戲規(guī)則。Rust 提供編寫(xiě)底層系統(tǒng)所需的性能和控制,同時(shí)使軟件開(kāi)發(fā)人員能夠編寫(xiě)更健壯、安全的程序。
不過(guò),MSRC 在研究 Rust 時(shí)發(fā)現(xiàn)了一些問(wèn)題,其中包括如何規(guī)范 Rust 的“不安全”(unsafe)超集的使用,缺乏與 C++ 的一流互操作性,以及與現(xiàn)有 Microsoft 工具的互操作性。
這確實(shí)對(duì)微軟采用 Rust 提出了挑戰(zhàn),但 MSRC 還是滿懷期待:“我們對(duì)這些可能性感到興奮。 雖然還有許多關(guān)于 Rust 如何適應(yīng)整個(gè) Microsoft 工程的問(wèn)題需要弄清楚,但我們鼓勵(lì)其他人一同加入,認(rèn)真考慮這門(mén)語(yǔ)言,以滿足他們的系統(tǒng)編程需求。”
開(kāi)源中國(guó)征稿啦!
開(kāi)源中國(guó) www.oschina.net 是目前備受關(guān)注、具有強(qiáng)大影響力的開(kāi)源技術(shù)社區(qū),擁有超過(guò) 400 萬(wàn)的開(kāi)源技術(shù)精英。我們傳播開(kāi)源的理念,推廣開(kāi)源項(xiàng)目,為 IT 開(kāi)發(fā)者提供一個(gè)發(fā)現(xiàn)、使用、并交流開(kāi)源技術(shù)的平臺(tái)。
現(xiàn)在我們開(kāi)始對(duì)外征稿啦!如果你有優(yōu)秀的技術(shù)文章想要分享,熱點(diǎn)的行業(yè)資訊需要報(bào)道等等,歡迎聯(lián)系開(kāi)源中國(guó)進(jìn)行投稿。投稿詳情及聯(lián)系方式請(qǐng)參見(jiàn):我要投稿
推薦閱讀Oracle Linux 8.0 發(fā)布
最權(quán)威編程語(yǔ)言排行榜發(fā)布6月更新,TS首進(jìn)前十
微軟擁抱 Rust,以作為 C 和 C++ 的安全替代方案
GitHub Trending 被國(guó)人霸榜,國(guó)外開(kāi)發(fā)者不滿
這款數(shù)據(jù)庫(kù)將企業(yè)版功能100%開(kāi)源還不收費(fèi),why?
總結(jié)
以上是生活随笔為你收集整理的微软解释为什么Rust是系统编程的最佳选择的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基于Masstransit实现Event
- 下一篇: 树莓派 + Windows IoT Co