Zig (язык программирования) - Zig (programming language)
Парадигмы | Мультипарадигма : императивная , параллельная , процедурная , функциональная |
---|---|
Разработано | Эндрю Келли |
Впервые появился | 8 февраля 2016 г . |
Предварительный выпуск | |
Печатная дисциплина | Статический , сильный , предполагаемый , структурный , общий |
Платформа | x86-64 , ARM , MIPS , IA-32 , WebAssembly , RISC-V |
Операционные системы | Кроссплатформенность |
Лицензия | Лицензия MIT |
Расширения имени файла | .zig, .zir |
Веб-сайт | ziglang |
Под влиянием | |
C , C ++ , LLVM IR , Go , Rust , JavaScript |
Zig - это императивный , универсальный , статически типизированный , скомпилированный системный язык программирования, разработанный Эндрю Келли. Язык предназначен для «надежности, оптимальность и ремонтопригодности», поддерживая во время компиляции дженериков и отражения , кросс-компиляции и ручное управление памятью . Основная цель языка - улучшить язык C , в то же время черпая вдохновение в Rust .
Zig имеет множество функций для низкоуровневого программирования, в частности: упакованные структуры (структуры без заполнения между полями), целые числа произвольной ширины и несколько типов указателей.
Этап 1 компилятор написан на Zig и C ++ , с использованием LLVM 11 в качестве обратного конца, поддерживающий многие из своих родных целей. Компилятор является бесплатным программным обеспечением с открытым исходным кодом под лицензией MIT .
Компилятор Zig предоставляет возможность компилировать C и C ++ аналогично Clang с помощью команд «zig cc» и «zig c ++», предоставляя множество заголовков, включая libc и libcxx для многих различных платформ, позволяя подкомандам Zig cc и c ++ действовать как кросс-компиляторы из коробки.
Разработка Zig финансируется Zig Software Foundation (ZSF), некоммерческой корпорацией, президентом которой является Эндрю Келли, которая принимает пожертвования и нанимает нескольких штатных сотрудников.
Примеры
Привет, мир
const std = @import("std");
pub fn main() !void {
const stdout = std.io.getStdOut().writer();
try stdout.print("Hello, {}!\n", .{"world"});
}
Общий связанный список
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,
};
}
fn LinkedList(comptime T: type) type {
return struct {
pub const Node = struct {
prev: ?*Node,
next: ?*Node,
data: T,
};
first: ?*Node,
last: ?*Node,
len: usize,
};
}
Смотрите также
использованная литература
- ^ Келли, Эндрю. «Введение в язык программирования Zig» . andrewkelley.me . Проверено 8 ноября 2020 .
- ^ «Примечания к выпуску 0.8.0» . Проверено 7 июня 2021 года .
- ^ «Зиг обладает всей элегантной простотой С, за исключением всех способов прострелить себе ногу» . JAXenter . 2017-10-31 . Проверено 11 февраля 2020 .
- ^ «Устали от C? Новый язык программирования Zig стремится быть более прагматичным и читаемым» . 2017-10-19 . Проверено 22 апреля 2020 .
- ^ Yegulalp, Сердар (2016-08-29). «Новый претендент присоединяется к Rust, чтобы свергнуть язык Си» . InfoWorld . Проверено 11 февраля 2020 .
- ^ "Зиг язык и C" . Син Corp . 2020-07-12 . Проверено 12 августа 2020 .
- ^ "Язык программирования Zig" . ziglang.org . Проверено 11 февраля 2020 .
- ^ «Обсерватория Mozilla, язык программирования Zig и SDK uSens VR / AR - дайджест новостей SD Times: 29 августа 2016 г.» . SD Times . 2016-08-29 . Проверено 11 февраля 2020 .
- ^ "Язык программирования Zig" . ziglang.org . Проверено 11 февраля 2020 .
- ↑ Компания Sudo Null. «Sudo Null - IT-новости для вас» . SudoNull . Проверено 11 февраля 2020 .
- ^ Келли, Эндрю. «Небезопасный зиг безопаснее, чем небезопасный ржавчина» . andrewkelley.me . Проверено 11 февраля 2020 .
- ^ Тим Андерсон 24 апр 2020 в 09:50. «Готов пойти _ExtInt? Компилятор LLVM Clang добавляет поддержку целых чисел произвольной ширины» . www.theregister.co.uk . Проверено 24 апреля 2020 .
- ^ «Документация - Язык программирования Zig» . ziglang.org . Проверено 24 апреля 2020 .
- ^ «Дайджест новостей SD Times: концепции C ++ 20 в Visual Studio 2010 версии 16.3, Bootstrap для отказа от поддержки IE и выпущен Zig 0.60» . SD Times . 2020-04-14 . Проверено 19 апреля 2020 .
- ^ "Ответ на _The Road to Zig 1.0_" . www.gingerbill.org . 2019-05-13 . Проверено 11 февраля 2020 .
- ^ ziglang / zig , язык программирования Zig, 11 февраля 2020 г. , получено 11 февраля 2020 г.
- ^ "Язык программирования Zig" . ziglang.org . Проверено 11 февраля 2020 .
- ^ "зигланг / зиг" . GitHub . Проверено 11 февраля 2020 .
- ^ «Примечания к выпуску 0.6.0 · Язык программирования Zig» . ziglang.org . Проверено 19 апреля 2020 .
- ^ " ' zig cc': мощная замена для GCC / Clang - Эндрю Келли" . andrewkelley.me . Проверено 28 мая 2021 .
- ^ «Зиг заставляет кросс-компиляцию просто работать» . Сообщество DEV . Проверено 28 мая 2021 .
-
^ "https://twitter.com/kubkon/status/1377146321136537602" . Twitter . Проверено 28 мая 2021 . Внешняя ссылка в
|title=
( помощь ) - ^ "Объявление о Zig Software Foundation ⚡ Zig Programming Language" . ziglang.org . Проверено 28 мая 2021 .
- ^ "Спонсор ZSF ⚡ Язык программирования Zig" . ziglang.org . Проверено 28 мая 2021 .