Ответ 1
Это вопрос степени.
Преимущества использования функционального языка для функционального программирования - это морковь и палочка. Морковь состоит в том, что функциональные языки имеют функциональный синтаксис и семантику и имеют функциональные библиотеки. Палка состоит в том, что функциональные языки могут заставить вас придерживаться определенных стандартов. Если вы выполняете FP на языке, отличном от FP, вы не получаете ни того, ни другого. Вы обязательно будете сражаться с общедоступной стандартной библиотекой и должны сами защищаться, чтобы убедиться, что вы не создаете состояние.
Аналогично выполнению OO в C является хорошей. Бывают случаи, когда ваши ограничения таковы, что C является правильным выбором, и структура OO также является правильным выбором. Хорошим примером этого является GTK. Очень сложно написать набор инструментов пользовательского интерфейса без ООП. Однако это означает, что вы выполняете работу, которая обычно выполняется компилятором. Некоторые вещи, которые легки на одном языке, становятся трудными или невозможными на языке без синтаксической и семантической поддержки. Например, я никогда не видел проект C, который эмулировал множественное наследование. Это слишком большой ручной труд.
Если бы вы использовали функциональный стиль в своем OO-коде для parallelism, вполне возможно, что вы достигнете тех преимуществ, которые вы получите без большой боли. Но вы по-прежнему будете упускать компромиссные гарантии того, что ваш код будет чистым, поддержка на языке FP и впечатляющая оптимизация, которую способны компиляторы FP в эти дни. Это компромисс, так что это решение, которое должно приниматься на индивидуальной основе, и это только вы можете сделать.
Что касается того, является ли ООП надмножеством FP, я даже не думаю, что концепция имеет смысл. С точки зрения выражения программ они оба вполне способны. Вы можете реализовать язык OO на языке FP и наоборот. Иногда один ближе к проблемной области, иногда другой. Несмотря на это, я думаю, что ваш реальный вопрос заключается в том, нужно ли FP или нет, и ответ на этот вопрос нет; используйте то, что вам нравится.
Я думаю, вы также должны рассмотреть возможность проверки модели Actor, потому что она более адекватна OO, а не недружественная (несовместимая с государством), при этом все еще приносит преимущества масштабируемости/ parallelism.