English

はじめに - Cm言語とは

難易度: 🟢 初級
所要時間: 10分

📚 この章で学ぶこと


Cm言語とは

Cm言語は、C++風の構文Rust風の型安全性を組み合わせた、モダンなシステムプログラミング言語です。

主な特徴

  1. C++風の構文
    • セミコロンで文を終了
    • ブレース {} でブロックを定義
    • 明示的な型宣言
  2. Rust風のトレイトシステム
    • interface/impl による型の振る舞い定義
    • ジェネリクスと型制約
    • withキーワードによる自動実装
  3. LLVM/WASMバックエンド
    • ネイティブコード生成(LLVM)
    • WebAssembly出力(WASM)
    • 高度な最適化
  4. 強力な型推論
    • ジェネリック関数の型推論
    • 配列メソッドでの型推論
    • for-in構文での型推論
  5. メモリ安全性
    • ポインタの明示的な使用
    • 配列境界チェック(v0.11.0以降)
    • 所有権システム(移動セマンティクス、借用チェック)

設計思想

1. 明示的であること

暗黙的な動作を避け、コードの意図を明確にします。

// ✓ 明示的なオーバーロード宣言
overload int add(int a, int b) { return a + b; }
overload double add(double a, double b) { return a + b; }

// ✓ 明示的な型制約
<T: Ord> T max(T a, T b) { return a > b ? a : b; }

2. 安全であること

コンパイル時にできるだけ多くのエラーを検出します。

// コンパイルエラー:型制約を満たさない
<T: Ord> T min(T a, T b) { return a < b ? a : b; }

// Point p1, p2;
// Point m = min(p1, p2);  // エラー:PointはOrdを実装していない

3. 実用的であること

C/C++との相互運用性を重視します。

// C互換のメモリレイアウト
    double value;
}

// C++風のポインタ
*p = 100;

4. モダンであること

最新の言語機能を取り入れます。

// パターンマッチング
match (status) {
    Status::Ok => println("Success"),
    Status::Error => println("Failed"),
    _ => println("Unknown"),
}

// 自動トレイト実装
}

他の言語との比較

Cm vs C++

特徴 C++ Cm
構文 C++風 C++風
トレイト コンセプト(C++20) interface/impl
ジェネリクス テンプレート ジェネリクス
メモリ管理 手動 手動+所有権システム
match式 なし あり
with自動実装 なし あり

Cm vs Rust

特徴 Rust Cm
構文 Rust風 C++風
トレイト trait/impl interface/impl
所有権 あり 実装済み(移動セマンティクス、借用チェック)
セミコロン 省略可 必須
derive #[derive(...)] with ...

Cm vs Go

特徴 Go Cm
型システム シンプル 高度(ジェネリクス)
インターフェース 暗黙実装 明示的実装
ジェネリクス Go 1.18+ v0.6.0+
パターンマッチ なし あり

Cmを選ぶ理由

C++プログラマにとって

Rustプログラマにとって

システムプログラミング初心者にとって


関連リンク


次の章: 環境構築

最終更新: 2026-02-08