AmbientTalk es un lenguaje de programación distribuido orientado a objetos experimental desarrollado en el Laboratorio de Tecnología de Programación de la Vrije Universiteit Brussel , Bélgica. El lenguaje está orientado principalmente a la escritura de programas implementados en redes móviles ad hoc .
AmbientTalk está pensado para servir como plataforma de experimentación para experimentar con nuevas características del lenguaje o abstracciones de programación para facilitar la construcción de software que tenga que ejecutarse en redes altamente volátiles que exhiban conectividad intermitente y poca infraestructura. [1] Está implementado en Java , lo que permite la interpretación en varias plataformas, incluido Android . La biblioteca estándar del intérprete también proporciona una interfaz perfecta entre Java y los objetos de AmbientTalk, llamada simbiosis.
Las características de concurrencia del lenguaje , que incluyen soporte para futuros y concurrencia de bucle de eventos, se basan en el modelo de actor y han sido ampliamente influenciadas por el lenguaje de programación E. Las características orientadas a objetos del lenguaje encuentran su influencia en lenguajes como Smalltalk (es decir, cierres de bloques, mensajes con palabras clave) y Self ( programación basada en prototipos , rasgos , delegación).
system.println("Hola mundo");
El clásico programa "¡Hola mundo!" no es muy representativo de las características del lenguaje. Sin embargo, consideremos su versión distribuida:
/* Define los tipos que se podrían descubrir en la red */ deftype Greeter ; def makeGreeter ( myName ) { /* Generar un actor */ actor: { /* Los actores tienen un espacio de nombres separado, incluye los futuros del idioma en él */ import /. at.lang. futures ; /* Un método que podría ser llamado por otros saludadores */ def getName (){ myName }; /* Exportar este actor en la red */ export: self as: Greeter ; /* Lógica principal: si descubrimos otro Greeter... */ always: Greeter descubrió: {| other | /* Obtener asincrónicamente su nombre y saludarlo */ when: other <- getName () @FutureMessage se convierte en: {| name | system . println ( "Hola " + name + " from " + myName ); }; }; }; } ; /* Genera 2 actores que se saludarán entre sí */ makeGreeter ( "Alice" ); makeGreeter ( "Bob" );