Microsoft Cooking Up New Parallel Programming Language
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.
"Axum is an incubation project from Microsoft's Parallel Computing Platform that aims to validate a safe and productive parallel programming model for the .NET framework. It's 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 Axum-a 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
"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.