Sto per iniziare un progetto di simulazione / modellazione. So già che OOP è utilizzato per questo tipo di progetti. Tuttavia, studiare Haskell mi ha fatto considerare di usare il paradigma FP per modellare un sistema di componenti. Lasciami elaborare:
Diciamo che ho un componente di tipo A, caratterizzato da un insieme di dati (un parametro come temperatura o pressione, un PDE e alcune condizioni al contorno, ecc.) E un componente di tipo B, caratterizzato da un diverso insieme di dati (diverso o stesso parametro, PDE e condizioni al contorno differenti). Supponiamo anche che le funzioni / i metodi che verranno applicati su ciascun componente siano uguali (ad esempio un metodo Galerkin). Lo stato mutabile dell'oggetto verrebbe utilizzato per parametri non costanti.
Se dovessi usare un approccio OOP, creerei due oggetti che incapsulerebbero i dati di ciascun tipo, i metodi per risolvere il PDE (l'ereditarietà sarebbe usata qui per il riutilizzo del codice) e la soluzione al PDE.
D'altra parte, se dovessi usare un approccio FP, ogni componente verrebbe suddiviso in parti di dati e funzioni che agirebbero sui dati al fine di ottenere la soluzione per il PDE. I parametri non costanti sarebbero passati come funzioni di qualcos'altro (tempo per esempio) o espressi da un qualche tipo di mutabilità (emulazione della mutabilità, ecc.) Questo approccio mi sembra più semplice supponendo che le operazioni lineari sui dati sarebbero banali.
Per concludere, implementare l'approccio FP sarebbe effettivamente più semplice e più facile da gestire (aggiungere un diverso tipo di componente o un nuovo metodo per risolvere il pde) rispetto a quello OOP?
Vengo da un background C ++ / Fortran, inoltre non sono un programmatore professionista, quindi correggimi su tutto ciò che ho sbagliato.