TechCraft – エンジニアのためのスキルアップメモ

エンジニアのスキルアップを少しでも加速する技術ブログ

Carbon言語入門 第2回

Carbon言語入門 第2回:基本構文と制御構造

はじめに

techcraft.hatenablog.com

前回の記事では、Carbon言語をセットアップし、簡単な「Hello, World!」プログラムを実行する方法を紹介しました。本記事では、Carbonの基本的な構文や制御構造(条件分岐、ループ)について詳しく解説します。C++と比較しながら、その特徴や違いを理解していきましょう。


1. 変数とデータ型

Carbonでは、変数を定義する際にvarまたはletを使用します。

  • var:変更可能な変数
  • let:変更不可な定数

変数の宣言と代入

fn Main() -> i32 {
    var mutable_var: i32 = 10;
    let immutable_var: i32 = 20;

    mutable_var = 30; // OK
    // immutable_var = 40; // エラー: immutable_varは変更不可

    return 0;
}

ポイント - var を使った変数は値の変更が可能 - let を使った変数は値を変更できない(定数扱い) - 型推論も可能(i32を省略可)


2. 制御構造

Carbonには、一般的な条件分岐やループ構造が用意されています。

2.1 条件分岐(if, else)

fn Main() -> i32 {
    let x: i32 = 10;

    if x > 5 {
        Print("xは5より大きい");
    } else if x == 5 {
        Print("xは5と等しい");
    } else {
        Print("xは5より小さい");
    }

    return 0;
}

特徴 - ifの条件式は()不要 - else ifも使用可能 - Print()を使って標準出力へ表示


2.2 ループ(for, while)

for ループ

Carbonのforループは、C++と同様に動作します。

fn Main() -> i32 {
    for (var i: i32 = 0; i < 5; i += 1) {
        Print("ループ回数: {i}");
    }
    return 0;
}

特徴 - C++スタイルのfor文をサポート - var i: i32でカウンタ変数を宣言 - i += 1でカウンタを増加

while ループ

fn Main() -> i32 {
    var count: i32 = 0;
    
    while count < 3 {
        Print("count: {count}");
        count += 1;
    }

    return 0;
}

特徴 - whileの条件式は()不要 - ループ内で変数を更新


3. 関数の定義と呼び出し

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

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

fn Main() -> i32 {
    let result: i32 = Add(10, 20);
    Print("計算結果: {result}");
    return 0;
}

特徴 - fn キーワードで関数を定義 - 引数と戻り値の型を指定(a: i32, b: i32 -> i32) - return キーワードで値を返す


4. まとめ

本記事では、Carbon言語の基本的な構文として、変数、制御構造(条件分岐、ループ)、関数の定義方法について解説しました。C++に似た書き方をしつつも、モダンな構文が取り入れられており、可読性と安全性が向上していることがわかります。

次回は、Carbonの「構造体(struct)」や「メモリ管理」に関する内容を掘り下げていきます。


参考文献