Zig (プログラミング言語)
この項目「Zig (プログラミング言語)」は翻訳されたばかりのものです。不自然あるいは曖昧な表現などが含まれる可能性があり、このままでは読みづらいかもしれません。(原文:英語版 "Zig (programming language)" 2020年12月27日 (日) 23:57 (UTC)) 修正、加筆に協力し、現在の表現をより自然な表現にして下さる方を求めています。ノートページや履歴も参照してください。(2021年1月) |
![]() Zigのロゴ | |
パラダイム | |
---|---|
登場時期 | |
開発者 |
アンドリュー・ケリー ![]() |
最新リリース | 0.10.1 / 2023年1月19日[1] |
型付け | |
影響を受けた言語 |
C言語、C++、Go、Rust、JavaScript ![]() |
プラットフォーム | クロスプラットフォーム |
ライセンス |
MIT License ![]() |
ウェブサイト | |
拡張子 |
zig ![]() |
Zigは、アンドリュー・ケリーによって設計された命令型の汎用の静的型付けのコンパイル型システムプログラミング言語である[2][3]。 この言語は「堅牢性、最適性及び保守性」向けに設計されており[4][5]、コンパイル時のジェネリクス、リフレクション、クロスコンパイル及び手動メモリ管理をサポートしている[6]。 この言語の主な目標は、C言語と競合すると同時にこれを改善し[7][8]、Rustなどから着想を得ることである[9]。
Zigにはパックされた構造体[注釈 1]、多倍長整数[10]、複数のポインタ型などの低レベルプログラミングのための多くの機能がある[11]。
リファレンス実装のコンパイラはZig及びC++で記述されており、LLVM[12]をバックエンドとして使用し[13][14]、LLVMがサポートするターゲットの多くをサポートしている[15]。
コンパイラはフリーかつオープンソースで、MITライセンスの条件に基づいて配布されている[14]。
Zigのコンパイラはzig cc
及びzig c++
をそれぞれ使用することによって、Clangと同様にC言語及びC++をコンパイルすることができる[16]。
Nimプログラミング言語はC言語のコンパイラとしてzig cc
を使用することをサポートしている[17]。
コード例[編集]
Hello world[編集]
// zig version 0.9.1
const std = @import("std");
pub fn main() !void {
const stdout = std.io.getStdOut().writer();
try stdout.print("Hello, {s}!\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,
};
}
脚注[編集]
注釈[編集]
- ^ フィールド間のパディングがゼロの構造体のこと。
出典[編集]
- ^ 出典URL: https://ziglang.org/download/#release-0.10.1
- ^ 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日閲覧。
- ^ Elizabeth, Jane (2017年10月19日). “Tired of C? New programming language Zig aims to be more pragmatic and readable”. JAXenter. 2021年1月1日閲覧。
- ^ Yegulalp, Serdar (2016年8月29日). “New challenger joins Rust to topple C language”. InfoWorld. 2021年1月1日閲覧。
- ^ IT之家 (2020年7月12日). “想替代 C 的 Zig 语言成立了基金会” (中国語). 新浪数码. 2021年1月1日閲覧。
- ^ “The Zig Programming Language”. ziglang.org. 2021年1月1日閲覧。
- ^ “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日閲覧。
- ^ “Zig competes with C instead of depending on it”. ziglang.org. 2021年1月1日閲覧。
- ^ Kelley, Andrew (2018年1月24日). “Unsafe Zig is Safer than Unsafe Rust”. andrewkelley.me. 2021年1月1日閲覧。
- ^ Anderson, Tim (2020年4月24日). “Keen to go _ExtInt? LLVM Clang compiler adds support for custom width integers”. The Register. 2021年1月1日閲覧。
- ^ “Documentation - The Zig Programming Language”. ziglang.org. 2021年1月1日閲覧。
- ^ 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日閲覧。
- ^ Bill, Ginger (2019年5月13日). “A Reply to The Road to Zig 1.0”. gingerBill. 2021年1月1日閲覧。
- ^ a b “ziglang/zig”. GitHub. 2021年1月1日閲覧。
- ^ “Tier System”. ziglang.org. 2021年1月1日閲覧。
- ^ “zig cc”. ziglang.org (2020年4月13日). 2021年1月1日閲覧。
- ^ “Add support for `zig cc` as C compiler. #13757”. GitHub. 2021年1月1日閲覧。