Congele: Распределенное логическое программирование для децентрализованных мобильных ансамблей
Эдмунд С.Л. Лам ([email protected]) и Илиано Червесато ([email protected]), с Али Эльгазаром ([email protected])
Разработчики выпускников:
Новая статья о семантике нашего языка появилась в 10 -м Международном Симпозиуме Веб -Правила (RULEML) 2016, с Best Paper Award (http://2016.ruleml.org/awards)
Новая статья появилась в предыдущих конференции 11 -й Международной конференции IEEE по беспроводной и мобильной компьютерной, сети и коммуникациям (Wimob2015)
Добавлены библиотеки Sensing NFC.
Добавлен прототип игры мафии вечеринки (в настоящее время он выглядит немного уродливо, но он работает! = P Следите за обновлениями!).
Исходные коды для библиотек для Android добавлены!
New Coningle Runtime теперь работает с Wi-Fi-Direct, а также с местными районами!
Congele - это структура программирования совместного использования для оркестровки приложений, распределенных по нескольким мобильным устройствам. Распределенные вычисления с участием нескольких сторон указаны как единая декларативная программа в ансамблевом способе, а не как традиционное, ориентированное на узлы, где для каждого участвующего узла записывается отдельный коммуникационный код.
На Congle сильно влияет шаблоны соединения, правила обработки ограничений и линейная логика, определяя распределенные вычисления в качестве правил переписывания среди множества событий. События являются параметрическими для вычислительных местоположений, определяя способность Comele выражать децентрализованные вычисления в ансамбле вычислительных устройств. Другие функции включают в себя MultiSet Patterns и нелинейное сопоставление рисунков. В сочетании они делают Complyle очень декларативным координационным языком для оркрисляции сложных децентрализованных вычислений.
Genle интегрируется с приложениями Android с помощью механизма, известного как триггеры и приводы: триггеры позволяют приложению Android сигнализировать о появлении местных событий (например, прикосновение, другие события пользовательского интерфейса или приложения) на семантику переписывания приступ Побочные эффекты на приложении Android (через операции обратного вызова), связанные с событиями, которые происходят во время его переписывания. Это означает, что Congele работает с API -интерфейсом Native Android SDK и не заставляет вас по -разному программировать локальные операции и вычисления (у вас все еще есть все, что вы любите, и ненавидите в написании автономных приложений Android!)
В целом, программы «Приход» не только представляют собой простые для чтения декларативных спецификаций децентрализованных ансамблей, но и исполняются и обеспечивают интуитивно понятный интерфейс для ваших приложений Android.
Если вам нравится знать теорию, стоящую за децентрализованным исполнением правил, ознакомьтесь с нашей бумагой Ruleml'2016 (награждена лучшей статьей)
Если вам нравится узнать больше о том, как он интегрируется с Android SDK, ознакомьтесь с нашим техническим отчетом или координацией 2015 года.
Если вам нравится узнать больше о синхронизации времени распределенных событий в Comele, ознакомьтесь с нашей бумагой Wimob'2015.
Если вам нравится узнать больше о теории, лежащей в основе децентрализованного переписывания Multiset с шаблонами понимания, см. Наш бумагу Aplas'2014 и PPDP'2013.
Этот репозиторий содержит рабочую копию компилятора и системы выполнения, а также некоторые примеры, которые вы начали начать. Вот краткое изложение того, что он содержит:
Чтобы установить и использовать Comele, пожалуйста, следуйте инструкциям «Начало работы» ниже. Если вы хотите сразу же воспроизводить приложения Android, следуйте инструкциям в файле readme по адресу https://github.com/sllam/ceverle/tree/master/android_apps.
Чтобы запустить компилятор и генератор кодов, вам понадобится:
Чтобы запустить сгенерированные коды, вам понадобится:
Чтобы работать компилятор 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 install
Вы почти настроены, теперь вы должны иметь возможность настроить и установить компилятор Congele, сделать это, запустив файл Make:
Comele $ sudo Make Install
Это сделает следующее:
Чтобы проверить, перейдите в каталог примеров и попробуйте:
Примеры cd CD
Примеры/Примеры $ cmgc dragracing.cmg
Вы увидите кучу вывода, и, надеюсь, никаких сообщений об ошибках. Если он успешно работал, вы должны увидеть каталог «Dragracing» с исходным файлом Java 'Dragracing.java'. Этот класс Java реализует время выполнения, указанное в программе Genle 'Dragracing.cmg'. См. Проект Eclipse в https://github.com/sllam/ceverle/tree/master/android_apps/ceverleledgragraging, чтобы получить пример того, как эта среда выполнения может быть взаимосвязана с фактической игрой в Android.
Если вы столкнулись с ошибками в любом из вышеуказанных шагов ... пожалуйста, свяжитесь со мной (Edmund) по адресу [email protected]. Кроме того, примите мои извинения, прототип Comele все еще находится в стадии разработки, но я усердно работаю, чтобы донести его до стабильного и более полезного состояния! =)
Особая благодарность следующему: