係統粉 > IT資訊 > 微軟資訊

C、C++不得寵,微軟正開發新的編程語言

發布時間:2019-12-09    瀏覽數:
76 年迭代與更新,編程語言界,誰主沉浮?

在六百多種編程語言中,對於開發者而言,其主觀印象中或隻有幾種主流的編程語言,如 Java、C、C++、C#、新貴 Python 等,而之所以它們能夠成為主流,軟件開發生態必是其中不可或缺的一個重要部分。

以最通用的編程語言之一 C# 為例,作為類型安全、麵向對象的編程語言,C# 可以良好地運行在 .NET 框架運行時環境中。隨著其優勢的逐漸顯現,微軟作為背後最重要的推動者之一,全麵將其運用於數據庫、Web 服務、遊戲、移動應用程序、服務器應用程序等場景中,由此也吸引了無數開發者加入其生態構建。除此之外,一直以來,微軟也是 C++、C 編程語言的生態發展的重要推手。

如今,微軟是否會為另一個編程語言——Rust,以及類似於該語言且是微軟最新開發的 Verona 的生態帶來積極地影響力,我們將拭目以待。

C、C++不得寵,微軟正開發新的編程語言(1)

整理 | 屠敏

出品 | CSDN(ID:csdnnews)

猶記得在問答網站 Quora 上,曾有網友發帖求教“開發 Windows 10 用了哪種編程語言?”

