Zig

概要

基本的な方針

  • プログラムの振る舞いをすべて記述
    • 隠れた制御フローがない(プログラムは見た目の通りに 動く)
    • 手動のメモリ管理(メモリの扱いを明示的に記述)
  • 性能を重視しつつ,安全性も重視する
    • 性能と安全性は同時には両立できないため,ビルドオプションにより,性能を取るか安全性を取るかを選択(ReleaseSafe?ReleaseFast?/ReleaseSmall?
    • ただし,メモリ安全な言語ではない
  • シンプルな文法(小さい言語仕様)
    • ただし,ビルトイン関数と標準ライブラリは別(ビルトイン関数は100個くらいある.標準ライブラリはそれなりの規模.これは仕方がない)
  • C言語との共存を容易に

Zig言語の重要な特徴(設計方針)

  • コンパイル時のコード実行(comptime)
    • 最適化と合わせて,プリプロセッサが不要に
  • 安全性の向上
    • ポインタの種類分け
    • オプショナル型(NULLポインタの代替)
    • 安全なunion
  • 記述性の向上
    • 新しいエラー処理のアプローチ
    • defer文,ラベル付きのbreak文とcontinue文(goto-less)
    • ジェネリックなデータ構造と関数
    • コンパイル時のリフレクション(メタプログラミング)
    • 非同期関数,並行性のサポート(☆未調査)
  • 単体テスト記述の統合
    • ビルドシステム(Makefileの代替)をZig自身で記述できる

安全性

  • How safe is zig?
    • zigの空間メモリ安全性はRustとほぼ同等であり、時間メモリ安全性とデータレース安全性はcとほぼ同等であると言える

習得

  • 公式サイトの「Getting Started」の流れに沿って学んでから、Zig の使用に必要なことの大部分をカバーしているLearnセクションに移ることです。
  • Zig に関するトークに興味があれば、Zig SHOWTIME をチェック

他言語との比較

Rustとの比較

環境構築

macOS

Bun

組み込み


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-02-05 (日) 18:33:47 (440d)