Ich bin dabei, ein Simulations- / Modellierungsprojekt zu starten. Ich weiß bereits, dass OOP für diese Art von Projekten verwendet wird. Das Studium von Haskell hat mich jedoch dazu veranlasst, das FP-Paradigma für die Modellierung eines Komponentensystems zu verwenden. Lassen Sie mich näher darauf eingehen:
Angenommen, ich habe eine Komponente vom Typ A, die durch einen Datensatz (einen Parameter wie Temperatur oder Druck, eine PDE und einige Randbedingungen usw.) Gekennzeichnet ist, und eine Komponente vom Typ B, die durch einen anderen Datensatz (unterschiedlich) gekennzeichnet ist oder gleicher Parameter, unterschiedliche PDE und Randbedingungen). Nehmen wir außerdem an, dass die Funktionen / Methoden, die auf jede Komponente angewendet werden, identisch sind (z. B. eine Galerkin-Methode). Der veränderbare Zustand des Objekts würde für nicht konstante Parameter verwendet.
Wenn ich einen OOP-Ansatz verwenden würde, würde ich zwei Objekte erstellen, die die Daten jedes Typs kapseln, die Methoden zum Lösen der PDE (hier würde die Vererbung zur Wiederverwendung von Code verwendet) und die Lösung für die PDE.
Wenn ich andererseits einen FP-Ansatz verwenden würde, würde jede Komponente in Datenteile und die Funktionen zerlegt, die auf die Daten wirken würden, um die Lösung für die PDE zu erhalten. Nicht konstante Parameter würden als Funktionen von etwas anderem (z. B. Zeit) übergeben oder durch eine Art von Veränderlichkeit (Emulation der Veränderlichkeit usw.) Ausgedrückt. Dieser Ansatz erscheint mir einfacher, wenn ich annehme, dass lineare Operationen an Daten trivial wären.
Wäre die Implementierung des FP-Ansatzes tatsächlich einfacher und einfacher zu verwalten (Hinzufügen einer anderen Art von Komponente oder einer neuen Methode zur Lösung des PDE) als die OOP?
Ich habe einen C ++ / Fortran-Hintergrund und bin kein professioneller Programmierer. Korrigieren Sie mich daher in allen Fällen, in denen ich mich geirrt habe.