我今天在slashdot上读到了this故事,他们宣布了微软的一种新的并行编程语言。
这种新的编程语言是什么?它说并行编程。但它会成为 MPI、PVM、OpenMP 和类似并行库/框架的替代/替代品吗?
有什么想法吗?
Axum 是一种旨在使安全且高性能的并发编程变得更简单的语言。 该语言建模的概念避免了通过使用
lock
(在 C# 中)、Monitor
、ReaderWriterLockSlim
等来明确线程同步的需要...
可以说,Axum 中的许多想法自 1986 年以来一直采用“Erlang 编程语言”——一种由瑞典研究人员为爱立信设计的语言,可在电话交换机上运行,因此支持高并发下的海量吞吐量负载是如此重要,因此被设计到语言中。 虽然 Axum 中的许多想法并不新鲜,但它们对于 .NET 和 CLR 来说无疑是新的(至少在语言级别)。 包含其中一些想法的现有 .NET 库是:
Axum 与上述库的不同之处在于,它在语言级别包含对这些概念的支持,而不仅仅是通过使用库。 Axum 编译器不仅处理 Axum 语言,还处理 C# 语言本身的一些实验性扩展;即
isolated
和
readonly
关键字。向语言添加新功能并不是一件可以掉以轻心的事情。 Spec#
是在 MSR 开发的另一种 C# 超集语言(与并发性无关)。 从 .NET 4.0 中对Code Contracts的支持可以看出,Microsoft 决定倾向于添加新的 API 而不是新的语言扩展(这有利于 CLR 上所有语言的用户。)但是就 Axum 而言,有C# 3.0 语言不够丰富,无法表达真正安全的并发编程所需的类型及其成员的不变性约束。 涉足 Erlang 并喜欢我所看到的,我对 Axum 可能带我们去往的地方感到非常兴奋。 该团队提出的一些 C# 语言扩展对于常规 C# 项目也很有用。
最后我想指出,Erlang 不仅仅是一个好的并发模型。 Erlang 是一种严格的函数式编程语言。 它支持热插拔代码,这意味着系统可以在不停止的情况下升级(电话交换机或任何其他 24x7 系统的理想功能)。 我听到英国一家大型电信组织的一份报告,该组织运行了一年的交换机,但在这段时间内仅未能路由四个呼叫。 Erlang 还有其他特性,例如远程异常处理。