2009-05-12 15 views
9

Ho letto la storia di this su slashdot oggi dove annunciano un nuovo linguaggio di programmazione parallelo di Microsoft.Cos'è questo nuovo linguaggio di programmazione Axum?

A cosa serve questo nuovo linguaggio di programmazione? Dice Parallel Programming. Ma sarà un'alternativa/sostituzione per MPI, PVM, OpenMP e simili librerie/framework paralleli?

Qualche idea?

+0

Huh. Mai sentito parlare di Axum prima. Molto interessante. Vai a Microsoft! Prima ASP.NET MVC, quindi F #, ora Axum? Wicked! –

+3

Se qualcuno ha reso qualcosa di interessante con questo ancora postare un link qui al tuo post sul blog su di esso. –

+0

Sarebbe bello. –

risposta

9

Axum è un linguaggio strutturato in modo tale da rendere più semplice la programmazione simultanea sicura e performante. I concetti modellati dal linguaggio evitano la necessità di effettuare la sincronizzazione dei thread esplicita attraverso l'utilizzo di lock (in C#), Monitor, ReaderWriterLockSlim, ecc ...

Si potrebbe obiettare che molte delle idee all'interno di Axum sono stati in il Erlang programming language dal 1986 - un linguaggio progettato da ricercatori che lavorano in Svezia per Ericsson per funzionare su interruttori telefonici, e quindi il supporto per un enorme throughput sotto carico altamente concorrente era così essenziale che era stato progettato nella lingua. Mentre molte delle idee di Axum non sono nuovi, sono certamente una novità per .NET e il CLR

esistenti librerie .NET che contengono alcune di queste idee sono (almeno a livello linguistico.):

come Erlang, il messaggio che passa è un concetto centrale in Axum. Come Erlang, Axum è in gran parte indifferente se il destinatario del messaggio si trova in-process o in remoto. Axum attualmente fornisce integrazione con WCF.

Axum si differenzia dalle librerie menzionate sopra in quanto include il supporto per questi concetti a livello di lingua, non solo tramite l'uso di librerie. Il compilatore Axum tratta non solo il linguaggio Axum, ma anche alcune estensioni sperimentali del linguaggio C# stesso; vale a dire le parole chiave isolated e readonly.

L'aggiunta di nuove funzionalità a una lingua non è qualcosa da prendere alla leggera. Spec# è un altro linguaggio C# -superset sviluppato a MSR (non correlato alla concorrenza).Come visto con il supporto per Code Contracts in .NET 4.0, Microsoft ha deciso di favorire l'aggiunta di una nuova API piuttosto che nuove estensioni della lingua (questo avvantaggia gli utenti di tutte le lingue sul CLR). Tuttavia, nel caso di Axum, non c'è abbastanza ricchezza nel linguaggio C# 3.0 per esprimere i tipi di limiti di immutabilità richiesti dai tipi e dai loro membri per una programmazione concorrente veramente sicura.

Dopo essermi dilettato in Erlang e aver apprezzato ciò che ho visto, sono molto entusiasta di dove Axum potrebbe portarci. Alcune delle estensioni del linguaggio C# proposte dal team sono utili anche per i normali progetti C#.

Infine vorrei sottolineare che c'è di più in Erlang che solo un buon modello di concorrenza. Erlang è un linguaggio di programmazione funzionale e rigoroso. Supporta il codice hot swappable, il che significa che un sistema può essere aggiornato senza che venga mai interrotto (una funzione desiderabile di un interruttore telefonico o di qualsiasi altro sistema 24x7). Ho sentito un rapporto da una grande organizzazione britannica di telecomunicazioni che gestiva uno switch per un anno e che non riusciva a instradare quattro chiamate in quel momento. Erlang ha anche altre caratteristiche come la gestione remota delle eccezioni.

+2

Huh, e pensavo che il CCR rappresentasse Credence. ;) – harpo

5

Mi sembra che tu abbia colpito il chiodo sulla testa nella tua domanda. Sembra l'alternativa Microsoft.NET ad alcune delle lingue/framework che hai menzionato. Date un'occhiata al manuale del programmatore qui:

Axum Programmer's Guide

sembra che dovrebbe giocare bene con il resto del .NET Framework. Potrebbe aprire alcune interessanti interazioni C#/F #/Axum ...

+0

Ho trovato il PDF che hai collegato lì molto leggibile e utile come introduzione generale. –

1

Ecco un aggiornamento sullo stato di Axum. Di certo alcune delle funzionalità di concorrenza non faranno più parte di C#/VB.Net.

... i concetti intorno parallelismo sicuro e programmazione basata su agenti sono stati visti da molti come troppo al di fuori della corrente principale da adottare ora in linguaggi come C# e VB. L'idea di Axum era di non forzare questi concetti su linguaggi di uso generale, quindi quelli di noi che hanno lavorato su Axum non sono sorpresi.

Problemi correlati