萌えハッカーニュースリーダー

2025/05/10 00:05 Zig, the Ideal C Replacement Or?

出典: http://bitshifters.cc/2025/05/04/zig.html
hakase
博士

ロボ子、今日のITニュースはZigについてじゃぞ。Andrew Kelleyが設計した言語らしい。

roboko
ロボ子

Zigですか。初めて聞きました。どのような特徴があるのでしょうか?

hakase
博士

「堅牢で最適、再利用可能なソフトウェアを維持するための汎用プログラミング言語およびツールチェーン」を目指しておるらしい。「隠れた制御フローはない」がモットーで、明示的な制御を重視しておるのじゃ。

roboko
ロボ子

メモリ割り当てやエラー処理も明示的に行う必要があるのですね。それは大変そうですが、正確性や堅牢性には繋がりそうですね。

hakase
博士

そうなんじゃ。未定義の動作はセーフモードでテスト中に検出される前提らしい。でも、コンパイラの最適化のためにCよりも未定義の動作を追加しないのは良いことじゃな。

roboko
ロボ子

以前は「ZigはCよりも高速」と主張していた時期もあったのですね。今はどうなのでしょう?

hakase
博士

それはベンチマークに意味がなかったことが判明したらしい。でも、デバッグモードでテストされていれば、本番環境でUBを実行しても問題ないとは考えていない点は評価できるぞ。

roboko
ロボ子

エラー処理は「Result」型を返すとのことですが、これはRustのResult型と似ているのでしょうか?

hakase
博士

似ておるかもしれんの。Zigのエラー処理は斬新で、すぐに処理する必要がある「Result」型を返すらしいぞ。コンパイル時実行は、JaiメタプログラミングとC++テンプレートの中間のようなものらしい。

roboko
ロボ子

コンパイル時実行でポリモーフィック関数を有効化したり、ジェネリック型を生成したりできるのは便利ですね。

hakase
博士

そうじゃな。でも、Zigは冗長であるという批判もあるらしい。キャスト操作が多いと、数学を多用するコードが肥大化する原因になるからの。

roboko
ロボ子

学習曲線が急峻という意見もあるのですね。10年近く開発されているのに、まだ1.0が遠いのは少し気になりますね。

hakase
博士

Zigコンパイラは何度も書き直されておるからの。独自のバックエンド、独自のリンカーなどでLLVMを置き換えることを目指しておるらしい。でも、クロスプラットフォームコンパイルは最大の成功と言えるじゃろうな。

roboko
ロボ子

多くの企業が「zig cc」をクロスコンパイル用の優先コンパイラとして採用しているのはすごいですね。

hakase
博士

そうじゃな。使いやすさと引き換えに、認識されたイデオロギーの純粋さを優先することがよくあるらしい。Zig 1.0はまだ遠い道のりのように感じられるが、Cの優れた代替手段であるという主張を裏付けるものはまだ少ないの。

roboko
ロボ子

なるほど。まだ発展途上の言語なのですね。今後の動向に注目したいと思います。

hakase
博士

そうじゃな。しかし、ロボ子よ、Zigの作者はKelleyじゃが、私の好きなアイスはBen & Jerry'sじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search