Sto cercando di visualizzare alcuni semplici sistemi fisici automatici (cose come pendolo, bracci robotici, ecc.) In Haskell. Spesso questi sistemi possono essere descritti da equazioni come
df/dt = c*f(t) + u(t)
dove u(t)
rappresenta una sorta di "controllo intelligente". Questi sistemi sembrano adattarsi molto bene al paradigma della programmazione reattiva funzionale.
Così ho preso il libro "The Haskell School of Expression" di Paul Hudak e ho scoperto che il linguaggio specifico del dominio "FAL" (per Functional Animation Language) qui presentato funziona in realtà abbastanza piacevolmente per i miei semplici sistemi giocattolo (sebbene alcune funzioni, in particolare integrate
, sembrava essere un po 'troppo pigro per un uso efficiente, ma facilmente risolvibile).
La mia domanda è: qual è l'alternativa più matura, aggiornata, ben mantenuta e ottimizzata per le prestazioni per applicazioni più avanzate o anche pratiche oggi?
Questa pagina wiki elenca diverse opzioni per Haskell, ma non sono chiaro sui seguenti aspetti:
Lo status di "reattivo", il progetto di Conal Eliott che è (a quanto ho capito) uno degli inventori di questo paradigma di programmazione, sembra un po 'stantio. Adoro il suo codice, ma forse dovrei provare altre alternative più aggiornate? Qual è la differenza principale tra loro, in termini di sintassi / prestazioni / stabilità del runtime?
Per citare un sondaggio nel 2011, sezione 6, " ... le implementazioni FRP non sono ancora abbastanza efficienti o abbastanza prevedibili in termini di prestazioni per essere utilizzate efficacemente in domini che richiedono garanzie di latenza ... ". Anche se il sondaggio suggerisce alcune interessanti ottimizzazioni possibili, dato che FRP è lì da più di 15 anni, ho l'impressione che questo problema di prestazioni possa essere qualcosa di molto o addirittura intrinsecamente difficile da risolvere almeno entro pochi anni. È vero?
Lo stesso autore dell'indagine parla di "perdite di tempo" nel suo blog . Il problema è unico per FRP o qualcosa che generalmente abbiamo quando programmiamo in un linguaggio puro e non rigoroso? Hai mai trovato semplicemente troppo difficile stabilizzare un sistema basato su FRP nel tempo, se non abbastanza performante?
È ancora un progetto a livello di ricerca? Le persone come gli ingegneri di impianti, gli ingegneri di robotica, gli ingegneri finanziari, ecc. Li stanno effettivamente usando (in un linguaggio che si adatta alle loro esigenze)?
Anche se personalmente preferisco un'implementazione Haskell, sono aperto ad altri suggerimenti. Ad esempio, sarebbe particolarmente divertente avere un'implementazione Erlang --- sarebbe quindi molto facile avere un processo del server intelligente, adattivo e ad autoapprendimento!