🦾 IT-Качалка Давида Шекунца 💪
2023-06-18 09:39
Arthur G
Прочитал. Не понимаю, почему ФОП ≠ ФП. 🙂Мутабельное состояние и в ФП можно использовать. Монады опять же опциональны.
Тогда тут 2 поинта:1. Если мы считаем утверждение, что мутабельное состояние норма в ФП, тогда ФОП это структурное описание принципов ФП (которые пересекаются с Процедурным Ппрограммированием), составленое по структуре описания ООП (философия, столпы, паттерны). ФОП – это наблюдение за ФП, ПП и (Anemic) ООП кодом, которые я структурно описал в одной книге, потому что нигде не нашел подобного.2. Но лично мое мнение, ФП без стейтлесс (то есть, с мутациями) нельзя называть ФП. По факту, получится ПП с механиками ФП (что кстати и описывает ФОП), ну или же мультипарадигмальщина, если ФП язык создавался поверх ООП языков / интерпретаторов (ReScript, Scala, F#, etc.).Вся прелесть ФП – детерминизм, безопасная и легкая паралелльность вычислений и изоляция каждой функции*, что доступно только благодаря стейтлесс, а значит особенным конструкциям языка / интерпретатора (Haskell, Erlang, Elixir, etc.). И именно стейтлесс делает использование монад и подобного обязательным.Все примеры функциональных языков или библиотек для не канонично функциональных языков, дают выразительные инструменты для написания ФП-подобного кода, но не дают самого главного, что предлагает ФП.* – изоляция функций лучше всего прослеживается на примере Erlang VM, которая берет ваше приложение и разворачивает каждую отдельную функцию, как "мини-приложение". При следующем деплое, VM понимает какие функции изменились, отрубает от старых трафик и запускает новые. Именно так Ericsson (создатели Erlang) добились 99.999% uptime.