Microsoft is working on a new language for parallel programming named Axum. Formerly known as Maestro, Axum is an incubation project that Microsoft is working on to help programmers tackle the issue of parallel programming in the .NET environment.Microsoft is working on a new language for parallel programming named Axum.
Axum is an incubation project that Microsoft is
working on to help programmers tackle the issue of parallel programming in the
.NET environment. The company has not
committed to shipping it.
However, at the Lang.NET 2009 conference
on Microsoft's campus on April 15, Joshua Phillips, a program manager on
Microsoft's Parallel Computing Platform team, touted the Axum
language to an audience of computer language experts. Phillips said his group
recently had to change the name of the language from Maestro to Axum.
A description of Phillips' talk read:
"Axum is an incubation project from Microsofts
Parallel Computing Platform that aims to validate a safe and productive
parallel programming model for the .NET
framework. Its a language that builds upon the architecture of the Web and the
principles of isolation, agents and message-passing to increase application
safety, responsiveness, scalability and developer productivity. Other advanced
concepts we are exploring are data flow networks, asynchronous methods and type
annotations for taming side-effects. We currently have a working prototype with
basic Visual Studio integration and a few demonstrations of working code."
Phillips said his group is working on a number of technologies, "some
of which are shipping within Visual Studio 2010 and some are incubator
technologies. One of which is Axuma safer, scalable,
more productive programming model for .NET
through isolation, actors and message passing."
Phillips said the Axum value propositions are:
-
Reduce complexity by eliminating implicit dependencies
-
Provide a declarative model for dealing with state
-
Provide an application model that is inherently concurrent and responsive
Phillips said that not too long ago was "a time where if you wanted to
increase the perf [performance] of your application, you would wait 18 months
and get a faster chip." But with the advent of multicore processors and
parallel systems, more has to be done on the programming side to take advantage
of the advances, he said. "So let's make everything concurrent by default,
and you can opt out of it."
From what he called a 50,000-foot view, Phillips said, "We wanted [Axum]
to feel like C#; we didn't want you to have to take a whole new syntax
style."
Phillips said Axum is imperative, actor-orientedas
opposed to object-oriented, object-aware and special-purpose.
"We're not talking about objects as a primary concept anymore; it's
object-aware rather than object-oriented," Phillips said. "In fact,
you can't even define objects in Axum. It's
special-purpose, so we don't intend for Axum to be the
general-purpose language that C# is. You're going to define objects and types
in another language like Visual Basic or C# and then you can use Axum
to coordinate and get safe concurrency out of it."
In an interview with Dr.
Dobbs Journal, Niklas Gustafsson, a software architect and member of
Microsoft's Parallel Computing Platform team, said:
"The basic principle of Maestro is to reduce the complexity of a
parallel application to the point where most programmers should be able to
write a parallel application without even thinking about it as being parallel.
In a model based solely on shared memory, such as we have with all
object-oriented languages, you have enormous problems with reference aliasing.
This means that any two given reference variables of the same type may or may
not point at the same object. If they don't, concurrent access is safe, if they
do, it's typically not; a lot of programmer productivity is lost trying to rein
in this complexity."
Axum has five core concepts, according to Phillips:
domain, channel, agent, schema and pattern.
The objectives of the Axum incubation are to find
answers to several key questions, including whether a new language is the
better way to go to address parallel programming. Another question is whether
the Axum model reduces complexity and adds benefits such
as productivity and scalability gains. Still other questions include whether it
is feasible to migrate legacy applications over to Axum
and whether Microsoft is even building it right.
"A lot of feedback that our customers give me is, 'I want to be able to
take my junior programmers and throw them at concurrency problems.' And they
can't because it's too hard to think that way. But when you're within an agent,
it's easier to think ... because nothing is affecting you; you're single-threaded."
For more information on Axum, go to http://blogs.msdn.com/maestroteam.