Estou tentando visualizar alguns sistemas físicos automáticos simples (coisas como pêndulo, braços de robô, etc.) em Haskell. Muitas vezes, esses sistemas podem ser descritos por equações como
df/dt = c*f(t) + u(t)
onde u(t)
representa algum tipo de 'controle inteligente'. Esses sistemas parecem se encaixar muito bem no paradigma da Programação Reativa Funcional.
Então eu peguei o livro "The Haskell School of Expression" de Paul Hudak, e descobri que a linguagem de domínio específico "FAL" (para Functional Animation Language) apresentada lá realmente funciona muito bem para meus sistemas de brinquedo simples (embora algumas funções, notavelmente integrate
, parecia ser um pouco preguiçoso para um uso eficiente, mas facilmente corrigível).
Minha pergunta é: qual é a alternativa mais madura, atualizada, bem mantida e ajustada para o desempenho para aplicações mais avançadas ou mesmo práticas hoje?
Esta página wiki lista várias opções para Haskell, mas não tenho certeza sobre os seguintes aspectos:
O status de "reativo", o projeto de Conal Eliott que é (como eu o entendo) um dos inventores deste paradigma de programação, parece um pouco obsoleto. Eu amo seu código, mas talvez eu devesse tentar outras alternativas mais atualizadas? Qual é a principal diferença entre eles, em termos de sintaxe / desempenho / estabilidade de tempo de execução?
Para citar uma pesquisa em 2011, Seção 6, " ... as implementações de FRP ainda não são eficientes ou previsíveis o suficiente em desempenho para serem usadas com eficácia em domínios que exigem garantias de latência ... ". Embora a pesquisa sugira algumas possíveis otimizações interessantes, dado o fato de que o FRP existe há mais de 15 anos, tenho a impressão de que esse problema de desempenho pode ser algo muito ou mesmo inerentemente difícil de resolver pelo menos em alguns anos. Isso é verdade?
O mesmo autor da pesquisa fala sobre "vazamentos de tempo" em seu blog . O problema é exclusivo do FRP ou algo que geralmente enfrentamos ao programar em uma linguagem pura e não estrita? Você já achou muito difícil estabilizar um sistema baseado em FRP ao longo do tempo, se não apresentar desempenho suficiente?
Este ainda é um projeto de nível de pesquisa? As pessoas, como engenheiros de fábrica, engenheiros de robótica, engenheiros financeiros, etc., estão realmente os usando (em qualquer linguagem que atenda às suas necessidades)?
Embora eu pessoalmente prefira uma implementação de Haskell, estou aberto a outras sugestões. Por exemplo, seria particularmente divertido ter uma implementação Erlang --- seria muito fácil ter um processo de servidor inteligente, adaptável e de autoaprendizagem!