这可能是其他人已经看到的一个问题,但我正在尝试寻找一种专为(或支持)并发编程而设计的语言,该语言可以在 .net 平台上运行。
我一直在 erlang 中进行辅助开发,以了解该语言,并且喜欢建立一个稳定的并发甚至分布式系统是多么容易。它让我使用了 scala,它也有一个使用 actor 的不错的系统,但是 scala.net 目前似乎没有这个功能(当然这是一个并发系统与分布式系统)。我在看的两种 .net 语言是 Axum 和 F#。
这些是我唯一的选择吗?还有其他人吗?而且,如果它们是唯一的选择,那么它们各自的优点/缺点是什么?
最佳答案
Axum 是一个研究项目。一个真正的研究项目,只有来自它的想法最终会出现在产品中。 (与作为整体产品化的 F# 不同。)我什至不确定许可证是否允许使用它来开发生产应用程序。
F# 是一个不错的选择。
Clojure 也可以在 CLI 上运行,也是一个不错的选择。
Scala 的 CLI 端口目前正在复活(实际上是由 Microsoft 提供官方资金),Scala 的 Actor 库(包括内置的和 Akka)都非常好。
关于上面@wmeyer 的评论:Scala 本身没有任何分布式编程的规定。 (Clojure 也没有。)两者通常都依赖于为此目的而存在的无数 Java 框架,例如 Terracotta。然而,Akka 确实有用于分布式编程的远程 Actor,并且 Akka 与内置的 Scala Actor 库在很大程度上与 API 兼容,这允许平滑过渡。
Erlang 会很酷。 Kresten Krab Thorup 目前正在研究 Erjang,这是 JVM 上的 Erlang 实现,他取得了一些非常令人印象深刻的结果:在 HotSpot 上运行,Erjang 的扩展性与 BEAM 相当,有时甚至更好。例如,在具有 10000 个进程的(著名的)进程环基准测试中,Erjang 的启动速度仅比 BEAM 慢一点,但是当您重复运行几次并且 JIT 启动时,它会在大约 3 次运行后超过 BEAM(并且奇怪的是, BEAM 在 4 次运行后开始减速)。
我很确定您可以在 DLR 和 TPL 上构建一个性能同样出色的“#rlang”。
关于用于并发编程的 .NET 语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3774365/