Haskell'de bazı basit otomatik fiziksel sistemleri (sarkaç, robot kollar vb.) Görselleştirmeye çalışıyorum. Genellikle bu sistemler aşağıdaki gibi denklemlerle tanımlanabilir
df/dt = c*f(t) + u(t)
burada u(t)
bir tür 'akıllı kontrolü' temsil eder. Bu sistemler, Fonksiyonel Reaktif Programlama paradigmasına çok iyi uyuyor gibi görünüyor.
Bu yüzden Paul Hudak'ın "Haskell İfade Okulu" kitabını aldım ve orada sunulan alana özgü "FAL" dilinin (İşlevsel Animasyon Dili için) aslında basit oyuncak sistemlerim için oldukça hoş bir şekilde çalıştığını keşfettim (özellikle bazı işlevler integrate
, verimli bir kullanım için biraz tembel görünüyordu, ancak kolayca düzeltilebilir).
Sorum şu, bugün daha gelişmiş ve hatta pratik uygulamalar için daha olgun, güncel, iyi korunmuş, performansa göre ayarlanmış alternatif nedir?
Bu wiki sayfası Haskell için birkaç seçenek listeliyor, ancak aşağıdaki hususlar konusunda net değilim:
Bu programlama paradigmasının mucitlerinden biri olan (anladığım kadarıyla) Conal Eliott'tan "reaktif" projesinin durumu biraz eski görünüyor. Kodunu seviyorum, ama belki daha güncel alternatifleri denemeliyim? Sözdizimi / performans / çalışma zamanı kararlılığı açısından aralarındaki temel fark nedir?
2011'deki bir anketten alıntı yapmak gerekirse , Bölüm 6, " ... FRP uygulamaları, gecikme garantileri gerektiren alanlarda etkin bir şekilde kullanılmak için performans açısından yeterince verimli veya yeterince öngörülebilir değildir ... ". Anket, bazı ilginç olası optimizasyonları önermesine rağmen, FRP'nin 15 yıldan fazla bir süredir orada olduğu gerçeği göz önüne alındığında, bu performans sorununun en azından birkaç yıl içinde çözülmesi çok veya hatta doğası gereği zor bir şey olabileceği izlenimini edindim . Bu doğru mu?
Anketin aynı yazarı, blogunda "zaman sızıntılarından" bahsediyor . Sorun FRP'ye özel mi yoksa saf, katı olmayan bir dilde programlama yaparken genel olarak sahip olduğumuz bir şey mi? Yeterince performanslı değilse, zaman içinde FRP tabanlı bir sistemi stabilize etmenin çok zor olduğunu fark ettiniz mi?
Bu hala araştırma düzeyinde bir proje mi? Tesis mühendisleri, robotik mühendisleri, finans mühendisleri vb. Gibi insanlar onları gerçekten kullanıyor mu (ihtiyaçlarına uygun başka bir dilde)?
Şahsen bir Haskell uygulamasını tercih etmeme rağmen, diğer önerilere açığım. Örneğin, bir Erlang uygulamasına sahip olmak özellikle eğlenceli olurdu - o zaman akıllı, uyarlanabilir, kendi kendine öğrenen bir sunucu sürecine sahip olmak çok kolay olurdu!