Google推出編程語言Carbon,旨在取代C++,網(wǎng)友:C++無法取代
2022 年 7 月 19,Google 首席軟件工程師 Chandler Carruth 在多倫多舉行的 Cpp North 大會上發(fā)布了 Carbon。
Carruth說,盡管很多人可能認(rèn)為 Rust 是 C++ 的繼承者,但它缺乏 Carbon 提供的“雙向互操作性”水平。如果 Rust 今天適合你,你應(yīng)該使用它,但是將 C++ 生態(tài)系統(tǒng)遷移到 Rust 將非常困難。Carbon 目標(biāo)是與現(xiàn)有的 C++ 代碼完全互操作,并且讓你從 C++ 到 Carbon 的過渡盡可能容易。
Carbon 是 Google 內(nèi)部構(gòu)建的最新編程語言,是一個仍處于實驗階段的開源項目,該項目的代碼公開托管在 GitHub 上。
當(dāng)產(chǎn)品出現(xiàn)問題時,最簡單、最快的解決方法就是逐步改進(jìn)現(xiàn)有產(chǎn)品,但為什么谷歌選擇開始使用一種全新的語言呢?
C++ 是 C 語言的繼承者,無疑是編程語言里最重要的語言之一。C++ 為 Python 機(jī)器學(xué)習(xí)、JavaScript 庫、游戲開發(fā)和現(xiàn)代編程語言中使用的許多其他工具提供支持。
C++ 也是較早的面向?qū)ο缶幊陶Z言之一,具有適應(yīng)性強(qiáng)的設(shè)計、多功能性和廣泛的兼容性。C++ 啟發(fā)了 Java 等更新的語言,使該語言可用于開發(fā)游戲、醫(yī)療設(shè)備、人工智能和控制系統(tǒng)以及許多其他應(yīng)用程序。
但是,C++ 的問題同樣很多:
- 跨各種功能的累積技術(shù)缺陷(例如:整數(shù)提升規(guī)則)。與 C 的向后兼容性使得修復(fù)技術(shù)缺陷變得更加困難,并使代碼更改難以實施。
- 向 C++ 添加新功能的演進(jìn)過程非常困難,需要面對語言背后的嚴(yán)格治理以及可能長達(dá)數(shù)年的漫長審批過程。
所以 C++ 不能滿足谷歌的的一些要求,比如性能要求、軟件和語言的演變、易于理解和編寫、快速和可擴(kuò)展的開發(fā)等等。但用C++解決這些問題實在是太難了,或者說太慢了。但C++對于谷歌來說非常重要,據(jù)說谷歌的產(chǎn)品服務(wù)中有超過20億行的C++代碼。
所以谷歌只能采用另外一種方案,開發(fā)一種新的語言,可以與C++實現(xiàn)雙向互操作。類似于創(chuàng)建 TypeScript 以彌補(bǔ) Javascript 或 Kotlin for Java 的缺點(diǎn)的方式。經(jīng)過谷歌工程師對多語言的深入研究和評估,引入了Carbon編程語言。
提到C++ 的繼承者,很多人認(rèn)為Rust是一個不錯的選擇,目前來說Rust 是一種更可行的語言,甚至 Carbon 本身的創(chuàng)造者也承認(rèn)這一點(diǎn)。但它不具備 Java 和 Kotlin 等語言的“雙向互操作性”,因此難以穩(wěn)定遷移,這不符合谷歌的初衷。
Carruth闡述了Carbon的目標(biāo)和宗旨,創(chuàng)建性能關(guān)鍵型軟件,同時支持軟件和語言的發(fā)展。另一個核心目標(biāo)是使代碼易于閱讀、理解和編寫。這可以為現(xiàn)代操作系統(tǒng)平臺、硬件架構(gòu)和環(huán)境實現(xiàn)快速且可擴(kuò)展的開發(fā)。同樣重要的是,carbon 還支持與現(xiàn)有 C++ 代碼的互操作性和遷移。Carbon使用開源構(gòu)建,用戶可以根據(jù)設(shè)定的目標(biāo)和優(yōu)先級為程序做出貢獻(xiàn)。
對于谷歌推出的新語言Carbon,網(wǎng)友也是眾說紛紜。有人認(rèn)為C++非常健壯,堅不可摧,是無法取代的基石。有人認(rèn)為推出新語言只是一種作秀,對開發(fā)軟件去起不到什么作用。也有人認(rèn)為,Carbon的項目非常必要,因為C++在一些重要領(lǐng)域發(fā)展滯后,無法解決。Carbon的互操作性讓他對這個項目非常期待。
距離Carbon發(fā)布已過去半年時間了,你用過這門新的語言嗎?你的體驗如何?