Структура репозитория

Lab 0 -> lab 0
lab 0 -> lab0
И исправил ссылку на Эссе из README.MD
This commit is contained in:
2025-10-16 15:29:06 +03:00
parent 8b20c47ab0
commit fe00161ced
2 changed files with 1 additions and 1 deletions

43
lab0/Essay.md Normal file
View File

@@ -0,0 +1,43 @@
# Почему я выбрал **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