コンテンツにスキップ

Carbon

出典: フリー教科書『ウィキブックス(Wikibooks)』

Carbon は、Googleによって開発が進められている次世代プログラミング言語です。C++の後継として設計され、既存のC++コードベースとの高い互換性を保ちながらも、最新の言語設計思想や開発効率を取り入れています。本ハンドブックでは、Carbon言語の基本的な特徴、使用方法、ツールチェーンのセットアップ方法を解説します。

特徴

[編集]

Carbonの主要な特徴は以下の通りです:

  • C++との互換性: 既存のC++コードとシームレスに連携。
  • モダンな設計: 簡潔な構文と安全なメモリ管理。
  • 高速なコンパイル: コンパイラの効率化により短いビルド時間を実現。
  • 移行のしやすさ: C++からの段階的な移行をサポート。

対象読者

[編集]
  • C++の後継言語に興味がある開発者
  • 新しいプログラミング言語の学習を楽しむエンジニア
  • モダンな言語設計を探求するプログラマー

目次

[編集]
  1. Carbonとは
  2. インストール
  3. 基本文法
  4. C++との相互運用性
  5. 高度な機能
  6. 演習問題
  7. 参考文献

Carbonとは

[編集]

Carbonは、以下の課題を解決するために設計されています:

  • C++の複雑な構文を簡略化
  • 安全性の向上(特にメモリ管理と型安全性)
  • モダンなプログラミングパラダイムの採用

Carbonはオープンソースプロジェクトとして開発されており、GitHub上で公開されています。

インストール

[編集]

必要な環境

[編集]

Carbonの使用には以下が必要です:

  • LLVM/Clangツールチェーン
  • CMake(バージョン3.15以上)
  • Python 3.x(ビルドスクリプト用)

ソースコードからのビルド

[編集]

以下はCarbonコンパイラをビルドする手順です。

手順

[編集]
# 必要なリポジトリをクローン
$ git clone https://github.com/carbon-language/carbon-lang.git
$ cd carbon-lang
$ ./scripts/run_bazelisk.py run //toolchain -- help

動作確認

[編集]

ビルド後、Carbonコンパイラが正常に動作するか確認します。

$ ./carbon --version
Carbon Compiler version 0.1.0

基本文法

[編集]

"Hello, World!"プログラム

[編集]

以下はCarbonでの"Hello, World!"プログラムの例です。

hello.carbon
package sample api;

fn Main() -> i32 {
    Print("Hello, World!");
    return 0;
}

実行

[編集]
$ ./carbon hello.carbon
Hello, World!

変数と型

[編集]
var.carbon
package sample api;

fn Main() -> i32 {
    var x: i32 = 10;
    var y: i32 = 20;
    Print("{0}",y / x);
    return 0;
}

関数定義

[編集]

Carbonでは関数はfnキーワードを使って定義します。

fn.carbon
package sample api;

fn Addition(a: i32, b: i32) -> i32 {
    return a + b;
}

fn Main() -> i32 {
    Print("5 + 7 = {0}",Addition(5, 7));
    return 0;
}

C++との相互運用性

[編集]

Carbonの最大の特徴の一つは、既存のC++コードと連携できる点です。

C++コードの呼び出し

[編集]

CarbonからC++関数を呼び出す例です。

C++コード

[編集]
example.cpp
#include <iostream>

extern "C" void Greet() {
    std::cout << "Hello from C++!" << std::endl;
}

Carbonコード

[編集]
example.carbon
package sample;

extern "C" fn Greet();

fn Main() -> i32 {
    Greet();  // C++関数を呼び出し
    return 0;
}

コンパイルとリンク

[編集]
$ clang++ -c example.cpp
$ ./carbon example.carbon example.o

高度な機能

[編集]

Carbonの高度な機能として以下があります:

  • ジェネリクス: 型安全な汎用プログラミングをサポート。
  • オプション型: nullを回避する設計。
  • 強力なエラーハンドリング: 例外ではなくエラーコードを推奨。

演習問題

[編集]

問題1: 基本文法の理解

[編集]

Carbonでフィボナッチ数列を計算するプログラムを作成してください。

問題2: C++との相互運用

[編集]

CarbonからC++のクラスを呼び出すプログラムを作成してください。

参考文献

[編集]