Comingle: Programación lógica distribuida para conjuntos móviles descentralizados
Por Edmund Sl Lam ([email protected]) e Iliano Cervesato ([email protected]), con Ali Elgazar ([email protected])
Desarrolladores de ex alumnos:
El nuevo artículo sobre la semántica de nuestro idioma apareció en el 10º Simposio Internacional de Reglas Web (Ruleml) 2016, con el Premio al Mejor Papel (http://2016.ruleml.org/awards)
El nuevo documento apareció en las precedidas de la 11ª Conferencia Internacional IEEE sobre informática, red y comunicaciones inalámbricas y móviles (WIMOB2015)
Se agregaron bibliotecas de detección de NFC.
Se agregó un prototipo del juego de fiesta de la mafia (¡actualmente se ve un poco feo, pero funciona! = P Estén atentos para las actualizaciones!).
¡Códigos de origen para las bibliotecas de Android de Comingle agregados!
¡El nuevo tiempo de ejecución de Comingle ahora funciona con WiFi-Direct, así como a las redes de área local!
Comingle es un marco de programación de coorindación para orquestar aplicaciones distribuidas a través de múltiples dispositivos móviles. Los cálculos distribuidos que involucran múltiples partes se especifican como un solo programa declarativo de manera centrada en el conjunto, en lugar de en la manera tradicional centrada en el nodo, donde se escribe un código de comunicación separado para cada nodo participante.
Comingle está muy influenciado por los patrones de unión, las reglas de manejo de restricciones y la lógica lineal, especificando los cálculos distribuidos como reglas de reescritura entre multisets de eventos. Los eventos son paramétricos en las ubicaciones informáticas, definiendo la capacidad de Comingle para expresar cálculos descentralizados en un conjunto de dispositivos informáticos. Otras características incluyen patrones de comprensión multisetín y coincidencia de patrones no lineales. En combinación, estos hacen que Comingle sea un lenguaje de coordinación altamente declarativo para la orquestación de cálculos descentralizados complejos.
Comingle se integra con las aplicaciones de Android a través de un mecanismo conocido como desencadenantes y actuadores: los desencadenantes permiten que una aplicación de Android indique ocurrencias de sus eventos locales (p. Ej. Efectos secundarios en la aplicación Android (a través de operaciones de devolución de llamada) asociados a los eventos que ocurren durante su reescritura. Esto significa que Comingle funciona con las API nativas de Android SDK y no lo obliga a programar operaciones y cálculos locales de manera diferente (¡todavía tiene todo lo que amas y odias de escribir aplicaciones independientes de Android!)
En total, los programas Comingle no solo representan especificaciones declarativas fáciles de leer de conjuntos descentralizados, sino que son ejecutables y proporcionan una interfaz intuitiva a sus aplicaciones de Android.
Si le gusta conocer la teoría detrás de la ejecución descentralizada de las reglas de Comingle, consulte nuestro documento Ruleml'2016 (premio al mejor artículo)
Si le gusta saber más sobre Comingle y cómo se integra con Android SDK, consulte nuestro informe técnico o documento de coordinación '2015.
Si le gusta saber más sobre el tiempo sincronizar los eventos distribuidos en Comingle, consulte nuestro artículo WIMOB'2015.
Si le gusta saber más sobre la teoría detrás de la reescritura multisética descentralizada con patrones de comprensión, consulte nuestro documento APLAS'2014 y papel PPDP'2013.
Este repositorio contiene una copia de trabajo del compilador Comingle y el sistema de tiempo de ejecución, así como algunos ejemplos para comenzar a venir. Aquí hay un resumen de lo que contiene:
Para instalar y usar Comingle, siga las instrucciones de 'Poner inicio' a continuación. Si desea ir directamente a reproducir las aplicaciones de Android, siga las instrucciones en el archivo README en https://github.com/sllam/compingle/tree/master/android_apps.
Para ejecutar el compilador Comingle y el generador de código, necesitará:
Para ejecutar los códigos generados por Comingle, necesitará:
Para que el compilador de Comingle funcione, primero deberá tener en funcionamiento Python 2.7. A continuación, necesitará un par de módulos Python no estándar, Ply y Z3py. Proceda a http://www.dabeaz.com/ply/ y https://github.com/z3prover/z3 para obtener las fuentes respectivas e instalar instrucciones.
** ¡Importante! Deberá instalar enlaces Z3 Python. Ver documentos en https://github.com/z3prover/z3, particularmente las enlaces de Z3 -> Python
Una vez que los tenga, proceda a https://github.com/sllam/pysetcomp e instale:
Pysetcomp $ sudo python setup.py install
A continuación, necesitará el compilador de MSRE, proceda a https://github.com/sllam/msre e instale solo su compilador:
compilador de cd msre $ msrex
msre/compiler/msrex $ sudo python setup.py install
Casi está configurado, ahora debería poder configurar e instalar el compilador Comingle, hacer esto ejecutando el archivo Make:
Comingle $ sudo haz instalar
Esto haría lo siguiente:
Para probar Comingle, vaya al directorio de ejemplo y pruébelo:
Ejemplos de CD Comingle $ CD
Comingle/Ejemplos $ cmgc dragracing.cmg
Verá un montón de salida y, con suerte, no hay mensajes de error. Si se ha ejecutado con éxito, debería ver un directorio 'Dragracing' con un archivo fuente de Java 'dragracing.java'. Esta clase Java implementa el tiempo de ejecución de Comingle especificado por el programa Comingle 'dragracing.cmg'. Vea el proyecto Eclipse en https://github.com/sllam/compingle/tree/master/android_apps/ingledragracing para obtener un ejemplo de cómo este tiempo de ejecución de Comingle se puede intercontar con un juego de Android real.
Si encontró errores en cualquiera de los pasos anteriores ... Póngase en contacto conmigo (Edmund) en [email protected]. Además, acepte mis disculpas, el Prototipo Comingle sigue funcionando en progreso, ¡pero estoy trabajando duro para llevarlo a un estado estable y más utilizable! =)
Un agradecimiento especial al siguiente: