SIGNAL vs Esterel vs Lustre

时间:2018-05-22 05:08:53

标签: asynchronous concurrency synchronous dataflow

我对数据流和以并发为重的语言非常感兴趣。我已经阅读了这个主题并反复提到SIGNAL,Esterel和Lustre;所以我认为他们是这些领域的杰出球员。但是,他发现的资源中的许多链接已经死亡,而且它们似乎不太容易访问。我设法找到了一些我可以从源代码编译的编译器(Polychrony Toolset for SIGNALColumbia Compiler for Esterel)但是在尝试使用cmake进行编译时他们都遇到了问题。即使教授这些语言的教科书也很难获得。

有了这种方式的背景,我的实际问题是:是否有人真正熟悉这个编程领域?这些语言仍然是大笔交易,还是现在已经“消亡”了?可能它们只适用于价格昂贵的大公司,所以普通的程序员真的不能选择那些语言吗?

我遇到了其他几种数据流/并发范式语言,例如Oz或E,但它们似乎主要用于教育,不适合现实世界的项目。并不是说它们不是令人印象深刻的语言,但它们的实现是有限的,并且不太可能在生产环境中看到它们。有没有人知道这个领域的其他语言,他们可以推荐实际可访问的(有良好的文档,教程和可安装的编译器来实际编码)?或者,任何人都可以澄清一种语言,如Oz或E,并希望表明它们确实足以满足大型现实世界项目的需要吗?

2 个答案:

答案 0 :(得分:0)

您提到的所有语言并不普遍。这意味着他们的编译器和运行时存在错误,社区很窄并且几乎没有帮助,并且与通用库的链接可能会有问题。

我建议使用积极支持的通用语言,如Java,Scala,Kotlin或C ++。它们都有支持异步计算的库,而数据流只不过是支持异步过程调用。您甚至可以开发自己的数据流库。这并不难:我为Java编写了一个只有40千字节源代码的数据流库。

答案 1 :(得分:0)

您尝试过Céu吗?它是Esterel的最新变体,可编译为C。它易于理解,并提供控制流的反应性和并行结构。可以通过在本地C调用前面加上下划线(_printf)来进行本地C调用。

http://ceu-lang.org

另外,请参阅论文“使用Céu进行结构化的同步反应式编程”以获取一个不错的概述。

http://www.ceu-lang.org/chico/ceu_mod15_pre.pdf