我试图想象哈斯克尔一些简单的自动物理系统(如钟摆,机器人手臂等)。 这些系统通常可以用
df/dt = c*f(t) + u(t)
其中 u(t)
代表某种“智能控制”。这些系统看起来非常适合函数式反应型编程模式。
所以我拿了 Paul Hudak 的《 Haskell 表达学校》
并且发现那里提供的领域特定语言“ FAL”(功能性动画语言)实际上对我的简单玩具系统非常有效(尽管一些功能,特别是 integrate
,似乎有点懒惰,不能有效使用,但是很容易修复)。
我的问题是,对于当今更高级、甚至更实际的应用程序,哪种方法更成熟、更新、维护良好、性能调优?
这个 wiki 页面 列出了 Haskell 的几个选项,但是我不清楚以下几个方面:
“被动反应”项目的状态看起来有点过时,该项目由科纳尔•艾略特(Conal Eliott)设计,据我所知,艾略特是这种编程范型的发明者之一。我喜欢他的代码,但也许我应该尝试其他更新的替代方案?就语法/性能/运行时稳定性而言,它们之间的主要区别是什么?
引用2011年 调查的第6节“ ... FRP 实现在性能上仍然不够有效或不够可预测,无法有效地用于需要延迟保证的领域..。”。尽管调查提出了一些有趣的可能的优化,考虑到 FRP 已经存在超过15年的事实,我得到的印象是,这个性能问题可能是 非常或者甚至内在难以解决,至少在几年内。这是真的吗?
该调查的同一作者在他的 博客中谈到了“时间泄漏”。这个问题是 FRP 独有的,还是我们在用纯粹的、非严格的语言编程时通常会遇到的问题?你是否曾经发现,如果性能不够好,随着时间的推移很难稳定一个基于 FRP 的系统?
这仍然是一个研究水平的项目吗?工厂工程师、机器人工程师、金融工程师等人是否真的在使用它们(用任何符合他们需要的语言) ?
虽然我个人比较喜欢 Haskell 实现,但我也欢迎其他建议。例如,如果有一个 Erlang 的实现,那将是非常有趣的——这样就很容易有一个智能的、自适应的、自学习的服务器过程!