Комментарии 3
Саша Юрич, автор блога erlangelist.com, одной из лучших книжек по эликсиру Elixir in Action, автор лучшей полностью функциональной библиотеки реализующей конечные автоматы (да и вообще умнейший человек), прямо в аннотации к своей библиотеке пишет:
This project is not maintained anymore, and I don't advise using it. Pure functional FSMs are still my preferred approach (as opposed to gen_statem), but you don't need this library for that. Regular data structures, such as maps or structs, with pattern matching in multiclauses will serve you just fine.
— https://github.com/sasa1977/fsm
И я с ним полностью согласен. OTP не нужны дополнительные библиотеки для имплементации FSM: паттерн-матчинг и сохранение только валидных состояний (что Ecto умеет из коробки) сделает все за нас. Приносить посторонние библиотеки для реализации того, что может быть средствами языка записано в две строки — очень порочная практика.
0
Главный минус конечных автоматов такой же как и у регулярных выражений (что не удивительно, учитывая их общность), — непрозрачность работы алгоритма для всех кроме автора, да и для самого автора через несколько месяцев после написания тоже. Текстовые ЯП плохо подходят для передачи визуализации графов, а для того, чтобы осознать структуру состояний и переходов с «текста» стороннему человеку приходится потратить много усилий. Одно время пробовал оставлять ссылку на png с структурой в комментариях в коде, но потом перестал, т.к. при модификациях кода приходилось открывать редактор и перерисовывать еще и схему, в общем, надоело. А вообще, FSM одна из самых недооцененных концепций в разработке ПО.
0
Не увидел тега «перевод».
blog.appsignal.com/2020/07/14/building-state-machines-in-elixir-with-ecto.html
blog.appsignal.com/2020/07/14/building-state-machines-in-elixir-with-ecto.html
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Создаем конечный автомат в Elixir и Ecto