COMELE:分散移动合奏的分布式逻辑编程
由Edmund Sl Lam([email protected])和Iliano cervesato([email protected])和ali elgazar([email protected])
校友开发人员:
关于我们语言语义的新论文出现在2016年第10届国际网络规则研讨会(Ruleeml),并获得了最佳纸张奖(http://2016.ruleml.org/awards)
新论文出现在第11届IEEE无线和移动计算,网络和通信国际会议(WIMOB2015)的先前。
添加了NFC传感库。
添加了黑手党派对游戏的原型(目前看起来有些丑陋,但可以使用!= P请继续关注更新!)。
添加了COMELE ANDROID库的源代码!
New Comele Runtime现在与WiFi-Direct以及本地区域网络一起使用!
COMELE是一个协调编程框架,用于协调在多个移动设备上分发的应用程序。涉及多个方的分布式计算以一个集合的方式指定为单个声明程序,而不是以传统的以节点为中心的方式,其中为每个参与的节点编写了单独的通信代码。
COMELE受到联接模式,约束处理规则和线性逻辑的极大影响,将分布式计算指定为事件多组之间的重写规则。事件是计算位置的参数,可以定义COMELE在计算设备集合中表达分散计算的能力。其他功能包括多键理解模式和非线性模式匹配。结合起来,这些使《 COMELE》成为卵形分散计算的高度声明性的协调语言。
COMALE通过称为触发器和执行器的机制与Android应用程序集成:触发器允许Android应用以发出本地事件的出现(例如,触摸输入,其他UI或应用程序事件)向COMELE RETRETING语义上的语义,而执行器则允许Actuer强加于COMESE构成与重写期间发生的事件相关的Android应用程序(通过回调操作)上的副作用。这意味着COMELE与本机Android SDK API一起使用,并且不会迫使您对本地操作和计算进行不同的编程(您仍然拥有有关编写独立Android应用程序的爱和讨厌的一切!)
总体而言,COMELE程序不仅代表了易于阅读的分散合奏的声明性规范,而且可以执行,并为您的Android应用程序提供直观的接口。
如果您想知道分散执行《 COMELE规则》背后的理论,请查看我们的duleml'2016论文(授予最佳论文)
如果您想了解有关COMELE的更多信息及其与Android SDK的集成方式,请查看我们的技术报告或协调'2015年论文。
如果您想进一步了解COMELE中的时间同步分布式事件,请查看我们的WiMob'2015纸。
如果您想进一步了解使用理解模式分散的多层重写背后的理论,请参见我们的APLAS'2014纸和PPDP'2013纸。
该存储库包含COMELE编译器和运行时系统的工作副本,以及一些示例,以使您开始浮选。这是其中包含的摘要:
要安装和使用COMELE,请按照下面的“入门”说明进行操作。如果您想直接播放Android应用程序,请按照https://github.com/sllam/comingle/comingle/tree/master/master/android_apps中的readme文件中的说明进行操作。
要运行COMELE编译器和代码生成器,您将需要:
要运行COMELE生成的代码,您将需要:
为了使Comele的编译器正常工作,您首先需要让Python 2.7运行。接下来,您需要几个非标准的Python模块,PLY和Z3PY。请继续访问http://www.dabeaz.com/ply/和https://github.com/z3prover/z3获取相应的来源并安装说明。
** 重要的!您需要安装Z3 Python绑定。请参阅https://github.com/z3prover/z3中的文档,尤其是Z3绑定 - > python
拥有它们后,请访问https://github.com/sllam/pysetcomp,然后安装:
PysetComp $ sudo python setup.py install
接下来,您需要MSRE的编译器,请访问https://github.com/sllam/msre,然后仅安装其编译器:
MSRE $ CD编译器/MSREX
MSRE/COMPILER/MSREX $ SUDO PYTHON SETUP.PY安装
您几乎已经设置了,您现在应该能够设置和安装Comele Compiler,通过运行Make File:执行此操作:
COMALE $ sudo制作安装
这将完成以下操作:
要测试COMELE,请转到示例目录并尝试一下:
COMELE $ CD示例
COMELE/示例$ CMGC Dragracing.cmg
您会看到一堆输出,希望没有错误消息。如果成功运行,则应使用Java源文件“ Dragracing.java”看到一个目录“ Dragractory”。该Java类实现了COMELE程序“ Dragracing.cmg”指定的COMELE RUNTIME。请参阅https://github.com/sllam/comingle/tree/master/android_apps/comingledragracing中的Eclipse项目,以说明如何如何将这种来临的运行时与实际的Android游戏相互互为。
如果您在上述任何步骤中遇到错误...请通过[email protected]与我联系(Edmund)。另外,请接受我的歉意,《副原型》仍在进行中,但是我正在努力将其带到一个稳定,更可用的状态! =)
特别感谢以下内容: