取代C++?谷歌開源編程語言Carbon,網(wǎng)友評價太真實了
在編程語言的世界中,C++的地位舉足輕重。在2022年5月的TIOBE編程語言排行榜中,C++位列第四。同樣地,谷歌內(nèi)部也在廣泛使用C++。
圖源:https://hellogithub.com/report/tiobe/
不過近日,在加拿大多倫多舉辦的 CPP North C++大會上,谷歌工程師 Chandler Carruth宣布谷歌內(nèi)部正在打造一種新的編程語言——Carbon,并將它作為C++的繼任者。目前,Carbon編程語言正處于實驗階段。
正如微軟創(chuàng)建TypeScript來更新JavaScript、JetBrains創(chuàng)建Kotlin來彌補(bǔ)Java的缺點,Carbon將作為替代C++的語言,為開發(fā)人員提供一種全新的語言來解決內(nèi)存安全和泛型等現(xiàn)代開發(fā)概念。
在談到為何要替代 C++ 時,Carruth表示,C++作為長期以來構(gòu)建性能關(guān)鍵應(yīng)用的首選語言,它自身的很多問題困擾著現(xiàn)代開發(fā)人員。C++積累了數(shù)十年的技術(shù)負(fù)債,帶有的很多過時實踐都是其前身C語言的一部分。C++ 的維護(hù)者優(yōu)先考慮向后兼容,以便繼續(xù)支持廣泛使用的項目,例如Linux及其包管理生態(tài)系統(tǒng)等。
此外,C++語言的發(fā)展也受到了官僚委員會程序的阻礙,該程序以標(biāo)準(zhǔn)化而非設(shè)計為導(dǎo)向。這種做法導(dǎo)致很難添加新功能。C++在很大程度上處于一個隔絕的開發(fā)過程,其中可能經(jīng)過數(shù)年才會做出一些重要決定。
因此,Carruth希望通過更開放的社區(qū)主導(dǎo)環(huán)境來構(gòu)建Carbon語言,并已開源。目前,該項目已在GitHub上獲得了16.5k的Stars。
GitHub開源地址:https://github.com/carbon-language/carbon-lang
?Carbon的設(shè)計理念和特性
谷歌希望在2022年年底推出Carbon的核心工作版本,即v0.1。Carbon將建立在現(xiàn)代編程原則的基礎(chǔ)上,包含一個泛型系統(tǒng),使開發(fā)人員不再需要為每個實例檢查和再核對代碼。
C++ 語言中亟需的一個特性是內(nèi)存安全。內(nèi)存訪問 bug是安全漏洞的罪魁禍?zhǔn)字?,Carbon 設(shè)計人員將探索追蹤未初始化狀態(tài)的更好方法、設(shè)計支持動態(tài)邊界檢查的 API和慣用語,并構(gòu)建全面的默認(rèn)debug構(gòu)建模式。隨著時間的推移,設(shè)計人員還計劃構(gòu)建一個安全的Carbon子集。
Carbon語言將支持以下功能:
- 性能關(guān)鍵型軟件;
- 軟件和語言演變;
- 易于閱讀、理解和編寫的代碼;
- 實用的安全和測試機(jī)制;
- 快速且可擴(kuò)展的開發(fā);
- 現(xiàn)代操作系統(tǒng)平臺、硬件架構(gòu)和環(huán)境;
- 與現(xiàn)有C++代碼的互操作性和遷移。
同時,Carbon語言的亮點包括如下:
- Introducer關(guān)鍵字和簡單語法;
- 函數(shù)輸入?yún)?shù)為只讀值;
- 指針提供間接訪問和變體;
- 使用表達(dá)式命名類型;
- 軟件包為root命名空間;
- 通過包名導(dǎo)入APIs;
- 用顯式對象參數(shù)來聲明方法;
- 單繼承、默認(rèn)使用最終類;
- 強(qiáng)大且經(jīng)過定義檢查的泛型;
- 類型顯式地實現(xiàn)接口。
Carbon設(shè)計團(tuán)隊將著手創(chuàng)建一個內(nèi)置包管理器,這在C++中非常欠缺。此外,團(tuán)隊還計劃編寫一些將C++代碼遷移到Carbon代碼的工具。下圖左為C++代碼,右為Carbon編寫的相同函數(shù):
為何不大力發(fā)展Rust語言呢?
有人或許會問了:最近有專門為解決內(nèi)存安全性能應(yīng)用的需求而構(gòu)建的Rust語言,為何不直接使用它呢?Carruth對此表示,如果Rust適合你,就繼續(xù)使用。但是,將C++的生態(tài)系統(tǒng)轉(zhuǎn)移到Rust非常困難。
相比之下,Carbon是建立在已有C++生態(tài)系統(tǒng)之上,適合那些已經(jīng)擁有大量C++代碼庫的開發(fā)人員,這些庫很難轉(zhuǎn)換到Rust。
Carbon有望成為C++的「繼任者」
計算機(jī)編程語言是程序設(shè)計最重要的工具,每個程序員都有自己熟悉的一套編程語言。
此前,谷歌也開源了編程語言。例如2006年谷歌開源Go語言,其目標(biāo)是兼具Python 等動態(tài)語言的開發(fā)速度和C/C++等編譯型語言的性能與安全性,短短幾年,Go成為最熱門語言之一,許多大公司用Go來開發(fā)自己的產(chǎn)品。與此同時,最初旨在替代 JavaScript 的 Dart 編程語言直到 Flutter 發(fā)布才成為主流。
這次谷歌內(nèi)部新打造的編程語言Carbon,還處于實驗性階段,大家的評價如何呢?
有網(wǎng)友表示:C++對于特定的任務(wù)是好的,但現(xiàn)在看起來就像一個怪物,而現(xiàn)在Carbon看起來就很不錯。
更有人表示Carbon有望成為C++的「繼任者」:
不過也有人認(rèn)為:Carbon底層是用C++實現(xiàn)的,一個用C++實現(xiàn)的編程語言,想要替代C++,說服力不夠。不過預(yù)測又會有一批新程序員上岸Carbon。
還有網(wǎng)友想讓Carbon與JavaScript進(jìn)行一番比較,看看哪個更好:?
幾年之后,Carbon會不會又成為一種熱門編程語言呢?