對此,直至今年 4 月,微軟內核工程師 Axel Rietschin 在該問題下回應道(https://www.quora.com/Which-programming-language-is-used-for-making-Windows-10/answer/Axel-Rietschin):

Windows 10 與 Windows 8.x、7、Vista、XP、2000 和 NT 的代碼庫是相同的,其中每一代都在之前的基礎上進行重大的重構,並增加大量新功能,改進性能和硬件支持,此外還有安全性的提升,同時保持非常高的前向兼容性。

其中,如 ntoskrnl.exe 內核大部分是使用 C 編寫的,在內核模式下運行的大多數內容也是用 C 編定的,包括文件係統、網絡與驅動程序等。其中也包含一些 C++ 代碼,而越靠近用戶模式、越接近新的源碼時,C 的使用變得越來越少,反之 C++ 變多。

除此之外,如 .NET BCL 與一些相關庫和框架通常都是用 C# 編寫的,但它們也隻不過是帶有幾座 C++ 小島的 C 汪洋大海的一栗,它們自不同的部門,代碼並不屬於 Windows 源碼樹。

由此可見,占據全球桌麵操作係統龍頭老大的 Windows 其內部結構錯綜複雜,運用的編程語言也遠遠不止一種。而如今,除了 C、C++、C# 等主流編程語言之外,微軟還宣布,正在探索使用 Mozilla 主導開發的通用、編譯型編程語言 Rust 語言來作為 C、C++ 和其他語言的替代方案,與此同時,微軟也正在研發類似於 Rust 的新的編程語言——Verona,不過,微軟采取該兩種策略的最終目的隻有一個,就是希望以此來加固 Windows 10 的安全性。

C、C++不得寵,微軟正開發新的編程語言(2)

微軟為何要用 Rust 替代 C、C++?

之所以大動篇幅地想要在安全上麵有所改進與提升,必是曾在這個地方跌倒過。

事實上,確實如此。此前據微軟官方博客報道,自 2004 年以來,微軟安全響應中心(MSRC)對所有微軟安全漏洞報告進行了分類,從中發現,所有微軟年度補丁中約有 70% 是針對內存安全漏洞的修複。根據深入地調查,我們發現這些漏洞是由開發者無意中在其 C、C++ 代碼中插入內容損壞錯誤引起的。

C、C++不得寵,微軟正開發新的編程語言(3)

微軟每年修複的 CVE 漏洞中約有 70% 是內存安全問題

在清晰地認知這一點後,微軟也開始了尋找更安全的編程語言之路。

在探索伊始,微軟熟知有幾種語言在一定程度上可以被用來防止內存損壞漏洞,如 C#。但令人無奈的是,像 C++ 這類的編程語言在某些情況下又是必不可少的,畢竟其在運行的速度、內存和磁盤占用的空間上均有優勢,除了以上,C++ 還可以預測執行。對此,兩者是否可以合二為一,即是否可以運用 .NET、C# 之類的語言來保證所有內存安全,再加上 C++ 所具備的效率。

綜合之下,想要滿足這些條件,素來以“安全、並發、實用”為設計準則的 Rust 或是一個最佳的選擇。對此,微軟安全部門也認可道,Rust 是一種從根本上考慮安全性的編程語言,它像 C、C++ 一樣也有一個最小的可選“運行時”,此外,它的標準庫依賴於 libc,但標準庫也是可選的,因此在沒有操作係統的平台上運行也是可能的。

C、C++不得寵,微軟正開發新的編程語言(4)

微軟對安全的深入研究——Verona 語言

不過,世界上沒有足夠安全的操作係統,當然也不會有完美無瑕疵的編程語言。在基於 Rust 完善 Windows 係統安全之際,MSRC 也發現該語言缺乏與 C++ 的一流互操作性,以及與現有 Microsoft 工具的互操作性。

對此,據外媒 ZDNet 報道,微軟研究人員 Matthew Parkinson 在近日的一次演講中對外透露,微軟正在開發類似於 Rust 的新編程語言——Verona。

和以前的目的一樣,微軟旨在通過 Verona 來開發低級的 Windows 組件以完善 Windows 10 的安全性問題。

“內存安全”是編碼框架的術語之一,可幫助保護內存空間免受惡意軟件的濫用。微軟希望借助 Verona 項目推動在安全方麵的工作以關閉這種攻擊媒介。此前,有不少業界人士表示,微軟的 Vernoa 項目計劃可能隻是一個無濟於事的實驗。

不過,在近期的演講中,微軟研究人員 Matthew Parkinson 分享了微軟在 MemGC(Memory Garbage Collector)上所做的工作,以及 Verona 的最新進展。

MemGC 是指 IE 和 Edge 瀏覽器上的內存垃圾回收器,它解決了標準瀏覽器功能(稱為文檔對象模型(DOM))中的漏洞。Matthew Parkinson 表示:“我們為 DOM 構建了一個垃圾收集器(GC)。開發者可以通過免費使用,能在 IE 中找到利用 DOM 引擎中的內存管理方法。然後,微軟引入了 MemGC,它是 DOM 的保守 GC。它針對這種非常特殊的漏洞樣式,從根本上消除了它作為攻擊媒介。”

除了以上,Matthew Parkinson 也一直在鑽研一個可能引起其產品客戶共鳴的問題:“我們將如何構建最安全的產品?如何應對遺留問題?我們不能想著僅僅丟棄已有的東西,而是思考可以在更安全的係統中構建什麼。”

基於這樣的信念,Parkinson 表示,“如果想要隔離,並精簡遺留的部分代碼,以使攻擊者的利用代碼無法逃逸出來,那麼在語言設計該有何創新?”

這就是微軟最新的“安全基礎結構編程” ——Verona 語言 ,據了解,這一項目將很快“開源”。

目前,該項目得到 C# 項目經理 Mads Torgensen 和 Microsoft Research Cambridge 研究軟件工程師 Juliana Franco 的支持。

對於微軟而言,其當前麵臨的挑戰是應對廣泛的“應用程序範圍”,如從用於桌麵應用程序的 C# 到用於 Exchange 的 C 或 C#、ASP.NET、Azure 和設備驅動程序,再到內存管理和啟動加載器等底層 Windows 組件,以及 Windows 內核硬件抽象層(HAL)。

Matthew Parkinson 表示:“執行內存管理確實很困難。如果有任意並發突變,那麼,臨時內存安全性將非常困難。”此外,Matthew Parkinson 還介紹了 Verona 的設計思路,“Verona 的所有權模型是基於對象組的,而不是像 Rust 那樣基於單個對象的所有權模型。在 C ++ 中,開發者可以獲得指針,並且它是基於對象的,並且幾乎是每個對象。不過,這和我關於數據和語法的思考不同,我認為數據結構是對象的集合,而對象的集合則是生命周期。

“因此,通過對象的所有權級別來獲得所有權,我們就可以更接近人們正在使用的抽象級別,它使我們能夠構建數據結構而不會超出安全範圍。”

C、C++不得寵,微軟正開發新的編程語言(5)

你如何看待 Verona 語言?

那麼,Verona 究竟是否會為 Windows 的安全性帶來突破性的進展,我們將拭目以待。而在此同時,不少網友也紛紛感歎道:

一定是 Rust 本身不夠好,寧願自己重寫,也不願參與一起開發讓 Rust 更好;

放出這消息的是 Microsoft Research ,並不是 Microsoft。就和之前為 Rust 設計 com 庫的是微軟安全部一樣。而且研究院更多的是偏向於研究性質,指不定隻是搞著實驗用的;

Rust 語法很繁瑣複雜,C# 是出了名的很甜的語言,MS 肯定不能忍 Rust 這囉嗦繁瑣的語法,估計要推出升級版,看好。

你怎麼看呢?歡迎下方留言,分享你的看法。

參考:

https://msrc-blog.microsoft.com/2019/07/16/a-proactive-approach-to-more-secure-code/

https://www.zdnet.com/article/microsoft-were-creating-a-new-rust-based-programming-language-for-secure-coding/

【End】

上一篇:如何直裝純淨win10(補充上一篇) 下一篇:微軟將在2021年結束對Windows10Mobile版Office應用的支持

相關資訊

最新熱門應用

電腦問答