用於並發程式的 .NET 語言
這可能是其他人看到的一個問題,但我正在嘗試找到一種為並發程式設計(或支持語言支持)的語言,該語言可以在 .net 平台上執行。
我一直在使用 erlang 進行輔助開發,以了解該語言,並且喜歡獲得穩定的並發甚至分佈式系統是多麼容易。它把我帶到了 scala,它也有一個很好的使用 actor 的系統,但是 scala.net 目前似乎沒有這個功能(當然這是一個並發系統與分佈式系統)。我正在研究的兩種 .net 語言是 Axum 和 F#。
這些是我唯一的選擇嗎?還有其他人嗎?而且,如果它們是唯一的選擇,那麼它們各自的優點/缺點是什麼?
Axum 是一個研究項目。一個真正的研究項目,只有來自它的想法才會最終變成產品。(與整體產品化的 F# 不同。)我什至不確定許可證是否允許使用它來開發生產應用程序。
F# 是一個不錯的選擇。
Clojure 也可以在 CLI 上執行,也是一個不錯的選擇。
Scala 的 CLI 埠目前正在復活過程中(實際上是由微軟提供的官方資助),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”。