微軟開始談論他們的下一代編程語言,用於系統編程的 C#

閱讀時間圖標 3分鐘讀


讀者幫助支持 MSpoweruser。如果您透過我們的連結購買,我們可能會獲得佣金。 工具提示圖標

請閱讀我們的揭露頁面,了解如何幫助 MSPoweruser 維持編輯團隊的發展 阅读更多

微軟研究操作系統的架構師和開發人員喬·達菲(Joe Duffy)在博客中介紹了他們在過去幾年中一直在研究的下一代編程語言。 微軟現在將這種即將推出的語言描述為 C# 的“系統編程”擴展。 微軟正試圖將這種語言定位為以安全和生產力為中心的 C#、Java 等和以性能為中心的 C++ 之間的交叉。

以下是該語言的 6 個重要特徵,

) 終生了解。 C++ 具有 RAII、確定性銷毀和高效的對象分配。 C# 和 Java 都誘使開發人員過度依賴 GC 堆,並且通過 IDisposable 僅提供對確定性銷毀的“鬆散”支持。 我的團隊所做的部分工作就是定期將 C# 程序轉換為這種新語言,我們經常會遇到 30-50% 的時間花在 GC 上。 對於服務器,這會扼殺吞吐量; 對於客戶來說,它通過在交互中註入延遲來降低體驗。 我們從 C++ 中竊取了一個頁面——在右值引用、移動語義、破壞、引用/借用等領域——但保留了必要的安全元素,並將它們與函數式語言的思想融合在一起。 這使我們能夠積極地堆棧分配對象、確定性銷毀等等。

2)副作用的理解。 這是我們在 OOPSLA 2012 中發布的內容的演變,為您提供 C++ const 元素(但同樣具有安全性),以及一流的不變性和隔離性。

3) 大規模異步編程。 社區在這個問題上一直在反复討論,即是使用持續傳遞還是輕量級阻塞協程。 這包括 C#,但也包括地球上幾乎所有其他語言。 這裡的關鍵創新是一個可組合的類型系統,它與執行模型無關,並且可以有效地映射到任何一個。 聲稱我們有一個正確的方法來揭露這些東西是傲慢的,但我有許多其他方法的經驗,我喜歡我們著陸的地方。

4) 類型安全系統編程。 人們普遍認為,類型安全會帶來固有的性能損失。 確實,邊界檢查是不可協商的,默認情況下我們更喜歡溢出檢查。 與 JIT 編譯相比,一個好的優化編譯器在這裡可以做的事情令人驚訝。 (您只需隨便查看一些最近的安全公告,即可了解這些功能為何具有優點。)其他領域包括允許您在不分配的情況下做更多事情。 就像擁有可以零分配調用的基於 lambda 的 API(而不是通常的兩種:一種用於委託,一種用於顯示)。 並且能夠在不分配的情況下輕鬆地劃分出子數組和子字符串。

5)現代錯誤模型。 這是社區不同意的另一個問題。 我們選擇了我認為的最佳點:隨處可見的契約(前置條件、後置條件、不變量、斷言等)、快速失敗作為默認策略、罕見動態失敗的例外(解析、I/O 等),並且僅在您絕對需要豐富的異常時才鍵入異常。 所有這些都以一流的方式集成到類型系統中,以便您獲得使其安全可靠所需的所有適當的子類型化行為。

6)現代框架。 這是一個包羅萬象的存儲桶,涵蓋諸如異步 LINQ、改進的枚舉器支持,在性能上與 C++ 迭代器競爭,並且不需要雙接口調度來提取元素等。老實說,這是我們擁有的領域最大的“設計但尚未實現的特性”列表,包括 void-as-a-a-1st-class-type、非空類型、特徵、第一類效果類型等。 我希望我們在 1 年中期的檢查站中擁有其中的一些,但不是全部。

從鏈接中閱讀更多信息 点击這裡.

有關主題的更多資訊: c#, 開發, 微軟