0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

新しい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との違いがまだ弱い」
  • 「シンプルさは魅力」

例:

まだ1.0以前ということもあり、評価は固まっていない。


向いていそうな用途

現時点の印象では:

  • 小さく高速なツール
  • システム寄りユーティリティ
  • CLI
  • 小規模サービス
  • 組み込み寄り用途

など。

特に

挙動を把握できる範囲で書きたい

という志向には合う可能性がある。


まとめ

C3はRustの代替というより

Cの現代的整理

に近い。

Zigほど低レイヤ志向でもなく、Rustほど安全性に振り切ってもいない。

その結果、

  • 小さい
  • 速い
  • 学習コストが低い
  • 振る舞いを把握しやすい

という特徴を持つ言語になりつつある。

まだ評価は定まっていないが、

Cの書きづらさに抵抗があるが、低レイヤ制御はしたい

という層には一定の需要がありそうに見える。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?