Axum es un lenguaje estructurado de tal forma que simplifica la programación concurrente segura y eficaz. Los conceptos modelados por el lenguaje de evitar la necesidad de hacer explícita la sincronización de hilos a través del uso de lock
(en C#), Monitor
, ReaderWriterLockSlim
, etc ...
Se podría argumentar que muchas de las ideas dentro de Axum han estado en el Erlang programming language desde 1986, un lenguaje diseñado por investigadores que trabajan en Suecia para que Ericsson funcione con conmutadores telefónicos, y por lo tanto soporte para un rendimiento masivo bajo una carga altamente concurrente era tan esencial que fue diseñado en el lenguaje. Mientras que muchas de las ideas en Axum no son nuevos, que son sin duda nuevo en .NET y el CLR
bibliotecas .NET existentes que contienen algunas de estas ideas son (al menos en el nivel de idioma.):
Como Erlang, el paso de mensajes es un concepto central en Axum. Al igual que Erlang, Axum es en gran medida indiferente en cuanto a si el destinatario del mensaje se encuentra en proceso o de forma remota. Axum actualmente proporciona integración con WCF.
Axum difiere de las bibliotecas mencionadas anteriormente en que incluye soporte para estos conceptos en el nivel de idioma, no solo mediante el uso de bibliotecas. El compilador Axum trata no solo con el lenguaje Axum, sino también con algunas extensiones experimentales del lenguaje C# en sí mismo; es decir, las palabras clave isolated
y readonly
.
Agregar nuevas características a un idioma no es algo que deba tomarse a la ligera. Spec# es otro lenguaje de superconjunto C# desarrollado en MSR (no relacionado con concurrencia).Como se vio con el soporte para Code Contracts en .NET 4.0, Microsoft ha decidido favorecer la adición de una nueva API en lugar de nuevas extensiones de idioma (esto beneficia a los usuarios de todos los idiomas en el CLR). Sin embargo, en el caso de Axum, no hay suficiente riqueza en el lenguaje C# 3.0 para expresar los tipos de restricciones de inmutabilidad requeridas de los tipos y sus miembros para una programación simultánea verdaderamente segura.
Después de haber incursionado en Erlang y me gustó lo que vi, estoy muy emocionado acerca de dónde podría llevarnos Axum. Algunas de las extensiones del lenguaje C# propuestas por el equipo también son útiles para proyectos regulares de C#.
Finalmente, me gustaría señalar que Erlang tiene más que solo un buen modelo de simultaneidad. Erlang es un lenguaje de programación funcional estricto. Es compatible con el código intercambiable en caliente, lo que significa que un sistema se puede actualizar sin que se lo detenga (una característica deseable de un conmutador telefónico o cualquier otro sistema 24x7). Escuché un informe de una gran organización de telecomunicaciones británica que ejecuta un cambio durante un año y que solo no pudo enrutar cuatro llamadas en ese momento. Erlang tiene otras características como el manejo remoto de excepciones también.
Huh. Nunca escuché hablar de Axum antes. Muy interesante. ¡Ve a Microsoft! Primero ASP.NET MVC, luego F #, ¿ahora Axum? ¡Malvado! –
Si alguien ha hecho algo interesante con esto, publique un enlace aquí a su publicación del blog al respecto. –
Eso estaría bien. –