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)。另外,請接受我的歉意,《副原型》仍在進行中,但是我正在努力將其帶到一個穩定,更可用的狀態! =)
特別感謝以下內容: