Files
fp-3-itmo/lab0/Essay.md
vladislav fe00161ced Структура репозитория
Lab 0 -> lab 0
lab 0 -> lab0
И исправил ссылку на Эссе из README.MD
2025-10-16 15:30:43 +03:00

43 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Почему я выбрал **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. Так что придётся опираться на него.
Я считаю что по формату он не подходит на роль книги, но по содержанию вполне.
---
## Материалы для эссе и подготовки
- Сайт gleam: https://gleam.run
- Много сниппетов и документации https://tour.gleam.run
- https://habr.com/ru/articles/721776/
- https://katafrakt.me/2021/10/13/app-with-elixir-business-logic-with-gleam/
- https://nuancesprog.ru/p/23846/
- https://github.com/plutov/websites_checker