Языки программирования

Учебник Elixir для начинающих

21 урок · 6 разделов · бесплатно, без регистрации

Полный премиум-курс по языку Elixir — от первого выражения в iex до деревьев супервизоров OTP. Вы освоите функциональный стиль и неизменяемость, паттерн-матчинг, оператор конвейера, модуль Enum и рекурсию, а затем — главное: лёгкие процессы BEAM, модель акторов, передачу сообщений и промышленный OTP с GenServer, супервизорами и Application. Каждый урок содержит ASCII-схемы, разбор «под капотом BEAM», частые ошибки, best practices и запускаемые врезки «та же идея на Python».

Курс «Elixir: функциональный язык для масштаба» состоит из 6 разделов и 21 урока: Основы Elixir: первый контакт, Паттерн-матчинг — сердце языка, Функции, модули и конвейер, Коллекции, Enum и рекурсия, Процессы и модель акторов и OTP, GenServer и что дальше. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Основы Elixir: первый контакт

    1. Что такое Elixir и зачем он нужен

      Elixir: функциональный язык на BEAM. Зачем нужен, где применяется, чем отличается от ООП-языков.

    2. iex, mix и первый проект

      Интерактивная оболочка iex, инструмент сборки mix, структура проекта Elixir.

    3. Базовые типы данных

      Атомы, целые и числа с плавающей точкой, строки, булевы, кортежи, списки, ключевые списки и ассоциативные массивы.

    4. Неизменяемость и привязка имён

      Почему данные в Elixir неизменяемы, как работает привязка переменных и оператор match вместо присваивания.

  2. 2 Паттерн-матчинг — сердце языка

    1. Паттерн-матчинг: основы

      Сопоставление с образцом: деструктуризация кортежей, списков, map. Главный инструмент Elixir.

    2. Охранные выражения (guards)

      Уточнение шаблонов условиями: when, разрешённые охранные функции, комбинирование.

    3. Функции с несколькими клаузами

      Диспетчеризация по шаблонам аргументов вместо if/else, рекурсия через клаузы, базовый и шаговый случаи.

  3. 3 Функции, модули и конвейер

    1. Модули и функции

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

    2. Оператор конвейера |>

      Pipe-оператор: чтение кода как цепочки преобразований, передача результата первым аргументом, рефакторинг вложенных вызовов.

    3. Анонимные функции и захват

      Анонимные функции через fn, вызов с точкой, оператор захвата &, функции высшего порядка.

  4. 4 Коллекции, Enum и рекурсия

    1. Списки, кортежи и keyword-списки

      Когда использовать список, кортеж и keyword list; их характеристики производительности и идиомы.

    2. Модуль Enum: обход коллекций

      map, filter, reduce, sum и другие функции Enum; единый интерфейс обхода списков и map.

    3. Рекурсия и хвостовые вызовы

      Рекурсия как замена циклам, аккумуляторы, хвостовая рекурсия и почему она не переполняет стек на BEAM.

    4. Генераторы (for) и ленивый Stream

      Comprehensions через for с фильтрами, ленивые вычисления Stream и когда они экономят память.

  5. 5 Процессы и модель акторов

    1. Процессы и модель акторов

      Лёгкие процессы BEAM, spawn, изоляция памяти, модель акторов как основа конкурентности.

    2. Передача сообщений: send и receive

      Отправка сообщений через send, приём через receive, паттерн-матчинг сообщений, mailbox процесса.

    3. Состояние в процессах, связи и мониторинг

      Хранение состояния в цикле процесса, ссылки (links) и мониторы, распространение падений как основа надёжности.

  6. 6 OTP, GenServer и что дальше

    1. Что такое OTP

      OTP как набор паттернов и поведений (behaviours) для надёжных систем: зачем не писать процессы руками.

    2. GenServer: сервер с состоянием

      GenServer detail: init, handle_call (синхронно), handle_cast (асинхронно), client API, хранение состояния.

    3. Супервизоры и деревья надзора

      Supervisor, стратегии перезапуска (one_for_one и др.), дерево супервизоров, философия let it crash на практике.

    4. Приложения, Phoenix и что дальше

      OTP Application как корень дерева, краткий обзор Phoenix и LiveView, дорожная карта развития в Elixir.