Próbuję wyobrazić sobie kilka prostych, automatycznych układów fizycznych (takich jak wahadło, ramiona robotów itp.) W Haskell. Często systemy te można opisać równaniami takimi jak
df/dt = c*f(t) + u(t)
gdzie u(t)
reprezentuje rodzaj „inteligentnej kontroli”. Systemy te bardzo dobrze pasują do paradygmatu programowania funkcjonalnego reaktywnego.
Więc złapałem książkę „Haskell Szkołę wyrażenie” przez Paula Hudák, a okazało się, że domena język „FAL” (dla Functional Animacja Język) przedstawił tam faktycznie działa całkiem przyjemnie dla moich prostych systemów zabawki (choć niektórych funkcji, zwłaszcza integrate
, wydawał się nieco zbyt leniwy, aby można go było efektywnie wykorzystać, ale łatwo go naprawić).
Moje pytanie brzmi: jaka jest obecnie bardziej dojrzała, aktualna, dobrze utrzymana, dostrojona pod kątem wydajności alternatywa dla bardziej zaawansowanych, a nawet praktycznych zastosowań?
Ta strona wiki zawiera kilka opcji dla Haskell, ale nie jestem pewien co do następujących aspektów:
Status „reaktywny”, projekt Conala Eliotta, który jest (jak rozumiem) jednym z wynalazców tego paradygmatu programowania, wygląda na nieco przestarzały. Uwielbiam jego kod, ale może powinienem wypróbować inne, bardziej aktualne alternatywy? Jaka jest główna różnica między nimi pod względem składni / wydajności / stabilności czasu wykonywania?
Cytując z ankiety przeprowadzonej w 2011 r., Sekcja 6: „ … implementacje FRP nadal nie są wystarczająco wydajne lub przewidywalne pod względem wydajności, aby można je było skutecznie wykorzystać w domenach, które wymagają gwarancji opóźnienia… ”. Chociaż ankieta sugeruje kilka interesujących możliwych optymalizacji, biorąc pod uwagę fakt, że FRP istnieje od ponad 15 lat, mam wrażenie, że ten problem z wydajnością może być czymś bardzo lub nawet z natury trudnym do rozwiązania przynajmniej w ciągu kilku lat. Czy to prawda?
Ten sam autor ankiety na swoim blogu mówi o „wyciekach czasu” . Czy problem dotyczy wyłącznie FRP, czy jest to coś, z czym mamy do czynienia podczas programowania w czystym, nieostrym języku? Czy kiedykolwiek okazało się, że ustabilizowanie systemu opartego na FRP w czasie było zbyt trudne, jeśli nie było wystarczająco wydajne?
Czy to nadal projekt na poziomie badawczym? Czy ludzie tacy jak inżynierowie fabryk, inżynierowie robotyki, inżynierowie finansowi itp. Faktycznie ich używają (w jakimkolwiek języku, który odpowiada ich potrzebom)?
Chociaż osobiście wolę implementację Haskell, jestem otwarty na inne sugestie. Na przykład, byłoby szczególnie przyjemnie mieć implementację Erlanga - wówczas bardzo łatwo byłoby mieć inteligentny, adaptacyjny, samouczący się proces serwera!