asynchronous - SIGNAL vs Esterel vs Lustre

标签 asynchronous concurrency synchronous dataflow

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

有了这样的背景,我的实际问题是:有人真正熟悉这个编程领域吗?这些语言仍然很重要,还是已经“消亡”了?难道它们只是以高昂的价格提供给大公司,所以普通程序员实际上无法选择这些语言吗?

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

最佳答案

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

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

关于asynchronous - SIGNAL vs Esterel vs Lustre,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50460177/

相关文章:

spring - Spring 中的 Hibernate Multi-Tenancy 和异步执行(通过 @Async、@Scheduled 等)

java - 使用 Java 创建异常的迭代器问题

jquery - 定义 jQuery.each() 循环步骤之间的超时

c# - 构造函数中类字段的长时间运行初始化

node.js - 异步等待在 forEach 中不起作用

jquery - 如何从 Ajax 请求中获取回调函数的值

javascript - Express (sequelize) 导出异步函数

mysql - 使用存储过程并发访问MySQL数据库

Java多线程: redundant to use java. util.concurrent类中的同步方法?

qt - 在主 Qt 事件循环中执行冗长的阻塞操作时可靠地显示 "please wait"对话框