Haskell에서 간단한 자동 물리 시스템 (진자, 로봇 팔 등)을 시각화하려고합니다. 종종 이러한 시스템은 다음과 같은 방정식으로 설명 할 수 있습니다.
df/dt = c*f(t) + u(t)
여기서 u(t)
'지능형 제어'의 어떤 종류를 나타냅니다. 이러한 시스템은 Functional Reactive Programming 패러다임에 매우 잘 맞는 것으로 보입니다.
그래서 저는 Paul Hudak의 "The Haskell School of Expression"이라는 책을 집어 들고 거기에 제시된 도메인 특정 언어 "FAL"(기능적 애니메이션 언어의 경우)이 실제로 제 간단한 장난감 시스템에 대해 매우 만족스럽게 작동한다는 것을 발견했습니다 (일부 기능, 특히 integrate
, 효율적으로 사용하기에는 너무 게으른 것처럼 보였지만 쉽게 고칠 수 있습니다.)
제 질문은 오늘날 더 발전된 응용 프로그램이나 실용적인 응용 프로그램을 위해 더 성숙하고, 최신이며, 잘 유지되고, 성능이 조정 된 대안은 무엇입니까?
이 위키 페이지 에는 Haskell에 대한 몇 가지 옵션 이 나열되어 있지만 다음 사항에 대해 명확하지 않습니다.
이 프로그래밍 패러다임의 발명가 중 한 명인 Conal Eliott의 프로젝트 인 "reactive"의 상태는 약간 진부 해 보입니다. 나는 그의 코드를 좋아하지만 다른 최신 대안을 시도해야할까요? 구문 / 성능 / 런타임 안정성 측면에서 이들의 주요 차이점은 무엇입니까?
2011 년 의 설문 조사 에서 인용하자면 , 섹션 6, " ... FRP 구현은 여전히 지연 시간 보장이 필요한 도메인에서 효과적으로 사용할 수있을만큼 충분히 효율적이지 않거나 성능을 예측할 수 없습니다 .". 설문 조사는 몇 가지 흥미로운 최적화를 제안하지만 FRP가 15 년 이상 존재한다는 사실을 감안할 때이 성능 문제 는 최소한 몇 년 이내에 해결하기가 매우 또는 본질적으로 어려울 수 있다는 인상을 받았습니다 . 이것이 사실입니까?
설문 조사의 동일한 작성자가 자신의 블로그 에서 "시간 누출"에 대해 이야기 합니다. FRP에만 문제가 있습니까? 아니면 순수하고 엄격하지 않은 언어로 프로그래밍 할 때 일반적으로 발생하는 문제입니까? 성능이 충분하지 않으면 시간이 지남에 따라 FRP 기반 시스템을 안정화하는 것이 너무 어렵다는 사실을 알게 된 적이 있습니까?
아직 연구 수준의 프로젝트입니까? 플랜트 엔지니어, 로봇 공학 엔지니어, 금융 엔지니어 등과 같은 사람들이 실제로 사용하고 있습니까 (자신의 요구에 맞는 언어로)?
개인적으로 Haskell 구현을 선호하지만 다른 제안에 열려 있습니다. 예를 들어, Erlang을 구현하는 것이 특히 재미있을 것입니다. 그러면 지능적이고 적응력이 뛰어난자가 학습 서버 프로세스를 갖는 것이 매우 쉽습니다!