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

Введение в Elixir

Что такое Elixir?

Elixir — это функциональный язык программирования, работающий на виртуальной машине Erlang (BEAM). Представьте, что вы строите небоскрёб: традиционные языки заставляют вас задумываться о каждой балке и этаже, но Elixir — это как конструктор из готовых, идеально подогнанных блоков, который позволяет строить масштабные, отказоустойчивые системы легко и элегантно.

Elixir создан для высоконагруженных приложений, где критически важна надёжность: телеком-системы, банковские приложения, чат-платформы. Если вы новичок — не пугайтесь, Elixir сочетает красоту Ruby с мощностью Erlang!

Почему Elixir?

  • Функциональный стиль: неизменяемые данные, чистые функции, отсутствие побочных эффектов — код предсказуем и легко тестируется.
  • Конкурентность из коробки: легковесные процессы (не потоки ОС!) общаются через сообщения — как в реальной жизни: отправил письмо и забыл.
  • Отказоустойчивость: если один процесс падает — другие продолжают работать. Это философия Erlang: "let it crash".
  • Горячая перезагрузка: обновляй код без остановки системы.
  • Метапрограммирование: макросы позволяют писать код, который генерирует другой код — DSL и библиотеки растут как грибы.
  • Растущая экосистема: Phoenix для веба, Nerves для встраиваемых систем, Ecto для БД.

Интересный факт: Elixir создал Хосе Валим (José Valim) — один из ключевых разработчиков Ruby on Rails. Он хотел добавить конкурентность в Rails и выбрал Erlang VM как платформу.

Установка Elixir

Проверьте, установлен ли Elixir: откройте терминал и введите elixir --version. Если видите версию — отлично, установка не нужна.

macOS

brew install elixir

Linux (Ubuntu/Debian)

sudo apt update
sudo apt install elixir

Windows

Скачайте установщик с elixir-lang.org/install.html или используйте Chocolatey:

choco install elixir

Проверка установки

elixir --version
# Вывод: Erlang/OTP ..., Elixir ...

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

Напишем классический "Hello, World!" на Elixir.

  1. Создайте файл hello.exs (расширение .exs для Elixir Script):
IO.puts("Hello, World!")
  1. Запустите:
elixir hello.exs
# Вывод: Hello, World!

Для полноценного проекта используйте Mix (сборщик Elixir):

mix new my_app
cd my_app
mix run -e "MyApp.hello"

Структура курса

Курс разделён на два уровня: основы и продвинутые темы.

Часть 1: Основы Elixir

УрокТемаЧто изучим
1ВведениеУстановка, IEx, базовые концепции
2Базовый синтаксисАтомы, булевы типы, операторы сравнения
3Переменные и области видимостиПривязка, области видимости, пипы (pipe operator)
4ФункцииИменованные функции, анонимные функции, замыкания
5КоллекцииСписки, кортежи, Map, Keyword Lists
6Управляющие структурыcase, cond, if, unless, with
7Модули и атрибутыСоздание модулей, атрибуты, импорты и псевдонимы
8Обработка ошибокtry, rescue, catch, throw
9ПротоколыПолиморфизм, определение и реализация протоколов
10СтруктурыСоздание структур, ограничения, @enforce_keys
11Специальные формыquote, unquote, var!, макрос __MODULE__

Часть 2: Продвинутые темы

УрокТемаЧто изучим
1КонкурентностьПроцессы, spawn, send, receive, PID
2Реестры и AgentРеестры процессов, модуль Agent
3GenServerПаттерн GenServer, обратные вызовы, состояние
4OTP: SupervisorСупервизоры, стратегии рестарта, дерево супервизии
5OTP: Task и AgentАсинхронные задачи, распределённый Elixir
6МетапрограммированиеМакросы, AST, гигиена макросов
7Ecto: основыМиграции, схемы, запросы
8Ecto: ассоциацииСвязи между моделями, предзагрузка
9Phoenix: основыРоутинг, контроллеры, представления
10Phoenix: каналыWebSocket, каналы в реальном времени
11ТестированиеExUnit, doctest, тестирование GenServer
12Mix и зависимостиСоздание проектов, зависимости, задачи Mix

Инструменты экосистемы

  • IEx (Interactive Elixir) — REPL для экспериментов. Запустите iex и пробуйте код прямо в терминале.
  • Mix — сборщик и менеджер проектов. Команды: mix new, mix compile, mix test, mix deps.get.
  • ExUnit — фреймворк для тестирования.
  • Hex — менеджер пакетов.
  • Phoenix — веб-фреймворк (аналог Rails в Ruby).
  • Nerves — фреймворк для встраиваемых систем.

Упражнения

1. Первый запуск в IEx

Запустите iex в терминале и выполните:

IO.puts("Привет от Elixir!")
2 + 2
"Привет, " <> "мир!"

2. Калькулятор в IEx

В IEx вычислите:

10 + 5
15 - 7
3 * 4
20 / 4
div(10, 3) # целочисленное деление
rem(10, 3) # остаток

3. Работа с IEx

h IO.puts     # справка по функции
h Enum # справка по модулю
? 'a' # код символа
v(1) # результат первой команды

4. Исследование языка

Ответьте на вопросы (используйте h, i, ? в IEx):

  • Какой тип у true и false?
  • Чем отличается == от ===?
  • Что возвращает is_integer(1.0)?
  • Какой результат 1..10?

Заключение

Elixir — это современный функциональный язык для создания надёжных, масштабируемых приложений. Курс проведёт вас от основ синтаксиса к продвинутым темам: конкурентность, OTP, метапрограммирование и веб-разработка с Phoenix.

Готовы начать? Давайте перейдём к следующему уроку — Базовый синтаксис!