【发布时间】:2012-10-31 18:31:27
【问题描述】:
我试图在 Haskell 中可视化一些简单的自动物理系统(例如钟摆、机械臂等)。 通常这些系统可以用如下等式来描述
df/dt = c*f(t) + u(t)
其中u(t) 代表某种“智能控制”。这些系统看起来非常适合功能响应式编程范式。
于是我拿起了 Paul Hudak 的《哈斯克尔表达学派》一书,
并发现那里提供的领域特定语言“FAL”(用于功能动画语言)实际上对于我的简单玩具系统非常有效(尽管某些功能,特别是integrate,对于有效使用来说似乎有点懒惰,但是容易修复)。
我的问题是,对于当今更高级甚至实际的应用程序,有什么更成熟、最新、维护良好、性能调整的替代方案?
This wiki page 列出了 Haskell 的几个选项,但我不清楚以下几个方面:
“反应式”的状态,Conal Eliott 的项目(据我了解)是这种编程范式的发明者之一,看起来有点陈旧。我喜欢他的代码,但也许我应该尝试其他更新的替代方案?在语法/性能/运行时稳定性方面,它们之间的主要区别是什么?
引用 2011 年 survey 的第 6 节,“... FRP 实现在性能方面仍然不够高效或可预测,无法在需要延迟保证的领域中有效使用.. .”。尽管调查提出了一些有趣的可能优化,但考虑到 FRP 已经存在超过 15 年这一事实,我的印象是,这个性能问题可能是非常,甚至至少在内部很难解决一些年。这是真的吗?
该调查的同一作者在其blog 中谈到了“时间泄漏”。这个问题是 FRP 独有的,还是我们在使用纯非严格语言编程时通常遇到的问题?如果性能不够好,您是否曾经发现很难随着时间的推移稳定基于 FRP 的系统?
这仍然是一个研究级项目吗?工厂工程师、机器人工程师、金融工程师等人是否真的在使用它们(以适合他们需要的任何语言)?
虽然我个人更喜欢 Haskell 实现,但我愿意接受其他建议。例如,拥有一个 Erlang 实现会特别有趣 --- 这样就很容易拥有一个智能、自适应、自学习的服务器进程!
【问题讨论】:
标签: haskell functional-programming erlang reactive-programming