Я намагаюся візуалізувати деякі прості автоматичні фізичні системи (такі як маятник, маніпулятори роботів тощо) у Haskell. Часто ці системи можна описати рівняннями типу
df/dt = c*f(t) + u(t)
де u(t)
являє собою якийсь "інтелектуальний контроль". Ці системи, схоже, дуже добре вписуються в парадигму функціонального реактивного програмування.
Так що я схопив книгу «Haskell школа вираження» Пол Hudák, і виявив , що домен конкретного мови «FAL» (для функціонального Animation мови) представлені там на самому ділі працює досить pleasently для моїх простих іграшок систем (хоча деякі функції, в зокрема integrate
, здавалося, занадто лінивий для ефективного використання, але легко виправити).
Моє запитання полягає в тому, що є сьогодні більш дозрілою, сучасною, доглянутою та налаштованою на ефективність альтернативою для більш просунутих чи навіть практичних програм сьогодні?
На цій вікі-сторінці перелічено декілька варіантів Haskell, але мені незрозумілі наступні аспекти:
Статус "реактивного", проект Коналя Еліотта, який (як я розумію) є одним із винахідників цієї парадигми програмування, виглядає дещо застарілим. Мені подобається його код, але, можливо, мені слід спробувати інші більш сучасні альтернативи? Яка основна різниця між ними, з точки зору синтаксису / продуктивності / стабільності виконання?
Процитувавши опитування 2011 року, розділ 6, " ... Реалізації FRP все ще недостатньо ефективні або передбачувані щодо ефективності, щоб ефективно використовувати їх у доменах, які вимагають гарантій затримки ... ". Хоча опитування пропонує кілька цікавих можливих оптимізацій, враховуючи той факт, що FRP існує більше 15 років, у мене складається враження, що ця проблема продуктивності може бути чимось дуже або навіть за своєю суттю важкою для вирішення принаймні протягом декількох років. Це правда?
Той самий автор опитування розповідає про "витоки часу" у своєму блозі . Проблема є унікальною для FRP чи чогось у нас, як правило, при програмуванні на чистій, несуворій мові? Вам коли-небудь було занадто складно стабілізувати систему на основі FRP з часом, якщо вона недостатньо ефективна?
Це все ще проект наукового рівня? Чи люди, такі як інженери заводів, інженери робототехніки, фінансові інженери тощо, насправді ними користуються (іншою мовою, яка відповідає їхнім потребам)?
Хоча я особисто віддаю перевагу реалізації Haskell, я відкритий для інших пропозицій. Наприклад, було б особливо цікаво мати реалізацію Erlang - тоді було б дуже легко мати розумний, адаптивний процес самонавчання сервера!