Раздел 41 · Zig с нуля

Установка Zig и первая программа

junior~10 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Установка Zig и первая программа

Ты получил новый музыкальный инструмент. Сначала проверяешь, что он настроен, и играешь одну ноту. Учить сложную пьесу до настройки неудобно: непонятно, виноваты пальцы или инструмент. С компилятором та же история. Сегодня проверим версию, создадим один файл и получим видимый ответ.

Наша программа только здоровается. Она не открывает сеть, не пишет настройки и не требует сторонних библиотек. Поэтому любую проблему можно привязать к одному из трёх шагов: инструмент найден, файл найден, программа запущена.

Одна мысль урока

Сначала проверь версию инструмента, затем отдельно собери и запусти один исходный файл.

Опора из прошлого урока: Что такое Zig и зачем он нужен.

От картинки к записи

Скачай архив Zig 0.16.0 с официальной страницы загрузок. Выбери свою операционную систему и архитектуру: x86_64 обычно означает современный процессор Intel или AMD, aarch64 означает 64-битный ARM. Если не знаешь архитектуру, посмотри сведения о системе. Архив от другой машины не исправляется изменением расширения файла.

Распакуй архив в постоянную папку. Внутри находится исполняемый файл zig или zig.exe. Сначала вызови его полным путём. В Linux и macOS пример выглядит как /путь/к/zig/zig version; в PowerShell используй & 'C:\путь\zig.exe' version. Ты должен получить 0.16.0. Добавить каталог в переменную окружения PATH можно позже. PATH влияет на поиск команды, но не меняет содержимое компилятора.

Создай пустой рабочий каталог и файл hello.zig. Расширение говорит человеку и редактору, какой язык внутри. Не сохраняй файл как hello.zig.txt: в некоторых менеджерах файлов последний суффикс скрыт. Выполняй команды из каталога с исходником либо указывай полный путь к нему.

В примере используются только средства Zig 0.16. std.process.Init даёт программе уже подготовленные системные инструменты. Поле init.io передаёт способ выполнять ввод и вывод. Пока это можно читать как «право пользоваться выводом процесса». Это не строка приветствия и не файл.

Для стандартного вывода создаётся writer, объект записи. Ему нужен рабочий массив байтов buf. undefined здесь допустим только потому, что объект записи заполнит буфер до чтения. Мы не читаем неинициализированные байты сами. print складывает текст в буфер, а flush отправляет оставшиеся байты получателю. Без flush короткий текст может остаться внутри буфера.

Стандартный вывод

не гарантирует окно на экране. Если команду запустили с перенаправлением, приветствие попадёт в файл. Это полезно: та же программа может обслуживать человека и другую программу.

Сначала выполни zig build-exe hello.zig, затем ./hello в Linux или macOS, либо .\hello.exe в PowerShell. Короткая команда zig run hello.zig объединяет сборку и запуск. Когда ищешь проблему, отдельные шаги удобнее: видно, какой именно завершился ошибкой.

премиум-урок

Продолжение в премиуме: 1 200 ₽ в месяц или 10 000 ₽ в год. Вместе с ним серверные проверки задач и школьные токены AI-коуча.

Оплата пока не подключена: премиум и курсы открываются промокодом.