Я пытаюсь визуализировать некоторые простые автоматические физические системы (такие как маятник, робот-оружие и т.д.) в Haskell. Часто эти системы могут быть описаны уравнениями, такими как
df/dt = c*f(t) + u(t)
где u(t)
представляет собой своего рода "интеллектуальное управление". Эти системы очень хорошо подходят в парадигме функционального реактивного программирования.
Итак, я схватил книгу "Школа выражения Хаскеля" Пауля Худака,
и обнаружил, что представленный там специфический для домена язык "FAL" (для языка функциональной анимации) действительно работает для моих простых игрушечных систем (хотя некоторые функции, особенно integrate
), были слишком ленивы для эффективного использования, но легко фиксируется).
Мой вопрос: какая более зрелая, современная, ухоженная, настроенная на производительность альтернатива для более продвинутых или даже практических приложений сегодня?
Эта страница wiki содержит несколько опций для Haskell, но я не понимаю следующих аспектов:
-
Статус "реактивный", проект от Conal Eliott, который (как я понимаю), один из авторов этой парадигмы программирования, выглядит немного устаревшим. Мне нравится его код, но, может быть, мне стоит попробовать другие более современные альтернативы? Какое основное различие между ними, с точки зрения синтаксиса/производительности/стабильности выполнения?
-
Чтобы привести цитату из survey в разделе 6 раздела "... Реализации FRP все еще недостаточно эффективны или достаточно предсказуемы в производительности эффективно использоваться в доменах, требующих гарантий задержек...". В целом исследование предлагает некоторые интересные возможные оптимизации, учитывая тот факт, что FRP существует уже более 15 лет, создается впечатление, что эта проблема производительности может быть чем-то очень или даже неотъемлемо трудным для решения, по крайней мере, в течение нескольких лет. Это правда?
-
Тот же автор исследования говорит о "утечке времени" в своем blog. Является ли проблема уникальной для FRP или что-то, что мы обычно имеем при программировании на чистом, нестрогом языке? Вы когда-либо находили, что слишком сложно стабилизировать систему на основе FRP с течением времени, если она недостаточно эффективна?
-
Является ли это еще исследовательским проектом? Являются ли люди такими инженерами-инженерами, инженерами-роботологами, финансовыми инженерами и т.д., Фактически использующими их (на языке whaterver, который соответствует их потребностям)?
Хотя я лично предпочитаю реализацию Haskell, я открыт для других предложений. Например, было бы особенно интересно иметь реализацию Erlang - тогда было бы очень легко иметь интеллектуальный, адаптивный, самообучающийся серверный процесс!