Zig (プログラミング言語)

出典: フリー百科事典『ウィキペディア(Wikipedia)』

出典: フリー百科事典『ウィキペディア(Wikipedia)』
検索に移動
Zig
Zig
Zigのロゴ
パラダイム
登場時期
  • 2015年 ウィキデータを編集
開発者 アンドリュー・ケリー ウィキデータを編集
最新リリース 0.7.1 / 2020年12月13日[1][2]
型付け
影響を受けた言語 C言語C++GoRustJavaScript ウィキデータを編集
プラットフォーム クロスプラットフォーム
ライセンス MIT License ウィキデータを編集
ウェブサイト
拡張子 zig ウィキデータを編集
テンプレートを表示

Zigは、アンドリュー・ケリーによって設計された命令型汎用静的型付けコンパイル型システムプログラミング言語である[3][4]。 この言語は「堅牢性、最適性及び保守性」向けに設計されており[5][6]コンパイル時ジェネリクスリフレクションクロスコンパイル及び手動メモリ管理英語版をサポートしている[7]。 この言語の主な目標は、C言語と競合すると同時にこれを改善し[8][9]Rustなどから着想を得ることである[10]

Zigにはパックされた構造体[注釈 1]、多倍長整数[11]、複数のポインタ型などの低レベルプログラミングのための多くの機能がある[12]

リファレンス実装コンパイラはZig及びC++で記述されており、LLVM[13]をバックエンドとして使用し[14][15]、LLVMがサポートするターゲットの多くをサポートしている[16]。 コンパイラはフリーかつオープンソースで、MITライセンスの条件に基づいて配布されている[15]。 Zigのコンパイラはzig cc及びzig c++をそれぞれ使用することによって、Clangと同様にC言語及びC++をコンパイルすることができる[17]Nimプログラミング言語はC言語のコンパイラとしてzig ccを使用することをサポートしている[18]

コード例[編集]

Hello world[編集]

// zig version 0.7.1
const std = @import("std");

pub fn main() !void {
    const stdout = std.io.getStdOut().writer();
    try stdout.print("Hello, {}!\n", .{"world"});
}

ジェネリック連結リスト[編集]

fn LinkedList(comptime T: type) type {
    return struct {
        pub const Node = struct {
            prev: ?*Node,
            next: ?*Node,
            data: T,
        };

        first: ?*Node,
        last:  ?*Node,
        len:   usize,
    };
}

pub fn main() void {
    var node = LinkedList(i32).Node {
        .prev = null,
        .next = null,
        .data = 1234,
    };

    var list = LinkedList(i32) {
        .first = &node,
        .last = &node,
        .len = 1,
    };
}

脚注[編集]

注釈[編集]

  1. ^ フィールド間のパディングがゼロの構造体のこと。

出典[編集]

  1. ^ 出典URL: https://ziglang.org/download/0.7.1/release-notes.html
  2. ^ 出典URL: https://github.com/ziglang/zig/releases/tag/0.7.1
  3. ^ Motroc, Gabriela (2017年10月31日). ““Zig has all the elegant simplicity of C, minus all the ways to shoot yourself in the foot””. JAXenter. 2021年1月1日閲覧。
  4. ^ Elizabeth, Jane (2017年10月19日). “Tired of C? New programming language Zig aims to be more pragmatic and readable”. JAXenter. 2021年1月1日閲覧。
  5. ^ Yegulalp, Serdar (2016年8月29日). “New challenger joins Rust to topple C language”. InfoWorld. 2021年1月1日閲覧。
  6. ^ IT之家 (2020年7月12日). “想替代 C 的 Zig 语言成立了基金会” (中国語). 新浪数码. 2021年1月1日閲覧。
  7. ^ The Zig Programming Language”. ziglang.org. 2021年1月1日閲覧。
  8. ^ Mozilla’s Observatory, the Zig programming language, and uSens’ VR/AR SDK—SD Times news digest: Aug. 29, 2016”. SD Times (2016年8月29日). 2021年1月1日閲覧。
  9. ^ Zig competes with C instead of depending on it”. ziglang.org. 2021年1月1日閲覧。
  10. ^ Kelley, Andrew (2018年1月24日). “Unsafe Zig is Safer than Unsafe Rust”. andrewkelley.me. 2021年1月1日閲覧。
  11. ^ Anderson, Tim (2020年4月24日). “Keen to go _ExtInt? LLVM Clang compiler adds support for custom width integers”. The Register. 2021年1月1日閲覧。
  12. ^ Documentation - The Zig Programming Language”. ziglang.org. 2021年1月1日閲覧。
  13. ^ Lewkowicz, Jakub (2020年4月14日). “SD Times news digest: C++20 concepts in Visual Studio 2010 version 16.3, Bootstrap to drop IE support, and Zig 0.60 released”. SD Times. 2021年1月1日閲覧。
  14. ^ Bill, Ginger (2019年5月13日). “A Reply to The Road to Zig 1.0”. gingerBill. 2021年1月1日閲覧。
  15. ^ a b ziglang/zig”. GitHub. 2021年1月1日閲覧。
  16. ^ Tier System”. ziglang.org. 2021年1月1日閲覧。
  17. ^ zig cc”. ziglang.org (2020年4月13日). 2021年1月1日閲覧。
  18. ^ Add support for `zig cc` as C compiler. #13757”. GitHub. 2021年1月1日閲覧。

関連項目[編集]

ウィキポータル 関連ポータルのリンク
  • ウィキポータル コンピュータ
  • ウィキポータル FLOSS