我一直很想知道是否可以将 Haskell 的强大功能应用于嵌入式实时世界,并且在谷歌搜索中找到了Atom包。我假设在复杂的情况下,代码可能具有所有经典的 C 错误 - 崩溃、内存损坏等,然后需要追溯到导致它们的原始 Haskell 代码。所以,这是问题的第一部分:“如果你有使用 Atom 的经验,你是如何处理调试编译 C 代码中的低级错误并在 Haskell 原始代码中修复它们的任务的?”
我搜索了更多关于 Atom 的示例,这篇博文提到了生成的 C 代码 22KLOC(显然没有代码:),包含的示例是一个玩具。this和this引用有一些更实用的代码,但这就是结束的地方。我在主题中加上“相当大”的原因是,如果你能分享你在 300KLOC+ 范围内使用生成的 C 代码的经验,我最感兴趣。
由于我是 Haskell 新手,显然由于我未知的未知,我可能没有找到其他方法,因此将非常感谢该领域的任何其他自我教育指针 - 这是问题的第二部分 - “在 Haskell 中进行实时开发的其他一些实用方法(如果)是什么?”。如果多核也在图片中,那是一个额外的加分:-)
(关于为此目的使用 Haskell 本身:从我在这篇博客文章中读到的内容,Haskell 中的垃圾收集和惰性使其在调度方面相当不确定,但可能在两年内发生了一些变化。关于 SO的真实世界 Haskell 编程问题是我能找到的最接近这个主题的)
注意:上面的“实时”会更接近于“硬实时”——我很好奇是否可以确保主任务不执行时的暂停时间低于 0.5 毫秒。