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