Interested Article - Zig (язык программирования)
- 2021-12-08
- 1
Zig — это императивный , статически типизированный , компилируемый язык программирования общего назначения. Язык был спроектирован для «создания надёжного, оптимального и переиспользуемого ПО» ( англ. maintaining robust, optimal and reusable software ) . Язык поддерживает обобщённое программирование и рефлексию во время компиляции, кросс-компиляцию и . Главная цель языка — конкурировать c (и стать лучше) C , и в то же время быть более простым, чем C++ , Rust и другие . Разработка Zig поддерживается некоммерческой организацией Zig Software Foundation, основанная в 2020 году автором языка Andrew Kelley .
Язык имеет много средств для низкоуровневого программирования , особенно: упакованные структуры (структуры с нулевым выравниванием между полями ), целочисленные типы произвольной длины (вплоть до 65535 бит), несколько типов указателей .
На момент версии 0.10.0 Zig по умолчанию использует новый компилятор , написанный на самом языке Zig, однако временно остаётся возможность использовать старый компилятор на C++ . В качестве основного бэкэнда компилятора используется LLVM , однако существуют другие бэкенды разной готовности . Компилятор лицензирован под свободной лицензией MIT . Компилятор имеет возможность компилировать C и C++ программы с помощью команд «zig cc» и «zig c++» . Язык программирования Nim поддерживает использование компилятора Zig как C компилятора.
Примеры кода
Hello World
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,
};
}
Примечания
- — 2015.
- . ziglang.org . Дата обращения: 29 декабря 2022. 29 декабря 2022 года.
- . ziglang.org . Дата обращения: 29 декабря 2022. 29 декабря 2022 года.
- . ziglang.org . Дата обращения: 29 декабря 2022. 15 ноября 2021 года.
- . ziglang.org . Дата обращения: 29 декабря 2022. 29 декабря 2022 года.
- . ziglang.org . Дата обращения: 21 сентября 2020. 31 марта 2022 года.
- . ziglang.org . Дата обращения: 29 декабря 2022. 25 декабря 2022 года.
- (англ.) . kristoff.it . Дата обращения: 29 декабря 2022. 11 января 2023 года.
- (англ.) . kristoff.it . Дата обращения: 29 декабря 2022. 29 декабря 2022 года.
- . — 2020-09-21. 30 марта 2022 года.
- . andrewkelley.me . Дата обращения: 29 декабря 2022. 17 марта 2022 года.
Ссылки
- 2021-12-08
- 1