раздел 41
Zig с нуля
Первый шаг в системное программирование: переменные и числа, условия и циклы, указатели и срезы, опциональные значения и обработка ошибок. Память с явным аллокатором, структуры и объединения, comptime, строки UTF-8 и коллекции. От первой программы и встроенных тестов до сборки, кросс-компиляции и вызовов C. Дальше можно перейти к устройству компьютера в разделе системного программирования.
Не получилось изменить список. Попробуй ещё раз.
Без входа у каждого урока видно начало. Войди, чтобы читать целиком, отмечать пройденное и решать задачи. войти
Уроки раздела в премиуме: 1 200 ₽ в месяц или 10 000 ₽ в год. Оплата пока не подключена, доступ открывается промокодом. ввести промокод
Уроки раздела
- Что такое Zig и зачем он нужен
- Установка Zig и первая программа
- Философия явности: что отличает Zig от C
- Переменные: const и var
- Числовые типы и арифметика
- Условия, циклы и блоки
- Указатели и срезы
- Опциональные типы вместо null
- Массивы и многоуказатели
- Error unions и try
- catch и обработка на месте
- errdefer и безопасный откат
- Структуры
- Перечисления и объединения
- Функции и параметры
- Аллокаторы: явное управление памятью
- Виды аллокаторов из стандартной библиотеки
- Сравнение с ручной памятью C и Rust
- comptime: код на этапе компиляции
- Дженерики через comptime-типы
- Метапрограммирование без макросов
- Строки и работа с UTF-8
- Коллекции: ArrayList и HashMap
- Встроенное тестирование
- Система сборки и кросс-компиляция
- Взаимодействие с C
- Zig против C, Rust и C++
- Кому и зачем Zig: применение в реальном мире
Понятия курса
Понятия разобраны внутри уроков. Нажми на понятие, чтобы открыть урок, где оно объясняется.
Введение в Zig
- Установка Zig и первая программаСначала проверь версию инструмента, затем отдельно собери и запусти один исходный файл.урок 2 · Установка Zig и первая программаопираются: урок 3
- Философия явности: что отличает Zig от CЯвность означает видимое решение, а не отсутствие удобных сокращений.урок 3 · Философия явности: что отличает Zig от Cопираются: урок 4
- Что такое Zig и зачем он нуженZig делает важные действия программы видимыми, но не принимает решения о безопасности за тебя.урок 1 · Что такое Zig и зачем он нуженопираются: урок 2
Основы языка
- Переменные: const и varconst фиксирует привязку имени, var разрешает присваивание нового значения.урок 4 · Переменные: const и varопираются: урок 5
- Условия, циклы и блокиУсловие выбирает путь, цикл повторяет шаг, блок ограничивает локальные имена.урок 6 · Условия, циклы и блокиопираются: урок 7
- Числовые типы и арифметикаТип задаёт диапазон числа, а оператор определяет поведение на границе.урок 5 · Числовые типы и арифметикаопираются: урок 6
Память и указатели
- Массивы и многоуказателиМассив хранит элементы и фиксированную длину, многоуказатель хранит адрес без длины.урок 9 · Массивы и многоуказателиопираются: урок 10
- Опциональные типы вместо null?T отличает отсутствие значения от любого допустимого значения T.урок 8 · Опциональные типы вместо nullопираются: урок 9
- Указатели и срезыСрез это адрес и длина, а не новая копия элементов.урок 7 · Указатели и срезыопираются: урок 8
Обработка ошибок
- catch и обработка на местеcatch выбирает действие на неуспешном пути там, где вызвана функция.урок 11 · catch и обработка на местеопираются: урок 12
- errdefer и безопасный откатerrdefer выполняет откат при выходе с ошибкой, не отбирая ресурс у успешного результата.урок 12 · errdefer и безопасный откатопираются: урок 13
- Error unions и tryТип E!T содержит успешное T или ошибку E; try передаёт ошибку вызывающему.урок 10 · Error unions и tryопираются: урок 11
Типы данных
- Перечисления и объединенияПеречисление ограничивает варианты, помеченное объединение связывает каждый вариант со своими данными.урок 14 · Перечисления и объединенияопираются: урок 15
- СтруктурыСтруктура объединяет разные поля в одно значение с понятным именем.урок 13 · Структурыопираются: урок 14
- Функции и параметрыСигнатура функции сообщает входы и результат раньше, чем читатель открывает тело.урок 15 · Функции и параметрыопираются: урок 16
Управление памятью
- Аллокаторы: явное управление памятьюАллокатор выдаёт и принимает память, а функции явно договариваются, кто её освободит.урок 16 · Аллокаторы: явное управление памятьюопираются: урок 17
- Виды аллокаторов из стандартной библиотекиОдин интерфейс аллокатора позволяет менять стратегию памяти под срок жизни задачи.урок 17 · Виды аллокаторов из стандартной библиотекиопираются: урок 18
- Сравнение с ручной памятью C и RustВ Zig владелец и срок жизни определяются явным договором, а не автоматически проверяются целиком.урок 18 · Сравнение с ручной памятью C и Rustопираются: урок 19
comptime и метапрограммирование
- Дженерики через comptime-типыТип может быть comptime-параметром, по которому строится конкретный вариант функции.урок 20 · Дженерики через comptime-типыопираются: урок 21
- Метапрограммирование без макросовМетапрограммирование использует сведения о типах для проверки и построения обычного кода.урок 21 · Метапрограммирование без макросовопираются: урок 22
- comptime: код на этапе компиляцииcomptime требует вычисления до запуска и работает только с доступными в этот момент данными.урок 19 · comptime: код на этапе компиляцииопираются: урок 20
Стандартная библиотека и практика
- Встроенное тестированиеТест исполняет отдельный пример договора и проваливается при несовпадении.урок 24 · Встроенное тестированиеопираются: урок 25
- Коллекции: ArrayList и HashMapКоллекция выбирается по способу доступа, а её рост требует явной памяти и уборки.урок 23 · Коллекции: ArrayList и HashMapопираются: урок 24
- Строки и работа с UTF-8Строка Zig является последовательностью байтов; смысл UTF-8 нужно учитывать отдельно.урок 22 · Строки и работа с UTF-8опираются: урок 23
Сборка, C и место Zig
- Взаимодействие с CСовместимость с C требует согласовать объявления, реализацию, линковку и договор данных.урок 26 · Взаимодействие с Cопираются: урок 27
- Кому и зачем Zig: применение в реальном миреЗавершённая задача соединяет явные договоры данных, ошибок, памяти, тестов и сборки.урок 28 · Кому и зачем Zig: применение в реальном мире
- Система сборки и кросс-компиляцияbuild.zig описывает зависимости шагов и целевую платформу, а не заменяет код программы.урок 25 · Система сборки и кросс-компиляцияопираются: урок 26
- Zig против C, Rust и C++Сравнение языков полезно только при явно заданных требованиях и ограничениях.урок 27 · Zig против C, Rust и C++опираются: урок 28