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