Перейти к основному содержимому

5.20. Первая программа

Разработчику Архитектору Инженеру

Первая программа

Установка Zig

Zig распространяется в виде готовых двоичных сборок для всех основных операционных систем: Windows, macOS и Linux. Установка не требует сложных зависимостей и занимает несколько минут.

На Windows

  1. Перейдите на официальный сайт Zig: https://ziglang.org/download/
  2. В разделе Windows скачайте архив с последней стабильной версией (обычно файл с расширением .zip).
  3. Распакуйте архив в удобное место, например, в папку C:\zig.
  4. Добавьте путь к папке zig в переменную окружения PATH. Это позволит запускать команду zig из любого места в терминале.
    • Нажмите Win + R, введите sysdm.cpl, откройте вкладку Дополнительно, затем нажмите Переменные среды.
    • В разделе Системные переменные найдите Path, нажмите Изменить, затем Создать и укажите путь, например: C:\zig.
  5. Откройте новое окно терминала (PowerShell или Command Prompt) и введите:
    zig version
    Если команда возвращает номер версии, например 0.13.0, установка прошла успешно.

На macOS

Если у вас установлен менеджер пакетов Homebrew, выполните:

brew install zig

Если вы предпочитаете установку вручную:

  1. Скачайте архив для macOS с официального сайта.
  2. Распакуйте его, например, в папку ~/Applications/zig.
  3. Добавьте путь в PATH. Для этого откройте файл ~/.zshrc (или ~/.bashrc, если используется bash) и добавьте строку:
    export PATH="$PATH:$HOME/Applications/zig"
  4. Перезагрузите оболочку или выполните:
    source ~/.zshrc
  5. Проверьте установку командой zig version.

На Linux

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

  1. Скачайте архив, соответствующий вашей архитектуре (обычно x86_64-linux).
  2. Распакуйте его, например, в /opt/zig:
    sudo tar -xzf zig-linux-x86_64-*.tar.xz -C /opt
    sudo mv /opt/zig-linux-x86_64-* /opt/zig
  3. Добавьте путь в PATH. Откройте ~/.bashrc или ~/.profile и добавьте:
    export PATH="$PATH:/opt/zig"
  4. Примените изменения:
    source ~/.bashrc
  5. Проверьте установку:
    zig version

Выбор среды разработки

Zig не требует специальной интегрированной среды разработки (IDE). Достаточно любого текстового редактора с поддержкой синтаксиса Zig. Однако для удобства можно использовать следующие варианты:

  • Visual Studio Code — самый популярный выбор. Установите расширение Zig Language Support от автора tiehuis. Оно предоставляет подсветку синтаксиса, автодополнение, навигацию по коду и интеграцию с компилятором.
  • Vim / Neovim — с плагином zig.vim или через LSP-клиент (например, nvim-lspconfig с сервером zls).
  • Emacs — с пакетом zig-mode.
  • JetBrains Rider или CLion — поддерживают Zig через плагины, но требуют дополнительной настройки.

Для первой программы подойдёт даже Блокнот, но использование редактора с подсветкой синтаксиса значительно упрощает чтение и отладку кода.


Создание первой программы

Откройте терминал и создайте новую директорию для проекта:

mkdir hello-zig
cd hello-zig

Внутри этой папки создайте файл с именем main.zig. Имя файла может быть любым, но по соглашению точка входа в программу часто называется main.zig.

Откройте файл в выбранном редакторе и введите следующий код:

const std = @import("std");

pub fn main() void {
std.debug.print("Hello, World!\n", .{});
}

Разберём каждую строку подробно.

Строка 1: импорт стандартной библиотеки

const std = @import("std");

Ключевое слово const объявляет неизменяемую переменную. Здесь переменной std присваивается результат вызова встроенной функции @import("std"). Эта функция загружает модуль стандартной библиотеки Zig, которая содержит базовые инструменты: работу с памятью, вводом-выводом, строками, потоками и многое другое. Стандартная библиотека в Zig — это не внешняя зависимость, а часть самого языка, встроенная в компилятор.

Строка 3: определение функции main

pub fn main() void {

Функция main — это точка входа в программу. Ключевое слово pub означает, что функция видна за пределами текущего модуля (это необходимо, чтобы система запуска могла её вызвать). Слово fn объявляет функцию. После имени main в скобках указываются параметры — в данном случае их нет. Тип возврата указан как void, что означает: функция ничего не возвращает.

Строка 4: вывод текста

std.debug.print("Hello, World!\n", .{});

Вызов std.debug.print отправляет текст в стандартный поток вывода (обычно консоль). Первый аргумент — строковый литерал "Hello, World!\n". Символ \n в конце обеспечивает переход на новую строку после вывода. Второй аргумент — это кортеж (tuple), обозначенный как .{}. В Zig форматирование строки выполняется через заполнители, такие как {}. В данном случае строка не содержит заполнителей, поэтому передаётся пустой кортеж.

Важно: std.debug.print предназначен для отладки и работает даже в режимах, где другие функции ввода-вывода могут быть отключены. Для полноценного вывода в конечных приложениях рекомендуется использовать std.io.getStdOut().writer().


Компиляция и запуск

Вернитесь в терминал, находясь в папке hello-zig, и выполните:

zig run main.zig

Команда zig run компилирует файл и сразу запускает полученный исполняемый файл. В консоли появится:

Hello, World!

Это означает, что программа успешно выполнена.

Если вы хотите получить отдельный исполняемый файл, используйте:

zig build-exe main.zig

На выходе будет создан файл main (в Linux/macOS) или main.exe (в Windows). Его можно запустить напрямую:

./main        # Linux/macOS
main.exe # Windows

По умолчанию Zig компилирует в режиме отладки (Debug), который включает проверки границ массивов, переполнения и другие средства безопасности. Для выпуска производственной версии используйте флаг:

zig build-exe -O ReleaseFast main.zig

Флаг -O ReleaseFast отключает отладочные проверки и включает оптимизации, что делает программу быстрее и меньше по размеру.