* He escuchado esto una y otra vez y estoy tratando de entender y validar la idea de que FP y OO son ortogonales. * *
En primer lugar, ¿qué significa que 2 conceptos sean ortogonales?
Cita de Wikipedia: "La ortogonalidad garantiza que la modificación del efecto técnico producido por un componente de un sistema no crea ni propaga efectos secundarios a otros componentes del sistema".
Simplemente, solo significa que el cambio a un sistema no afecta, y no puede afectar, un cambio en el otro sistema.
Por ejemplo, un automóvil tiene componentes y controles ortogonales (por ejemplo, acelerar el vehículo no influye en nada más que en los componentes involucrados exclusivamente con la función de aceleración. No afecta la radio, por ejemplo (aunque no estoy seguro de si afecta la reproducción de CD, ya que el mío salta a veces)).
FP fomenta la inmutabilidad y la pureza tanto como sea posible. y OO parece algo construido para el estado y la mutación (¿una versión ligeramente organizada de la programación imperativa?). Y me doy cuenta de que los objetos pueden ser inmutables. Pero OO parece implicar estado / cambio para mí.
Parecen opuestos. ¿Eso significa que son ortogonales?
Un poco El problema es que ninguno de estos conceptos está realmente definido como roca. Pero sí, ya entendiste lo esencial.