* Eu ouvi essa e outra vez e estou tentando entender e validar a ideia de que FP e OO são ortogonais. *
Primeiro de tudo, o que significa 2 conceitos serem ortogonais?
Citação da Wikipedia: "A ortogonalidade garante que a modificação do efeito técnico produzido por um componente de um sistema não crie nem propague efeitos colaterais para outros componentes do sistema".
Simplesmente, significa apenas que a alteração em um sistema não afeta e não pode afetar uma alteração no outro sistema.
Por exemplo, um carro possui componentes e controles ortogonais (por exemplo, acelerar o veículo não influencia em nada além dos componentes envolvidos exclusivamente com a função de aceleração. Não afeta o rádio, por exemplo (embora eu não tenha certeza se isso afeta a reprodução do CD, já que o meu pula algumas vezes)).
O FP incentiva ao máximo a imutabilidade e a pureza. e OO parece algo construído para estado e mutação (uma versão ligeiramente organizada da programação imperativa?). E percebo que os objetos podem ser imutáveis. Mas OO parece implicar estado / mudança para mim.
Eles parecem opostos. Isso significa que eles são ortogonais?
Meio. O problema é que nenhum desses conceitos é realmente bem definido. Mas sim, você entendeu.