為了取代古老但緩慢的 C++,谷歌研究人員推出了一種全新的“實驗性”開源編程語言,稱為 Carbon。
Carbon 可以作為 C++ 的後繼語言,它為開發人員提供了一個新語言的簡單起點,該語言解決了內存安全和泛型等當代開發概念。
這類似於微軟如何構建 Typescript 來更新 JavaScript 和 Kotlin 來加強 Java 的弱點。
多年來,谷歌開發了許多編程語言,其中一些已經獲得了顯著的名聲和聲望。
例如,Golang(或簡稱 Go)是為了促進服務器和分佈式系統的創建而開發的,隨後被公眾所接受。
飛鏢 編程語言作為 JavaScript 替代品而創建的,直到 Flutter 推出時才廣為人知。
Google 員工 Chandler Carruth 於 19 年 2022 月 XNUMX 日在多倫多舉行的 Cpp North 大會上提出了他對一種名為 Carbon 的新編程語言的想法, 根據康納·霍克斯特拉,誰出席並錄製了幻燈片。
為了設定場景,Carruth 展示了當今幾種最受歡迎的編程語言如何產生後代,使開發人員能夠迅速提高生產力並從當代語言設計中受益。
讓我們從對 Carbon 編程語言的一般介紹開始,包括它的特性、谷歌發明它的目的等等。
Carbon編程語言簡介
19 年 2022 月 XNUMX 日,谷歌宣布 Carbon 是其創建的最新編程語言。 它旨在通過實驗取代 C++。
感謝 仿製藥系統,這消除了對每個實例化的代碼進行仔細檢查的需要,Carbon 將在現代編程概念的基礎上構建。
到年底,設計計劃提供一個基本的操作版本(0.1版)。
內存完整性是 C++ 缺少的一個關鍵元素。 安全漏洞的主要來源之一是內存訪問問題。
開發動態邊界檢查、更好地跟踪未初始化狀態以及徹底的默認調試構建模式都是 Carbon 團隊的目標。 創建者打算隨著時間的推移創建一個安全的 Carbon 子集。
但是,以下是新編程語言的一些關鍵特徵:
- 要命名類型,請使用表達式。
- 具有定義檢查的強泛型
- 類型專門執行接口
- 介紹短語和基本語法
- 指針允許不受限制的訪問和變異。
- 函數輸入參數的值是只讀的。
- 根命名空間是包。
- API 可以使用它們的包名來導入。
- 方法是通過顯式對象參數聲明的。
- 默認情況下,類是最終的; 只有一個繼承
碳的特點
現代和發展中
- Carbon 版本之間的升級非常簡單且基於工具。
- 強大的語言基礎,特別是如果您使用過 C++,並且易於學習
- 更安全的基礎和逐步實現內存安全子集的方法
歡迎開源社區
- 一個努力變得溫暖、接受和邀請的社區
- 其目標和優先事項是明確的和強有力的治理
- 包含編譯器、庫、文檔、工具、包管理等的多合一策略
快速且與 C++ 兼容
- 一起工作 C ++代碼 你已經有了,包括繼承和模板
- 使用 LLVM,性能與 C++ 相當,對位和地址的低級訪問
- 快速、可擴展且與現有 C++ 構建系統兼容的構建
谷歌為什麼要構建 Carbon 編程語言?
性能關鍵型軟件仍然主要使用 C++ 編寫,它擁有龐大且不斷擴展的代碼庫和投資。
然而,如上所述,它在推進和滿足開發人員的需求方面遇到了困難,這主要是由於積累了多年的技術債務。
由於 C++ 積累的技術債務以及演化過程中的困難,逐步改進 C++ 是極其困難的。
解決這些問題的理想方法是從強大的語言基礎開始,例如當代泛型系統、模塊化代碼結構以及一致、直接的語法,而不是直接繼承 C 或 C++ 的傳統。
Go、Swift、Kotlin、Rust 和許多其他當代語言已經提供了出色的開發體驗。 能夠使用這些當前語言之一的開發人員應該這樣做。
不幸的是,這些語言的設計嚴重阻礙了從 C++ 的採用和遷移。 這些障礙包括性能開銷和對軟件慣用設計的修改。
Carbon 並不是逐步改進 C++ 的嘗試; 相反,它是一種後繼語言策略。 它的重點是 C++ 互操作性,以及目前使用 C++ 的開發人員和代碼庫的廣泛接受和遷移。
C++ 替代語言必須具有:
- 與 C++ 相媲美的性能是開發人員的一個關鍵特性。
- C++ 程序員易於管理的學習曲線和熟悉程度
- 可擴展的遷移,包括一些源到源的慣用 C++ 代碼翻譯。
- 對當前軟件的架構和設計具有類似的表現力和支持。
- 與 C++ 的無縫和雙向互操作性,允許任何庫採用 Carbon,而無需移植堆棧的其餘部分。
借助這一策略,Google 增加了已經存在的 C++ 生態系統,並整合了當前的投資、代碼庫和開發社區。
一些語言已經在各種生態系統中採用了這種方法,Carbon 試圖在這些情況下發揮與 C++ 類似的功能:
- Java – 科特林
- JavaScript – 打字稿
- C++——碳
C++ VS 碳代碼
如果您已經是 C++ 開發人員,Carbon 的學習曲線應該很低。 它由一組固定的語法結構組成,這些結構應該聽起來自然並且易於閱讀和理解。
C++ 代碼示例:
此碳代碼對應於:
碳與銹
另一種專門為滿足內存安全性能應用程序的要求而設計的現代語言稱為 Rust。
那麼為什麼不簡單地使用 Rust 呢?
雖然有些人認為 Rust 最初是一個 Mozilla 項目,後來發展為擁有大量公眾追隨者,是 C++ 的繼承者,但 Carruth 懷疑這種平行是否仍然有效。
Rust 無疑是開始一個新項目的絕佳語言,但由於它缺乏 Java 和 Kotlin 等語言的“雙向互操作性”,因此逐漸過渡到它具有挑戰性。
Carruth 在 CPP North 做了一次演講,並鼓勵已經在使用 Rust 的人繼續這樣做。 已經擁有大量 C++ 代碼庫且難以轉換為 Rust 的開發人員應該使用 Carbon。
特別是,Carruth 將 Carbon 稱為“後繼語言”,它構建在現有生態系統之上,在本例中為 C++。
為此,Carbon 旨在與當前的 C++ 代碼完全兼容,即使它對 Rust 有許多目標,例如協助程序員創建“性能關鍵型應用程序”。
此外,它旨在盡可能簡單地從 C++ 遷移到 Carbon。
結論
最後,Carbon 語言的創作者努力關注創作過程。 該項目的代碼可供索取並公開存儲在 Github上,其文化被定義為對普通公民和 IT 部門都具有包容性和開放性。
Carbon 團隊認為,Carbon 需要成為一個由社區驅動的自治項目,而不僅僅是一個由谷歌推動的項目,才能在未來發展。
Caruth 補充說,儘管許多 IT 企業對此感興趣,但這一概念仍處於試驗階段。
發表評論