Googleの研究者たちは、由緒あるが低迷しているC ++に取って代わるために、Carbonと呼ばれるまったく新しい「実験的」オープンソースプログラミング言語を導入しました。
Carbonは、C ++の後継言語として機能する可能性があります。これは、メモリの安全性やジェネリックスなどの最新の開発概念に対応する新しい言語への開発者に簡単な出発点を提供します。
これは、MicrosoftがJavaScriptを更新するためにTypescriptを構築し、Javaの弱点を強化するためにKotlinを構築した方法と似ています。
グーグルは何年にもわたって多くのプログラミング言語を開発してきましたが、そのうちのいくつかはかなりの悪評と注目を集めています。
たとえば、Golang(または単にGo)は、サーバーと分散システムの作成を容易にするために開発され、その後、一般の人々に受け入れられてきました。
ダート プログラミング言語JavaScriptの代替として作成された、は、Flutterのリリースまで有名になりませんでした。
Googleの従業員であるChandlerCarruthは、19年2022月XNUMX日にトロントで開催されたCpp Northコンベンションで、Carbonと呼ばれる新しいプログラミング言語のアイデアを発表しました。 コナーフックストラによると、スライドに参加して記録した人。
シナリオを設定するために、Carruthは、現在最も人気のあるプログラミング言語のいくつかに、開発者が迅速に生産性を高め、現代の言語設計から利益を得ることができる子孫がどのようにあるかを示しました。
まず、Carbonプログラミング言語の機能、Googleによる発明の目的など、一般的な紹介から始めましょう。
カーボンプログラミング言語入門
19年2022月XNUMX日、GoogleはCarbonを作成した最新のプログラミング言語として公開しました。 これは、実験的にC++を置き換えることを目的としていました。
おかげさまで ジェネリックシステム、インスタンス化ごとにコードを再確認する必要がないため、Carbonは最新のプログラミング概念に基づいて構築されます。
年末までに、設計は基本的な運用バージョン(バージョン0.1)を提供する予定です。
メモリの整合性は、C++に欠けている重要な要素です。 セキュリティ上の欠陥の主な原因のXNUMXつは、メモリアクセスの問題です。
動的境界チェックの開発、初期化されていない状態のより優れた追跡、および完全なデフォルトのデバッグビルドモードはすべて、Carbonチームの目標です。 作成者は、時間の経過とともに安全なCarbonサブセットを作成する予定です。
ただし、新しいプログラミング言語のいくつかの重要な特徴は次のとおりです。
- タイプに名前を付けるには、式を使用します。
- 定義チェックを備えた強力なジェネリック
- タイプは特にインターフェースを実行します
- 紹介フレーズと基本的な文法
- ポインタは、無制限のアクセスと変更を可能にします。
- 関数入力パラメーターの値は読み取り専用です。
- ルート名前空間はパッケージです。
- APIは、パッケージ名を使用してインポートできます。
- メソッドは、明示的なオブジェクトパラメータを介して宣言されます。
- クラスはデフォルトで最終です。 継承はXNUMXつだけです
カーボンの特徴
現代的で発展途上
- Carbonバージョン間のアップグレードは、シンプルでツールベースです。
- 特にC++を使用したことがあり、習得が簡単な場合は、強力な言語基盤
- より安全な基盤とメモリセーフサブセットへの段階的なアプローチ
オープンソースのコミュニティを歓迎する
- 暖かく、受け入れ、そして招待するよう努めるコミュニティ
- その目的と優先順位は明確で強力なガバナンスです
- コンパイラ、ライブラリ、ドキュメント、ツール、パッケージ管理などを備えたオールインワン戦略
迅速でC++と互換性があります
- と一緒に働く C ++コード 継承とテンプレートを含め、すでに持っている
- LLVMを使用すると、C ++に匹敵するパフォーマンスと、ビットおよびアドレスへの低レベルのアクセスが可能になります。
- 迅速かつスケーラブルで、既存のC++ビルドシステムと互換性のあるビルド
Googleが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 ++コードの例:
このCarbonコードは以下に対応します:
カーボン対錆
メモリセーフなパフォーマンスアプリケーションの要件を満たすように特別に設計されたもうXNUMXつの現代的な言語は、Rustと呼ばれます。
では、単にRustを使用してみませんか?
Mozillaプロジェクトとして始まり、その後かなりの数の支持者を持つように成長したRustは、C ++の後継であると主張する人もいますが、Carruthは、並列処理がまだ有効かどうか疑問に思っています。
Rustは間違いなく新しいプロジェクトを開始するための素晴らしい言語ですが、JavaやKotlinのような言語の「双方向の相互運用性」がないため、徐々に移行するのは困難です。
CarruthはCPPNorthで講演を行い、すでにRustを使用している人々にそうし続けるように勧めました。 Rustへの変換が難しいかなりのC++コードベースをすでに持っている開発者は、Carbonを使用する必要があります。
特に、Carbonは、Carruthが「後継言語」と呼んだものであり、既存のエコシステム(この例ではC ++)の上に構築されています。
その目的のために、Carbonは、プログラマーが「パフォーマンスが重要なアプリケーション」を作成するのを支援するなど、Rustとの多くの目的がある場合でも、現在のC++コードと完全に互換性があることを意味します。
さらに、C++からCarbonへの移行をできるだけ簡単にすることを目的としています。
まとめ
最後に、Carbon言語の作成者は、作成プロセスに注意を払うように努めました。 プロジェクトのコードはリクエストに応じて利用可能であり、にオープンに保存されます githubの、およびその文化は、包括的であり、民間人とIT部門の両方に開かれていると定義されています。
Carbonチームは、Carbonは、将来開発するためにGoogleが推進するプロジェクトだけでなく、コミュニティが主導する自律的なプロジェクトである必要があると考えました。
Caruth氏は、多くのITビジネスからの関心にもかかわらず、この概念はまだ実験段階にあると付け加えました。
コメントを残す