القادمة: البرمجة المنطقية الموزعة لمجموعات الهاتف المحمول اللامركزية
بقلم إدموند SL LAM ([email protected]) وإليانو سيرفيساتو ([email protected]) ، مع علي Elgazar ([email protected])
مطوري الخريجين:
ظهرت ورقة جديدة عن دلالات لغتنا في ندوة قاعدة الويب الدولية العاشرة (RULEML) 2016 ، مع جائزة أفضل ورقة (http://2016.ruleml.org/awards)
ظهرت ورقة جديدة في المؤتمر الدولي الحادي عشر لـ IEEE حول الحوسبة اللاسلكية والشبكات والاتصالات (WIMOB2015)
أضيفت مكتبات استشعار NFC.
تمت إضافة النموذج الأولي لعبة Mafia Party (يبدو حاليًا قبيحًا بعض الشيء ، لكنه يعمل! = P تابعنا للحصول على التحديثات!).
تمت إضافة رموز المصدر لمكتبات Android القادمة!
يعمل وقت التشغيل الجديد الجديد الآن مع WiFi-Direct وكذلك الشبكة المحلية!
Covele هو إطار لبرمجة Coorindation لتنظيم التطبيقات الموزعة على أجهزة محمولة متعددة. يتم تحديد الحسابات الموزعة التي تنطوي على أطراف متعددة كبرنامج تعريفي واحد بطريقة تتمحور حول المجموعة ، بدلاً من الطريقة التقليدية المتمحورة حول العقدة ، حيث يتم كتابة رمز التواصل المنفصل لكل عقدة مشاركة.
يتأثر Covele بشكل كبير بأنماط الانضمام ، وقواعد معالجة القيود والمنطق الخطي ، وتحديد الحسابات الموزعة كقواعد إعادة كتابة بين مجموعات من الأحداث. الأحداث حدودية في مواقع الحوسبة ، وتحديد قدرة Covele على التعبير عن الحسابات اللامركزية في مجموعة من أجهزة الحوسبة. وتشمل الميزات الأخرى أنماط الفهم متعددة المدى ومطابقة الأنماط غير الخطية. مجتمعة ، هذه تجعل الانضمام إلى لغة تنسيق تعليمية للغاية للحسابات اللامركزية المعقدة المعقدة.
تتكامل Complele مع تطبيقات Android من خلال آلية تعرف باسم المشغلات والمشغلات: تسمح المشغلات بتطبيق Android للإشارة الآثار الجانبية على تطبيق Android (من خلال عمليات رد الاتصال) المرتبطة بالأحداث التي تحدث أثناء إعادة الكتابة. هذا يعني أن Covele تعمل مع واجهات برمجة تطبيقات Android SDK الأصلية ولا تجبرك على برمجة العمليات المحلية والحسابات بشكل مختلف (لا يزال لديك كل ما تحبه وتكرهه في كتابة تطبيقات Android المستقلة!)
إجمالاً ، لا تمثل البرامج القادمة فقط قراءة المواصفات التعريفية للمجموعات اللامركزية ، بل هي قابلة للتنفيذ وتوفر واجهة بديهية لتطبيقات Android الخاصة بك.
إذا كنت ترغب في معرفة النظرية الكامنة وراء التنفيذ اللامركزي للقواعد القادمة ، تحقق من ورقة RULEML'2016 (جائزة أفضل ورقة)
إذا كنت ترغب في معرفة المزيد عن Complele وكيف يتكامل مع Android SDK ، تحقق من تقريرنا الفني أو ورقة التنسيق 2015.
إذا كنت ترغب في معرفة المزيد عن الوقت في مزامنة الأحداث الموزعة في Covele ، تحقق من ورقة Wimob'2015.
إذا كنت ترغب في معرفة المزيد عن النظرية الكامنة وراء إعادة كتابة Multiset MultiSet مع أنماط الفهم ، راجع ورقة APLAS'2014 وورقة PPDP'2013.
يحتوي هذا المستودع على نسخة عمل من برنامج التحويل البرمجي القادم ونظام وقت التشغيل ، بالإضافة إلى بعض الأمثلة لتجعلك تبدأ. إليك ملخص لما يحتوي عليه:
لتثبيت واستخدام Covele ، يرجى اتباع تعليمات "البدء" أدناه. إذا كنت ترغب في الانتقال مباشرة إلى تشغيل تطبيقات Android ، فاتبع الإرشادات الواردة في ملف readMe على https://github.com/sllam/vingle/tree/master/android_apps.
لتشغيل المترجم القادم ومولد الرمز ، ستحتاج إلى:
لتشغيل الرموز التي تم إنشاؤها القادمة ، ستحتاج إلى:
للحصول على برنامج التحويل البرمجي لـ Covele ، ستحتاج أولاً إلى تشغيل Python 2.7. بعد ذلك ، ستحتاج إلى اثنين من وحدات Python غير القياسية ، Ply و Z3py. يرجى المتابعة إلى http://www.dabeaz.com/ply/ و https://github.com/z3prover/z3 للحصول على المصادر المعنية وتثبيت التعليمات.
** مهم! ستحتاج إلى تثبيت روابط Z3 Python. انظر المستندات في https://github.com/z3prover/z3 ، وخاصة روابط Z3 -> بيثون
بمجرد الحصول عليها ، انتقل إلى https://github.com/sllam/pysetcomp ، وتثبيت:
pysetcomp $ sudo python setup.py تثبيت
بعد ذلك ، ستحتاج إلى مترجم MSRE ، وتابع إلى https://github.com/sllam/msre ، وتثبيت المترجم الخاص به فقط:
MSRE $ CD Compiler/MSREX
MSRE/برنامج التحويل البرمجي/msrex $ sudo python setup.py تثبيت
لقد تم تعيينك تقريبًا ، يجب أن تكون قادرًا الآن على إعداد وتثبيت برنامج التحويل البرمجي القادم ، وقم بذلك عن طريق تشغيل ملف Make:
قادم $ sudo جعل التثبيت
هذا سيفعل ما يلي:
لاختبار Covele ، انتقل إلى دليل المثال وجربه:
أمثلة CONSLE $ CD
CONTLE/APPECITIONS $ CMGC RUGRACKING.CMG
سترى مجموعة من الإخراج ، ونأمل ألا توجد رسائل خطأ. إذا كان قد تم تشغيله بنجاح ، فيجب أن ترى دليلًا "هائلاً" مع ملف مصدر Java "Ragracing.java". تنفذ فئة Java وقت التشغيل القادم المحدد بواسطة البرنامج القادم "Ragracing.cmg". راجع مشروع Eclipse في https://github.com/sllam/vingle/tree/master/android_apps/vingledRagracing للحصول على مثال على كيفية تفاعل وقت التشغيل هذا مع لعبة Android الفعلية.
إذا واجهت أخطاء في أي من الخطوات المذكورة أعلاه ... يرجى الاتصال بي (Edmund) على [email protected]. يرجى أيضًا قبول اعتذاري ، لا يزال النموذج الأولي القادم يعمل قيد التقدم ، لكنني أعمل بجد لإحضاره إلى حالة مستقرة وأكثر قابلية للاستخدام! =)
شكر خاص لما يلي: