Zig
Язык программирования общего назначения и набор инструментов для создания кода Из Википедии, свободной энциклопедии
Zig — императивный, статически типизированный, компилируемый язык программирования общего назначения. Язык был спроектирован для «создания надёжного, оптимального и переиспользуемого ПО» (англ. maintaining robust, optimal and reusable software). Поддерживает обобщённое программирование и рефлексию во время компиляции, кросс-компиляцию и ручное управление памятью[англ.]. Главная цель языка — быть более удобным, чем Си в задачах системного программирования, и в то же время быть более простым, чем C++ и Rust. Разработка Zig поддерживается некоммерческой организацией Zig Software Foundation, основанной в 2020 году автором языка Эндрю Келли.
Zig | |
---|---|
![]() | |
Класс языка | язык программирования, императивный, язык программирования общего назначения[вд], компилируемый язык программирования, язык системного программирования[вд], мультипарадигмальный, процедурный язык программирования и язык функционального программирования |
Тип исполнения | Компилируемый |
Появился в | 2015[1] |
Разработчик | Эндрю Келли[вд] |
Расширение файлов |
.zig |
Выпуск | |
Испытал влияние | Си, C++, Go, Rust и JavaScript |
Лицензия | лицензия MIT |
Сайт | ziglang.org (англ.) |
Медиафайлы на Викискладе |
Язык имеет много средств для низкоуровневого программирования, среди таковых: упакованные структуры (структуры с нулевым выравниванием между полями), целочисленные типы произвольной длины (вплоть до 65535 бит), несколько типов указателей.
На момент версии 0.10.0 Zig по умолчанию использует новый компилятор, написанный на самом языке Zig, однако временно остаётся возможность использовать старый компилятор на C++. В качестве основного бэкэнда компилятора используется LLVM, однако существуют другие бэкенды разной готовности. Компилятор лицензирован под свободной лицензией MIT. Компилятор имеет возможность компилировать программы на Си и C++ с помощью команд zig cc и zig c++. Язык программирования Nim поддерживает использование компилятора Zig как си-компилятора.
Примеры кода
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,
};
}
Примечания
Ссылки
Wikiwand - on
Seamless Wikipedia browsing. On steroids.