* Я слышал это снова и снова, и я пытаюсь понять и подтвердить идею, что FP и OO ортогональны. *
Прежде всего, что означает, что 2 понятия являются ортогональными?
Цитата из Википедии: «Ортогональность гарантирует, что изменение технического эффекта, создаваемого компонентом системы, не создает и не распространяет побочные эффекты на другие компоненты системы».
Просто это означает, что изменение одной системы не влияет и не может повлиять на изменение другой системы.
Например, автомобиль имеет ортогональные компоненты и элементы управления (например, ускорение транспортного средства не влияет ни на что другое, кроме компонентов, связанных исключительно с функцией ускорения. Например, это не влияет на радио (хотя я не уверен, влияет ли это на воспроизведение CD, так как мой иногда пропускает)).
FP поощряет неизменность и чистоту в максимально возможной степени. и ОО кажется чем-то, что построено для состояния и мутации (слегка организованная версия императивного программирования?). И я понимаю, что объекты могут быть неизменными. Но ОО, кажется, подразумевает состояние / изменение для меня.
Они кажутся противоположностями. Значит ли это, что они ортогональны?
Своего рода. Проблема заключается в том, что ни одно из этих понятий не имеет четкого определения. Но да, ты понял суть этого.