* Słyszałem wiele razy i staram się zrozumieć i potwierdzić ideę, że FP i OO są ortogonalne. *
Po pierwsze, co to znaczy, że 2 koncepcje są ortogonalne?
Cytat z Wikipedii: „Ortogonalność gwarantuje, że modyfikacja efektu technicznego wytwarzanego przez element systemu nie powoduje ani nie rozprzestrzenia efektów ubocznych na inne elementy systemu”.
Po prostu oznacza to po prostu, że zmiana w jednym systemie nie ma wpływu i nie może wpłynąć na zmianę w innym systemie.
Na przykład samochód ma elementy ortogonalne i elementy sterujące (np. Przyspieszenie pojazdu nie ma wpływu na nic innego, ale elementy związane wyłącznie z funkcją przyspieszenia. Nie wpływa na przykład na radio (chociaż nie jestem pewien, czy wpływa to na odtwarzanie płyty CD, ponieważ moje czasami pomijają)).
FP w jak największym stopniu zachęca do niezmienności i czystości. a OO wydaje się czymś zbudowanym dla stanu i mutacji (nieco zorganizowana wersja programowania imperatywnego?). I zdaję sobie sprawę, że przedmioty mogą być niezmienne. Ale OO wydaje mi się sugerować stan / zmianę.
Wyglądają jak przeciwieństwa. Czy to znaczy, że są ortogonalne?
Trochę Problem polega na tym, że żadna z tych koncepcji nie jest naprawdę trudna do zdefiniowania. Ale tak, masz sedno tego.