Comedle: Programmation logique distribuée pour les ensembles mobiles décentralisés
Par Edmund Sl Lam ([email protected]) et Iliano Cervesato ([email protected]), avec Ali Elgazar ([email protected])
Développeurs des anciens:
Le nouveau document sur la sémantique de notre langue est apparu dans le 10e Symposium international du Web Rule Symposium (Ruleml) 2016, avec le prix du meilleur papier (http://2016.ruleml.org/awards)
Le nouveau document est apparu dans les précédents de la 11e Conférence internationale de l'IEEE sur l'informatique sans fil et mobile, le réseau et les communications (WIMOB2015)
Ajout de bibliothèques de détection NFC.
Ajout du prototype de jeu de la fête de la mafia (il semble actuellement un peu moche, mais cela fonctionne! = P Restez à l'écoute pour les mises à jour!).
Codes source pour les bibliothèques Android de Comeenle ajoutées!
New Comedle Runtime fonctionne désormais avec le WiFi-Direct ainsi que sur les Networks de la région locale!
Comedle est un cadre de programmation de coorindations pour les applications d'orchestration distribuées sur plusieurs appareils mobiles. Les calculs distribués impliquant plusieurs parties sont spécifiés comme un programme déclaratif unique de manière centrée sur l'ensemble, plutôt que de manière traditionnelle centrée sur le nœud, où le code de communication séparé est écrit pour chaque nœud participant.
Comedle est grandement influencé par les modèles de jointure, les règles de gestion des contraintes et la logique linéaire, spécifiant les calculs distribués comme des règles de réécriture entre les multisets des événements. Les événements sont paramétriques sur les emplacements informatiques, ce qui définit la capacité de Comedle à exprimer des calculs décentralisés dans un ensemble de dispositifs informatiques. Les autres fonctionnalités incluent les modèles de compréhension multiset et la correspondance non linéaire. En combinaison, ceux-ci font de la venue un langage de coordination hautement déclaratif pour les calculs décentralisés complexes orchrestrants.
Cometsle s'intègre aux applications Android via un mécanisme appelé déclencheurs et actionneurs: les déclencheurs permettent à une application Android de signaler les occurrences de ses événements locaux (par exemple, l'entrée tactile, les autres événements d'interface utilisateur) à la sémantique de réécriture de Comele Effets secondaires sur l'application Android (via les opérations de rappel) associées aux événements qui se produisent lors de sa réécriture. Cela signifie que Comedle travaille avec les API du SDK Android natif et ne vous oblige pas à programmer les opérations et les calculs locaux différemment (vous avez toujours tout ce que vous aimez et détestez dans la rédaction d'applications Android autonomes!)
Au total, les programmes de Wakele représentent non seulement des spécifications déclaratives faciles à lire des ensembles décentralisés, mais ils sont exécutables et fournissent une interface intuitive à vos applications Android.
Si vous aimez connaître la théorie derrière l'exécution décentralisée des règles de Comedle, consultez notre document Ruleml'2016 (récompensé le meilleur article)
Si vous aimez en savoir plus sur Comedle et comment il s'intègre au SDK Android, consultez notre rapport technique ou notre document de coordination 2015.
Si vous aimez en savoir plus sur le temps de synchronisation des événements distribués à Comedle, consultez notre papier WIMOB'2015.
Si vous aimez en savoir plus sur la théorie derrière la réécriture décentralisée multiset avec des modèles de compréhension, consultez notre papier Aplas'2014 et le papier PPDP'2013.
Ce référentiel contient une copie de travail du compilateur et du système d'exécution de Comenle, ainsi que de quelques exemples pour vous aider à démarrer. Voici un résumé de ce qu'il contient:
Pour installer et utiliser Comedle, veuillez suivre les instructions de «démarrage» ci-dessous. Si vous souhaitez consulter directement les applications Android, suivez les instructions du fichier Readme à https://github.com/sllam/comingle/tree/master/android_apps.
Pour exécuter le compilateur et générateur de code à Comedle, vous aurez besoin:
Pour exécuter les codes générés par Comene, vous aurez besoin:
Pour faire fonctionner le compilateur de Comenle, vous devrez d'abord faire fonctionner Python 2.7. Ensuite, vous aurez besoin de quelques modules Python non standard, PLY et Z3PY. Veuillez passer à http://www.dabeaz.com/ply/ et https://github.com/z3prover/Z3 pour obtenir les sources respectives et installer des instructions.
** Important! Vous devrez installer des liaisons Z3 Python. Voir les documents dans https://github.com/z3prover/z3, en particulier les liaisons Z3 -> Python
Une fois que vous les aurez, passez à https://github.com/sllam/pysetcomp et installez:
PysetComp $ sudo python setup.py install
Ensuite, vous aurez besoin du compilateur de MSRE, passez à https://github.com/sllam/msre, et n'installez que son compilateur:
Compilateur MSRE $ CD / MSREX
MSRE / Compiler / msrex $ sudo python setup.py install
Vous êtes presque réglé, vous devriez maintenant pouvoir configurer et installer le compilateur Comenle, ce faire en exécutant le fichier de marque:
Comingle $ sudo faire l'installation
Cela ferait ce qui suit:
Pour tester Comedle, accédez à l'exemple de répertoire et essayez-le:
Exemples de CD à venir
Comenle / Exemples $ cmgc dragring.cmg
Vous verrez un tas de sorties et, espérons-le, pas de messages d'erreur. S'il a été exécuté avec succès, vous devriez voir un répertoire «Dragring» avec un fichier source Java «Dragring.java». Cette classe Java met en œuvre le Runtime Comedle spécifié par le programme à venir «dragrating.cmg». Consultez le projet Eclipse dans https://github.com/sllam/comingle/tree/master/android_apps/comingledRagracing pour un exemple de la façon dont ce runtime de Comele peut être intergrate avec un jeu Android réel.
Si vous avez rencontré des erreurs dans l'une des étapes ci-dessus ... Veuillez me contacter (Edmund) à [email protected]. Veuillez également accepter mes excuses, le prototype de Comedle est toujours en cours, mais je travaille dur pour l'amener à un état stable et plus utilisable! =)
Un merci spécial à ce qui suit: