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