Одной из главных причин растущего смещения внимания к функциональному программированию в наши дни является рост многопоточности/обработки и преимущества фокусировки FP на свободном и безгосударственном вычислении без побочных эффектов для обеспечения масштабируемости.
Конечно, хотя в объектно-ориентированном программировании мы также могли перейти к парадигме без состояния, где все объекты никогда не будут мутировать состояние. Это может быть конвенция или, возможно, даже неявно поддерживаемая языком. Например, на языках, обеспечивающих равномерный доступ между полями и методами объекта, просто не позволяя методам setter выполнить это.
Итак, мой вопрос заключается в том, что OO может использовать безгражданство, и ничего о объектах не означает, что это состояние, является ли ООП эффективным надмножеством FP? Существуют ли дополнительные преимущества/особенности FP, которые делают многопоточность более практичным, чем в ООП?