新しいC後継が出たらしい
メモリ安全の欲求からCの後継が近年、たくさんでてきている(Go, Rust, Zig)。最近C3.0という言語が出てきたらしい。
今回はC3.0の手触りと、今後の展望を考えを書いていく。
手触り
windowsでは、公式からbinaryを取得して、展開させ、環境変数にPathを追加して環境構築は完了。チュートリアルを見ながら以下のようなのを書いてみた。
module example;
import std::io;
import std::math;
fn void main() {
io::printfn("Hello, World!");
io::printfn("Linux users: %d", math::pow(4.0, 32));
}
// qiitaもまだc3は対応してないのかな??
いいと思った点は、モジュールシステムの採用。ヘッダファイルをなくすことで、敷居が低くなるし、コンパイル時間も短くなりそうだなっておもった。あとは、Cに比べてモダンな文法で手触りはよかった。
特に「小さくて速いが、ブラックボックス化しすぎない」言語を求める層にはフィットする可能性がありそう。また、ポジションとしては Zig よりも Go と競合する場面が多いのではないかと感じた。
C3の特徴(抽象的な整理)
C3は「Cの延長として設計されたモダン言語」であり、大きな方向性としては以下のバランスを取っている:
- Cのシンプルさ・予測可能性は維持
- 現代的なモジュール・メタプログラミング機構を導入
- 複雑化しすぎたC++の方向には進まない
- Rustほど強い安全制約も課さない
つまり
過度な抽象化も、過度な自由も避ける
という設計思想。
型システムの観点では、Rustのように「データの所有関係」まで厳密に扱う方向ではなく、あくまで低レイヤ言語の延長線上にある。
ZigではなくGoと競合しそうに見える理由
Zigはツールチェインやコンパイル時処理など、やや低レイヤ志向が強い。
一方C3は
- 比較的読みやすい構文
- コンパイルの単純さ
- 小規模プログラムへの適性
といった点で
軽量な実用言語
という位置に近い。
この特徴は Go と用途が重なる:
- CLIツール
- 小規模サーバ
- バッチ処理
- 単機能なユーティリティ
Goは生産性が高いがGC前提であり、より低レイヤの制御を望む場合には選択肢が限られる。
その意味でC3は
低レイヤ寄りのGo
のような立ち位置になる可能性がある。
界隈の反応(短め)
現時点では「興味は持たれているが様子見」という段階。
代表的な反応:
- 「Cの整理として筋が良い」
- 「Rustほどの革新性はない」
- 「Zigとの違いがまだ弱い」
- 「シンプルさは魅力」
例:
-
Hacker News: null safetyや差別化に関する議論
https://news.ycombinator.com/item?id=44125966 -
Reddit: Cを好む層向けの代替として注目
https://www.reddit.com/r/programming/comments/1qsexe1/c3_programming_language_079_migrating_away_from/
まだ1.0以前ということもあり、評価は固まっていない。
向いていそうな用途
現時点の印象では:
- 小さく高速なツール
- システム寄りユーティリティ
- CLI
- 小規模サービス
- 組み込み寄り用途
など。
特に
挙動を把握できる範囲で書きたい
という志向には合う可能性がある。
まとめ
C3はRustの代替というより
Cの現代的整理
に近い。
Zigほど低レイヤ志向でもなく、Rustほど安全性に振り切ってもいない。
その結果、
- 小さい
- 速い
- 学習コストが低い
- 振る舞いを把握しやすい
という特徴を持つ言語になりつつある。
まだ評価は定まっていないが、
Cの書きづらさに抵抗があるが、低レイヤ制御はしたい
という層には一定の需要がありそうに見える。