Zig (язык программирования)
Из Википедии, бесплатной энциклопедии
Zig | |
---|---|
Класс языка | язык программирования, императивный, язык программирования общего назначения[d], компилируемый язык программирования, язык системного программирования[d], мультипарадигмальный, процедурный язык программирования и язык функционального программирования |
Тип исполнения | Компилируемый |
Появился в | 2015[2] |
Разработчик | Эндрю Келли[d] |
Расширение файлов | .zig |
Выпуск | |
Испытал влияние | Си, C++, Go, Rust и JavaScript |
Лицензия | лицензия MIT |
Сайт | ziglang.org (англ.) |
Медиафайлы на Викискладе |
Zig — императивный, статически типизированный, компилируемый язык программирования общего назначения. Язык был спроектирован для «создания надёжного, оптимального и переиспользуемого ПО» (англ. maintaining robust, optimal and reusable software)[3]. Язык поддерживает обобщённое программирование и рефлексию во время компиляции, кросс-компиляцию и ручное управление памятью . Главная цель языка — конкурировать c (и стать лучше) C, и в то же время быть более простым, чем C++, Rust и другие[4]. Разработка Zig поддерживается некоммерческой организацией Zig Software Foundation, основанная в 2020 году автором языка Andrew Kelley[5][6].
Язык имеет много средств для низкоуровневого программирования, особенно: упакованные структуры (структуры с нулевым выравниванием между полями), целочисленные типы произвольной длины (вплоть до 65535 бит), несколько типов указателей[7].
На момент версии 0.10.0 Zig по умолчанию использует новый компилятор, написанный на самом языке Zig, однако временно остаётся возможность использовать старый компилятор на C++[8][9]. В качестве основного бэкэнда компилятора используется LLVM, однако существуют другие бэкенды разной готовности[10]. Компилятор лицензирован под свободной лицензией MIT[11]. Компилятор имеет возможность компилировать C и C++ программы с помощью команд «zig cc» и «zig c++»[12]. Язык программирования 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, }; }
Примечания[править | править код]
- ↑ Release 0.12.0
- ↑ Келли Э. init — 2015.
- ↑ Главная ⚡ Zig Programming Language . ziglang.org. Дата обращения: 29 декабря 2022. Архивировано 29 декабря 2022 года.
- ↑ Подробный обзор ⚡ Zig Programming Language . ziglang.org. Дата обращения: 29 декабря 2022. Архивировано 29 декабря 2022 года.
- ↑ Announcing the Zig Software Foundation ⚡ Zig Programming Language . ziglang.org. Дата обращения: 29 декабря 2022. Архивировано 15 ноября 2021 года.
- ↑ Поддержать ZSF ⚡ Zig Programming Language . ziglang.org. Дата обращения: 29 декабря 2022. Архивировано 29 декабря 2022 года.
- ↑ Documentation - The Zig Programming Language . ziglang.org. Дата обращения: 21 сентября 2020. Архивировано 31 марта 2022 года.
- ↑ 0.10.0 Release Notes ⚡ The Zig Programming Language . ziglang.org. Дата обращения: 29 декабря 2022. Архивировано 25 декабря 2022 года.
- ↑ Zig Is Self-Hosted Now, What's Next? (англ.). kristoff.it. Дата обращения: 29 декабря 2022. Архивировано 11 января 2023 года.
- ↑ Zig's New Relationship with LLVM (англ.). kristoff.it. Дата обращения: 29 декабря 2022. Архивировано 29 декабря 2022 года.
- ↑ ziglang/zig. — 2020-09-21. Архивировано 30 марта 2022 года.
- ↑ `zig cc`: a Powerful Drop-In Replacement for GCC/Clang - Andrew Kelley . andrewkelley.me. Дата обращения: 29 декабря 2022. Архивировано 17 марта 2022 года.
Ссылки[править | править код]