Combingle:分散型モバイルアンサンブルの分散ロジックプログラミング
Edmund Sl Lam([email protected])とiliano cervesato([email protected])、Ali Elgazar([email protected])
同窓生開発者:
私たちの言語のセマンティクスに関する新しい論文は、第10回国際Webルールシンポジウム(REOLEML)2016に掲載され、Best Paper Award(http://2016.ruleml.org/awards)に掲載されました。
ワイヤレスおよびモバイルコンピューティング、ネットワーク、コミュニケーションに関する第11回IEEE国際会議の先入観に新しい論文が掲載されました(WIMOB2015)
NFCセンシングライブラリを追加しました。
Mafia Partyゲームのプロトタイプを追加しました(現在は少し醜く見えますが、機能します!= Pはアップデートをお楽しみに!)。
Combingle Androidライブラリのソースコードが追加されました!
New Combingle Runtimeは、WiFi-DirectおよびLocal-Area-Networksで動作しました!
Combingleは、複数のモバイルデバイスに配布されるアプリケーションを調整するためのCoorindationプログラミングフレームワークです。複数の関係者が関与する分散計算は、参加しているノードごとに個別の通信コードが記述される従来のノード中心の方法ではなく、アンサンブル中心の方法で単一の宣言プログラムとして指定されます。
Combingleは、結合パターン、制約処理ルール、線形ロジックの影響を大きく受け、分散計算をイベントのマルチセット間の書き換えルールとして指定します。イベントはコンピューティングの場所でパラメトリックであり、コンピューティングデバイスのアンサンブルで分散型計算を表現するCombingleの能力を定義します。その他の機能には、マルチセットの理解パターンと非線形パターンマッチングが含まれます。組み合わせて、これらはCombingleを、複雑な分散型計算をオークロスト化するための非常に宣言的な調整言語にします。
Combingleは、トリガーおよびアクチュエーターとして知られるメカニズムを介してAndroidアプリケーションと統合します。トリガーにより、Androidアプリケーションはローカルイベント(タッチ入力、その他のUIまたはアプリイベントなど)の発生をCombingle Rechriting Semanticsに合わせますが、アクチュエーターはCombingleを課すことができます。書き換え中に発生するイベントに関連するAndroidアプリケーション(コールバック操作を介して)の副作用。これは、CombingleがNative Android SDK APIで動作し、ローカルの操作と計算を異なる方法でプログラムすることを強制しないことを意味します(スタンドアロンのAndroidアプリを書くことについて、あなたが愛し、嫌いなものはすべてあります!)
全体として、Combingleプログラムは、分散型アンサンブルの宣言的仕様を簡単に読みやすいだけでなく、実行可能であり、Androidアプリケーションに直感的なインターフェイスを提供します。
Combingleルールの分散化された実行の背後にある理論を知りたい場合は、Ruleml'2016 Paper(授与Best Paper)をご覧ください
CombingleとAndroid SDKとの統合について詳しく知りたい場合は、テクニカルレポートまたはCoordination'2015論文をご覧ください。
Combingleでの分散イベントの同期について詳しく知りたい場合は、WIMOB'2015 Paperをご覧ください。
理解パターンを使用した分散型マルチセット書き換えの背後にある理論についてもっと知りたい場合は、APLAS'2014 PaperとPPDP'2013論文を参照してください。
このリポジトリには、Combingleコンパイラとランタイムシステムの作業コピーと、登場を開始するためのいくつかの例が含まれています。これが含まれているものの要約です:
Combingleをインストールして使用するには、以下の「開始」の指示に従ってください。 Androidアプリの再生に直接移動したい場合は、https://github.com/sllam/phingle/tree/master/android_appsのreadmeファイルの指示に従ってください。
Combingleコンパイラとコードジェネレーターを実行するには、次のことが必要です。
Combingle生成コードを実行するには、次のことが必要です。
Combingleのコンパイラを動作させるには、最初に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インストール
次に、MSREのコンパイラが必要で、https://github.com/sllam/msreに進み、コンパイラのみをインストールします。
MSRE $ CDコンパイラ/MSREX
msre/コンパイラ/msrex $ sudo python setup.pyインストール
あなたはほぼ設定されています、あなたは今、あなたはCombingleコンパイラをセットアップしてインストールできるようにする必要があります、Makeファイルを実行してこれを実行します:
Combingle $ sudoはインストールを作成します
これは次のことを行います。
Combingleをテストするには、ディレクトリのサンプルに移動して試してみてください。
Combingle $ CDの例
Combingle/例$ cmgc dragracing.cmg
たくさんの出力が表示され、できればエラーメッセージが表示されません。それが正常に実行された場合、Javaソースファイル「Dragracing.java」を使用したディレクトリ「Dragracing」が表示されます。このJavaクラスは、Combingleプログラム「Dragracing.cmg」で指定されたCombingleランタイムを実装しています。 https://github.com/sllam/pruningle/tree/master/android_apps/ compingledragracingのEclipse Projectを参照してください。
上記の手順のいずれかでエラーが発生した場合は、[email protected]で私(Edmund)に連絡してください。また、私の謝罪を受け入れてください、Combingleプロトタイプはまだ進行中ですが、私はそれを安定したより使いやすい状態に持ち込むために一生懸命働いています! =)
以下に感謝します: