Lessons: Advanced

Taking our knowledge to the next level, these lessons get cover the advanced topics of Elixir and the BEAM.

Мы уже рассматривали абстракции языка Elixir для параллельного выполнения, но иногда нужна более широкая функциональность, и тогда мы обращаемся к поведениям OTP.

В этом уроке мы сосредоточимся на GenServer.

Супервизоры это специальные процессы с единственной целью: мониторинг других процессов. Супервизоры позволяют нам создавать отказоустойчивые приложения при помощи автоматического перезапуска дочерних процессов в случае их отказа.

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

Предупреждение: метапрограммирование это сложно и оно должно использоваться только, когда абсолютно необходимо. Злоупотребление этим инструментом приведет к нечитабельности и сложностям в отладке кода.

Со временем ваш проект может вырасти до очень больших размеров. Для таких случаев инструмент Mix позволяет разделить код проекта на несколько приложений и сделать ваши проекты на Elixir более управляемыми по мере развития.

В этом уроке мы узнаем о директивах @spec и @type. Первая — скорее дополнение синтаксиса языка для написания документации, которая может быть проанализирована специальными инструментами. Вторая — помогает нам писать более читаемый и понятный код.

В предыдущем уроке мы познакомились со спецификациями, теперь мы узнаем, как можно потребовать от модуля реализовывать определённые спецификации. В Elixir такая функциональность называется поведением.

В этом уроке мы рассмотрим протоколы в языке Elixir: что это такое и как их использовать.