C2x將成為C語言的下一個ISO標準

weixin_33766168發表於2018-11-26

預計將於2022年完成的C2x標準在C委員會的推動下一直在演化。InfoQ採訪了Jens Gustedt,他正在委員會內部推進新標準,他還是即將出版的新書“Modern C”的作者。

Gustedt最近總結了委員會到目前為止的工作成果,釋出了新標準的第一份工作草案。除了當前的C17標準相關工作,其他工作主要針對錯誤修復,C2x將包含旨在改進語言本身的規範性變更。

InfoQ:即將推出的C標準的主要目標是什麼?什麼將推動C的發展?

Jens Gustedt:新C標準的制定主要是為了完善一些目標,詳見章程。關鍵點是這個標準旨在描述現有的實踐,而不是發明本身。只要有可能,發明應該在現有的C編譯器中進行,或者來自其他程式語言(事實上主要是C++)。也就是說,還有很多工作將清理現有的特性,追求語義上的模糊性,並新增可能有助於日常編碼的小特性。

InfoQ:語言方面的變化有哪些是值得我們期待的?你能否提供一些你認為重要的語言新功能示例?

Gustedt:在語言和庫級別,程式設計師直接可見的部分目前還沒有太多定論。我的期望是我們將看到一些整合到C中的C++特性,例如屬性、以某種形式編譯所有資料型別的時間常量,以及初始化型別(也就是C++的auto feature)。此外,還有一個C++的協調計劃,用於新的呼叫約定,它可以取代我們從一開始就一直在使用的錯誤碼返回約定。有幾個人確保與C++委員會保持緊密合作,他們在這些問題上處理得很好。

但是C標準還有另一個重要的作用,因為它基本上為我們的計算機架構和其他程式語言構建設定了機器模型。C標準將其稱為“抽象狀態機”。作為一個重要的特性,我們已經投票將最新的IEEE浮點規範整合到C標準中。我們還組建了一個工作組來修改“記憶體模型”,事關程式設計師可能會或者可能不會直接與計算機記憶體中資料裸表示互動、這可能將如何影響一些可能的優化以及這種位元組和位的調整將如何變得安全可靠。這項工作遵循的是Peter Sewell(等人)關於“指標來源”的論文,我們希望我們最終得到的記憶體模型可以廣泛適用於C系統軟體和應用程式的多樣性。

InfoQ:最近,原生語言(與解釋型或JVM語言相對而言)一直受到極大的關注,包括Rust、Swift、Dart、Go和endash。C++也正在穩健發展當中。你能簡單地描述一下你認為C特別擅長的用途或應用領域嗎?

Gustedt:C最大的優點是效率、可移植性和穩定性。只要這些是軟體開發當中存在的主要問題,那麼C就應該被視為首選語言。

效率:在這裡,效率可能是指一些非常不一樣的東西:能量和記憶體效率(適用於小型或行動式裝置、衛星),執行時效率(適用於中型或大型計算密集型計算)或速度(適用於科學視覺化、遊戲或網路通訊 )。C在這些領域的效率是無與倫比的,其他程式語言傾向於引入大量的記憶體間接、動態行為,從而遏制了效率。

可移植性:C的抽象狀態機旨在可移植到任何計算裝置上。這個概念帶來了很大的好處:通常為新CPU開發的第一批軟體元件就是C編譯器。因此,用C編寫的程式碼,特別是作業系統和其他系統軟體,可以進行快速的移植。大量的軟體專案從中受益,Linux發行版是數千個軟體包的集合,這些軟體包可以很容易地移植到新架構上,並與現有主流平臺的發展保持同步。

穩定性:C委員會致力於保證使用者程式碼庫的穩定性。你現在編寫的C程式碼仍然可以在20年後仍然可以編譯和執行。80年代或90年代寫的程式碼今天仍然可以使用。此外,C還提供了一系列有限的特性,這些特性在工程學院的研究生階段就應該掌握。因此,在數年甚至數十年後仍然可以保持可維護性。在C語言中,“遺留”有著不同的含義,好的C程式碼是真正的資產,而不是負擔。

Gustedt在法國國家電腦科學與控制研究所(INRIA)和ICube實驗室工作,領導ICPS(並行和科學計算)研究團隊。

檢視英文原文C2x Will Be the Next ISO Standard for the C Language

相關文章