Axum (anteriormente conocido con el nombre en clave Maestro ) es un lenguaje de programación concurrente específico de dominio , basado en el modelo Actor , que fue desarrollado activamente por Microsoft [ 1 ] entre 2009 y 2011. [ 2 ] Es un lenguaje orientado a objetos basado en .NET Common Language Runtime que utiliza una sintaxis similar a la de C y que, al ser un lenguaje específico de dominio, está destinado al desarrollo de partes de una aplicación de software que se adaptan bien a la concurrencia. Pero contiene suficientes construcciones de propósito general como para que no sea necesario cambiar a un lenguaje de programación de propósito general (como C# ) para las partes secuenciales de los componentes concurrentes. [ 1 ]
El principal paradigma de programación en Axum es un Agente (o un Actor ), que es una entidad aislada que se ejecuta en paralelo con otros Agentes. [ 3 ] En la terminología de Axum, esto se denomina agentes que se ejecutan en dominios de aislamiento separados ; [ 3 ] los objetos instanciados dentro de un dominio no pueden ser accedidos directamente desde otro. [ 4 ] Los Agentes están débilmente acoplados (es decir, el número de dependencias entre agentes es mínimo) y no comparten recursos como la memoria (a diferencia del modelo de memoria compartida de C# y lenguajes similares); en su lugar, se utiliza un modelo de paso de mensajes . [ 3 ] Para coordinar agentes o para que un agente solicite los recursos de otro, se debe enviar un mensaje explícito al agente. Axum proporciona Canales para facilitar esto.
Los canales pueden considerarse una vía direccional para la comunicación entre instancias de agentes. Las funciones miembro de un objeto Channel , una vez vinculado a una instancia de agente, pueden utilizarse para comunicarse con ella. Un Channel contiene puertos de entrada y salida , que son colas utilizadas para enviar o recibir datos de un agente. Para coordinar la comunicación entre agentes, Axum permite que cada canal tenga un protocolo de comunicación definido por el usuario. El protocolo se define como una máquina de estados . [ 5 ] Los datos enviados a través de un canal pueden restringirse opcionalmente para que se ajusten a un esquema predefinido . El compilador y el entorno de ejecución se encargarán de garantizar el cumplimiento del esquema. [ 6 ] Internamente, un esquema se traduce en una clase .NET serializable que contiene únicamente propiedades y métodos sin efectos secundarios. [ 7 ]
El proyecto Axum alcanzó la fase de prototipo con integración funcional en Microsoft Visual Studio . [ 8 ] Microsoft había puesto a disposición del público una versión CTP de Axum, [ 9 ] pero posteriormente fue eliminada. Aunque Microsoft decidió no convertir Axum en un proyecto, [ 2 ] algunas de las ideas que lo inspiraron se utilizan en TPL Dataflow en .Net 4.5.
Referencias
- 1 2 "Maestro: Un lenguaje específico de dominio administrado para programación concurrente" . Canal 9. Archivado del original el 7 de abril de 2009. Recuperado el 16 de abril de 2009 .
- ^ " El estado de Axum" . Niklas Gustafsson . Consultado el 28 de febrero de 2011 .
- 1 2 3 Philips Joshua. "No nos hemos olvidado de otros modelos, ¡lo prometemos!" . Blogs de MSDN . Archivado del original el 8 de mayo de 2009. Consultado el 16 de abril de 2009 .
- ↑ Niklas Gustafsson. "Aislamiento en Maestro" . Blogs de MSDN . Archivado del original el 8 de mayo de 2009. Consultado el 16 de abril de 2009 .
- ↑ Niklas Gustafsson. "Canales" . Blogs de MSDN . Archivado del original el 26 de abril de 2009. Consultado el 16 de abril de 2009 .
- ↑ Joshua Philips. "Axum" . Presentación de Lang.NET. Archivado del original el 21 de abril de 2009. Consultado el 20 de abril de 2009 .
- ↑ Niklas Gustafsson. "Objetos en Axum" . Blogs de MSDN . Archivado del original el 26 de abril de 2009. Consultado el 20 de abril de 2009 .
- ↑ "Axum: Otra pieza del rompecabezas de programación paralela de Microsoft" . Blogs de CNet . Archivado del original el 17 de abril de 2009. Consultado el 16 de abril de 2009 .
- ↑ "Axum" . MSDN DevLabs. Archivado del original el 11 de mayo de 2009. Consultado el 9 de mayo de 2009 .
Enlaces externos
- Guía del programador
- Lenguajes de programación .NET
- Lenguajes de programación orientados a objetos
- Lenguajes de programación concurrentes
