Files
fp-3-itmo/lab 0/Essay.md
2025-10-16 15:25:36 +03:00

4.2 KiB
Raw Blame History

Почему я выбрал Gleam

  • Статическая типизация с выводом типов. Компилятор Gleam обнаруживает ошибки на этапе компиляции, что помогает с проблемой runtime косяков и повышает надёжность кода в целом, при этом сохраняя лаконичность за счёт вывода типов.
  • Компиляция в Erlang/Elixir (BEAM). Gleam работает на виртуальной машине BEAM, что даёт отказоустойчивость, лёгкость параллельных вычислений и Hot Reload что очень удобно! И в js по-моему он тоже может компилироваться.
  • Простой и читаемый синтаксис. Gleam сильно приличнее и читаемее выглядит в сравнении с собственно Erlang и тем более чем-то вроде Clojure. Я избалован читаемостью и синтаксисом Kotlin)
  • Он новый. Интересно посмотреть как развивалась функциональная парадигма сквозь время, куда мы пришли и что нам это даёт? Плюс я немного устал от акторной модели в Tact/FunC (Экзотика для блокчейна TON) и от ООП (Kotlin, Java)

Стек инструментов

  • gleam — основной инструмент: компилятор, менеджер пакетов, запуск тестов
  • rebar3 / erlang.mk — совместимость с Erlang-сборкой (при необходимости)
  • gleam format — встроенное форматирование кода
  • gleam test — встроенная система модульных тестов

ЛР-4: Анализатор кода на Gleam для выявления "запахов" в Erlang/Elixir проектах

Что хочу сделать:
Разработать инструмент для статического анализа исходного кода Erlang/Elixir проектов, который будет обнаруживать определённые "запахи кода", они же антипаттерны — такие как длинные функции, избыточная вложенность, нарушение принципов функционального программирования.

Почему Gleam подходит: строгая статическая типизация гарантирует корректность работы с AST Erlang/Elixir, алгебраические типы данных точно моделируют структуру анализируемых программ, pattern matching упрощает реализацию детекторов антипаттернов, а компиляция в BEAM обеспечивает естественную интеграцию с экосистемой Erlang для анализа реальных проектов. Функциональная природа Gleam идеально соответствует задаче анализа функционального кода.


Книга для изучения

Именно что книг (которые бумажные или в .pdf) я по gleam не нашёл, зато есть такой интерактивный "путеводитель": https://tour.gleam.run. Так что придётся опираться на него.

Я считаю что по формату он не подходит на роль книги, но по содержанию вполне.


Материалы для эссе и подготовки