C++の後継目指すプログラミング言語「Carbon Language」、Googleの技術者が実験的公開。C++は技術的負債で改良が困難と
今回は「C++の後継目指すプログラミング言語「Carbon Language」、Googleの技術者が実験的公開。C++は技術的負債で改良が困難と」についてご紹介します。
関連ワード (一貫、完成、関心等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
Googleの技術者Chandler Carruth氏らは、C++の後継を目指す実験的なプログラミング言語として「Carbon Language」(以下、Carbon)をGitHubで公開しました(Chandler Carruth氏のツイート)。
GitHubのドキュメントでは、C++が性能を重視するソフトウェア開発において主流のプログラミング言語である一方、言語そのものにおいて数十年にわたる技術的負債が蓄積されていることなどにより段階的に改良していくことが極めて困難になっていると指摘。
一方で、GoやSwift、Kotlin、Rustを始めとする優れた開発者体験を提供する多数のモダンな言語は、C++の代わりに採用する、あるいはC++の開発から移行するには、プログラミング言語の違いや性能のオーバーヘッドなど障壁が多すぎるといった課題があるとも指摘しています。
そこでC++の段階的な改善ではなく、C++との相互運用性を重視し既存のC++コードベースや開発者の大規模な導入や移行を想定した上で、最新のジェネリクスシステム、モジュール式のコード構成、一貫したシンプルな構文といった堅実な言語基盤から再設計したC++の後継言語として開発しているのがCarbonとのことです。
Carruth氏らはまた、次のような例を示しています。
JavaScript → TypeScript
Java → Kotlin
C++ → Carbon
右辺にあるTypeScriptやKotlinはいずれも、左辺にあるJavaScriptやJavaの直接の後継というより進化形 のように見なされています。CarbonもC++に対する同様の位置づけであることを示したいのでしょう。
Carbonの要件として次のようなことが想定されているとのこと。
- C++に匹敵するパフォーマンス
- C++とのシームレスな双方向の相互運用性。既存のC++スタックのどのライブラリでも、他を移植することなくCarbonを採用することができること
- C++の開発者にとって、適度な親しみやすさと穏やかな学習曲線
- 既存のソフトウェアの設計やアーキテクチャに対応する表現力
- 大規模な移行が可能で、慣用的な C++ コードに対してはある程度のソース間変換を行える
下記がサンプルとして示されたC++とCarbonの比較コード。
C++のサンプルコード。
同じ内容をCarbonで記述したサンプルコード。
Carbonは現在、実験的なプロジェクトとして開発が進められており、後継言語としての基準を満たせるか、C++業界やコミュニティの中で関心を集めることができるかどうかを確認しつつ、C++コミュニティからより幅広いフィードバックと参加を得ること、バージョン0.1としての設計を完成させることなどに注力しているとのことです。