Pull to refresh

Comments 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 умеет из коробки) сделает все за нас. Приносить посторонние библиотеки для реализации того, что может быть средствами языка записано в две строки — очень порочная практика.

Главный минус конечных автоматов такой же как и у регулярных выражений (что не удивительно, учитывая их общность), — непрозрачность работы алгоритма для всех кроме автора, да и для самого автора через несколько месяцев после написания тоже. Текстовые ЯП плохо подходят для передачи визуализации графов, а для того, чтобы осознать структуру состояний и переходов с «текста» стороннему человеку приходится потратить много усилий. Одно время пробовал оставлять ссылку на png с структурой в комментариях в коде, но потом перестал, т.к. при модификациях кода приходилось открывать редактор и перерисовывать еще и схему, в общем, надоело. А вообще, FSM одна из самых недооцененных концепций в разработке ПО.
Sign up to leave a comment.

Articles