什么是这种新的Axum编程语言?

时间:2021-07-03 15:03:57

I read this story on slashdot today where they announce a new parallel programming language by Microsoft.

我今天在slashdot上阅读了这个故事,他们宣布了微软新的并行编程语言。

What is this new programming language about? It says Parallel Programming. But is it going to be an alternative/replacement for MPI, PVM, OpenMP and similar parallel libraries/frameworks?

这种新的编程语言是关于什么的?它说并行编程。但它是否会成为MPI,PVM,OpenMP和类似并行库/框架的替代/替代品?

Any thoughts?

4 个解决方案

#1


Axum is a language structured in such a way as to make safe and performant concurrent programming simpler. The concepts modelled by the language avoid the need to make thread synchronisation explicit via the use of lock (in C#), Monitor, ReaderWriterLockSlim, etc...

Axum是一种语言结构,可以使安全和高性能的并发编程更简单。由该语言建模的概念避免了通过使用lock(在C#中),Monitor,ReaderWriterLockSlim等来明确线程同步的需要......

It could be argued that many of the ideas within Axum have been in the Erlang programming language since 1986 -- a language designed by researchers working in Sweden for Ericsson to run on telephone switches, and hence support for massive throughput under highly concurrent load was so essential it was designed into the language. Whilst many of the ideas in Axum aren't new, they are certainly new to .NET and the CLR (at least at the language level.)

可以说,自1986年以来,Axum中的许多想法都采用了Erlang编程语言 - 这是一种由瑞典工作的研究人员设计的一种语言,用于爱立信在电话交换机上运行,​​因此在高度并发负载下支持大量吞吐量是如此必不可少的是它被设计成语言。虽然Axum中的许多想法都不是新的,但它们对于.NET和CLR来说无疑是新手(至少在语言层面上是这样)。

Existing .NET libraries that contain some of these ideas are:

包含以下一些想法的现有.NET库是:

Like Erlang, message passing is a central concept in Axum. Like Erlang, Axum is largely indifferent as to whether the recipient of the message is located in-process or remotely. Axum currently provides integration with WCF.

与Erlang一样,消息传递是Axum的核心概念。与Erlang一样,Axum对于消息的接收者是位于进程中还是远程位置基本无动于衷。 Axum目前提供与WCF的集成。

Axum differs from the libraries mentioned above in that it includes support for these concepts at the language level, not just via use of libraries. The Axum compiler deals not only with the Axum language, but also with some experimental extensions to the C# language itself; namely the isolated and readonly keywords.

Axum与上面提到的库不同,它在语言层面包括对这些概念的支持,而不仅仅是通过使用库。 Axum编译器不仅处理Axum语言,还处理C#语言本身的一些实验扩展;即孤立和只读的关键字。

Adding new features to a language is not something to be taken lightly. Spec# is another C#-superset language developed at MSR (unrelated to concurrency). As seen with the support for Code Contracts in .NET 4.0, Microsoft has decided to favour adding a new API rather than new language extensions (this benefits users of all languages on the CLR.) However in the case of Axum, there is not enough richness in the C# 3.0 language to express the kinds of immutability constraints required of types and their members for truly safe concurrent programming.

为语言添加新功能不是一件容易的事情。 Spec#是MSR开发的另一种C#-superset语言(与并发无关)。正如在.NET 4.0中支持代码约定所看到的那样,Microsoft决定支持添加新的API而不是新的语言扩展(这有利于CLR上所有语言的用户。)但是在Axum的情况下,还不够C#3.0语言的丰富性表达了类型及其成员所需的不可变性约束,以实现真正安全的并发编程。

Having dabbled in Erlang and liking what I saw, I'm very excited about where Axum might take us. Some of the extensions to the C# language proposed by the team are useful for regular C# projects too.

在涉及Erlang并喜欢我所看到的东西之后,我对Axum可能带给我们的地方感到非常兴奋。团队提出的对C#语言的一些扩展对常规C#项目也很有用。

Finally I'd like to point out that there's more to Erlang than just a good concurrency model. Erlang is a strict functional programming language. It supports hot swappable code, meaning that a system can be upgraded without it ever being stopped (a desirable feature of a telephone switch or any other 24x7 system). I heard a report from a large British telecommunications organisation running a switch for a year and only failing to route four calls in that time. Erlang has other characteristics such as remote exception handling as well.

最后,我想指出Erlang不仅仅是一个好的并发模型。 Erlang是一种严格的函数式编程语言。它支持热插拔代码,这意味着系统可以升级而不会被停止(电话交换机或任何其他24x7系统的理想功能)。我听到一家大型英国电信组织的报告,该组织运行一年的交换机,但在那段时间内没有拨打四个电话。 Erlang还具有其他特性,例如远程异常处理。

#2


Looks to me like you hit the nail on the head in your question. Looks like the Microsoft.NET alternative to some of the languages/frameworks you mentioned. Take a look at the Programmer's Guide here:

看起来像你在你的问题中击中头部的钉子。看起来像Microsoft.NET替代您提到的一些语言/框架。在这里查看程序员指南:

Axum Programmer's Guide

Axum程序员指南

Looks like it should play nicely with the rest of the .NET Framework. It might open up some interesting C#/F#/Axum interactions...

看起来它应该与.NET Framework的其余部分很好地配合。它可能会打开一些有趣的C#/ F#/ Axum互动......

#3


Axum is the new name for Microsoft's "Maestro" language, which originally was a research language for parallel programming but has been "promoted" to a first-class language just recently.

Axum是微软“Maestro”语言的新名称,该语言最初是并行编程的一种研究语言,但最近才被“提升”为一流的语言。

A bit more information on Channel 9 here:

关于第9频道的更多信息:

Maestro: A Managed Domain Specific Language For Concurrent Programming

Maestro:并发编程的托管域特定语言

... and on the official Axum team blog.

......以及官方的Axum团队博客。

#4


Here's an update on the state of Axum. Apparrently some of the concurrency features will no longer be part of C#/VB.Net.

这是Axum状态的最新消息。显然,一些并发功能将不再是C#/ VB.Net的一部分。

...the concepts around safe parallelism and agent-based programming were seen by many as too far outside the mainstream to be adopted now in languages like C# and VB. The idea of Axum was to not force these concepts on general-purpose languages, so those of us who have work on Axum are not surprised.

...许多人认为安全并行和基于代理的编程的概念已经超出主流,现在在C#和VB等语言中被采用。 Axum的想法是不强迫这些概念用于通用语言,所以我们这些在Axum工作的人并不感到惊讶。

#1


Axum is a language structured in such a way as to make safe and performant concurrent programming simpler. The concepts modelled by the language avoid the need to make thread synchronisation explicit via the use of lock (in C#), Monitor, ReaderWriterLockSlim, etc...

Axum是一种语言结构,可以使安全和高性能的并发编程更简单。由该语言建模的概念避免了通过使用lock(在C#中),Monitor,ReaderWriterLockSlim等来明确线程同步的需要......

It could be argued that many of the ideas within Axum have been in the Erlang programming language since 1986 -- a language designed by researchers working in Sweden for Ericsson to run on telephone switches, and hence support for massive throughput under highly concurrent load was so essential it was designed into the language. Whilst many of the ideas in Axum aren't new, they are certainly new to .NET and the CLR (at least at the language level.)

可以说,自1986年以来,Axum中的许多想法都采用了Erlang编程语言 - 这是一种由瑞典工作的研究人员设计的一种语言,用于爱立信在电话交换机上运行,​​因此在高度并发负载下支持大量吞吐量是如此必不可少的是它被设计成语言。虽然Axum中的许多想法都不是新的,但它们对于.NET和CLR来说无疑是新手(至少在语言层面上是这样)。

Existing .NET libraries that contain some of these ideas are:

包含以下一些想法的现有.NET库是:

Like Erlang, message passing is a central concept in Axum. Like Erlang, Axum is largely indifferent as to whether the recipient of the message is located in-process or remotely. Axum currently provides integration with WCF.

与Erlang一样,消息传递是Axum的核心概念。与Erlang一样,Axum对于消息的接收者是位于进程中还是远程位置基本无动于衷。 Axum目前提供与WCF的集成。

Axum differs from the libraries mentioned above in that it includes support for these concepts at the language level, not just via use of libraries. The Axum compiler deals not only with the Axum language, but also with some experimental extensions to the C# language itself; namely the isolated and readonly keywords.

Axum与上面提到的库不同,它在语言层面包括对这些概念的支持,而不仅仅是通过使用库。 Axum编译器不仅处理Axum语言,还处理C#语言本身的一些实验扩展;即孤立和只读的关键字。

Adding new features to a language is not something to be taken lightly. Spec# is another C#-superset language developed at MSR (unrelated to concurrency). As seen with the support for Code Contracts in .NET 4.0, Microsoft has decided to favour adding a new API rather than new language extensions (this benefits users of all languages on the CLR.) However in the case of Axum, there is not enough richness in the C# 3.0 language to express the kinds of immutability constraints required of types and their members for truly safe concurrent programming.

为语言添加新功能不是一件容易的事情。 Spec#是MSR开发的另一种C#-superset语言(与并发无关)。正如在.NET 4.0中支持代码约定所看到的那样,Microsoft决定支持添加新的API而不是新的语言扩展(这有利于CLR上所有语言的用户。)但是在Axum的情况下,还不够C#3.0语言的丰富性表达了类型及其成员所需的不可变性约束,以实现真正安全的并发编程。

Having dabbled in Erlang and liking what I saw, I'm very excited about where Axum might take us. Some of the extensions to the C# language proposed by the team are useful for regular C# projects too.

在涉及Erlang并喜欢我所看到的东西之后,我对Axum可能带给我们的地方感到非常兴奋。团队提出的对C#语言的一些扩展对常规C#项目也很有用。

Finally I'd like to point out that there's more to Erlang than just a good concurrency model. Erlang is a strict functional programming language. It supports hot swappable code, meaning that a system can be upgraded without it ever being stopped (a desirable feature of a telephone switch or any other 24x7 system). I heard a report from a large British telecommunications organisation running a switch for a year and only failing to route four calls in that time. Erlang has other characteristics such as remote exception handling as well.

最后,我想指出Erlang不仅仅是一个好的并发模型。 Erlang是一种严格的函数式编程语言。它支持热插拔代码,这意味着系统可以升级而不会被停止(电话交换机或任何其他24x7系统的理想功能)。我听到一家大型英国电信组织的报告,该组织运行一年的交换机,但在那段时间内没有拨打四个电话。 Erlang还具有其他特性,例如远程异常处理。

#2


Looks to me like you hit the nail on the head in your question. Looks like the Microsoft.NET alternative to some of the languages/frameworks you mentioned. Take a look at the Programmer's Guide here:

看起来像你在你的问题中击中头部的钉子。看起来像Microsoft.NET替代您提到的一些语言/框架。在这里查看程序员指南:

Axum Programmer's Guide

Axum程序员指南

Looks like it should play nicely with the rest of the .NET Framework. It might open up some interesting C#/F#/Axum interactions...

看起来它应该与.NET Framework的其余部分很好地配合。它可能会打开一些有趣的C#/ F#/ Axum互动......

#3


Axum is the new name for Microsoft's "Maestro" language, which originally was a research language for parallel programming but has been "promoted" to a first-class language just recently.

Axum是微软“Maestro”语言的新名称,该语言最初是并行编程的一种研究语言,但最近才被“提升”为一流的语言。

A bit more information on Channel 9 here:

关于第9频道的更多信息:

Maestro: A Managed Domain Specific Language For Concurrent Programming

Maestro:并发编程的托管域特定语言

... and on the official Axum team blog.

......以及官方的Axum团队博客。

#4


Here's an update on the state of Axum. Apparrently some of the concurrency features will no longer be part of C#/VB.Net.

这是Axum状态的最新消息。显然,一些并发功能将不再是C#/ VB.Net的一部分。

...the concepts around safe parallelism and agent-based programming were seen by many as too far outside the mainstream to be adopted now in languages like C# and VB. The idea of Axum was to not force these concepts on general-purpose languages, so those of us who have work on Axum are not surprised.

...许多人认为安全并行和基于代理的编程的概念已经超出主流,现在在C#和VB等语言中被采用。 Axum的想法是不强迫这些概念用于通用语言,所以我们这些在Axum工作的人并不感到惊讶。