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.
Huh. Mai sentito parlare di Axum prima. Molto interessante. Vai a Microsoft! Prima ASP.NET MVC, quindi F #, ora Axum? Wicked! –
Se qualcuno ha reso qualcosa di interessante con questo ancora postare un link qui al tuo post sul blog su di esso. –
Sarebbe bello. –