Estou prestes a iniciar um projeto de simulação / modelagem. Eu já sei que o OOP é usado para esse tipo de projeto. No entanto, estudar Haskell me fez pensar em usar o paradigma FP para modelar um sistema de componentes. Deixe-me elaborar:
Digamos que eu tenha um componente do tipo A, caracterizado por um conjunto de dados (um parâmetro como temperatura ou pressão, um PDE e algumas condições de contorno, etc.) E um componente do tipo B, caracterizado por um conjunto de dados diferente (diferente ou mesmo parâmetro, PDE diferente e condições de contorno). Suponhamos também que as funções / métodos que serão aplicados em cada componente sejam os mesmos (um método de Galerkin, por exemplo). O estado mutável do objeto seria usado para parâmetros não constantes.
Se eu usasse uma abordagem OOP, criaria dois objetos que encapsulariam os dados de cada tipo, os métodos para resolver o PDE (a herança seria usada aqui para reutilização de código) e a solução para o PDE.
Por outro lado, se eu usasse uma abordagem FP, cada componente seria dividido em partes de dados e nas funções que atuariam sobre os dados para obter a solução para o PDE. Parâmetros não constantes seriam passados como funções de outra coisa (tempo, por exemplo) ou expressos por algum tipo de mutabilidade (emulação de mutabilidade, etc.) Essa abordagem parece mais simples para mim, assumindo que operações lineares em dados seriam triviais.
Para concluir, a implementação da abordagem FP seria realmente mais simples e mais fácil de gerenciar (adicione um tipo diferente de componente ou novo método para resolver o PDE) em comparação com a abordagem OOP?
Eu venho de um background C ++ / Fortran, além de não ser um programador profissional, portanto, corrija-me em qualquer coisa que eu tenha errado.