نوع الجلسة

في نظرية الأنواع ، تُستخدم أنواع الجلسات لضمان صحة البرامج المتزامنة . فهي تضمن أن الرسائل المرسلة والمستلمة بين البرامج المتزامنة تكون بالترتيب والنوع المتوقعين . [ 1 ] [ 2 ] وقد تم تكييف أنظمة أنواع الجلسات لتناسب كلاً من أنظمة القنوات وأنظمة الممثلين . [ 3 ]

تُستخدم أنواع الجلسات لضمان الخصائص المرغوبة في الأنظمة المتزامنة والموزعة ، أي عدم وجود أخطاء في الاتصال أو حالات تعطل، والامتثال للبروتوكول. [ 4 ]

أنواع الجلسات الثنائية مقابل جلسات متعددة الأطراف

يمكن التحقق من التفاعل بين عمليتين باستخدام أنواع الجلسات الثنائية ، بينما يمكن التحقق من التفاعلات بين أكثر من عمليتين باستخدام أنواع الجلسات متعددة الأطراف . [ 1 ] [ 5 ] في أنواع الجلسات متعددة الأطراف، تُوصف التفاعلات بين جميع المشاركين باستخدام نوع عام ، والذي يُسقط بعد ذلك إلى أنواع محلية تصف الاتصال من وجهة نظر كل مشارك. ومن المهم أن النوع العام يُشفّر معلومات تسلسل الاتصال، والتي ستُفقد إذا استخدمنا أنواع الجلسات الثنائية لتشفير نفس الاتصال. [ 6 ]

التعريف الرسمي لأنواع الجلسات الثنائية

يمكن وصف أنواع الجلسات الثنائية باستخدام عمليات الإرسال (!{\displaystyle !} ), عمليات الاستقبال (؟{\displaystyle } ), الفروع (و{\displaystyle \&}), اختيارات ({\displaystyle \oplus }), التكرار (رهـج{\displaystyle rec}) والإنهاء (هـند{\displaystyle end}). [ 2 ]

على سبيل المثال،S=!بooل.؟أنانت.هـند{\displaystyle S=\;!bool.?int.end}يمثل نوع الجلسةS{\displaystyle S}الذي يرسل أولاً قيمة منطقية (!بooل{\displaystyle !bool}ثم يستقبل عددًا صحيحًا (؟أنانت{\displaystyle ?int}) قبل الإنهاء النهائي (هـند{\displaystyle end}).

التطبيقات

تم تكييف أنواع الجلسات مع العديد من لغات البرمجة الموجودة، بما في ذلك:

مراجع

  1. 1 2 هوتيل، هانز؛ لانيز، إيفان. فاسكونسيلوس، فاسكو T .؛ كايري، لويس؛ كاربوني، ماركو؛ دينيلو، بيير مالو؛ موستروس، ديميتريس؛ بادوفاني، لوكا؛ رافارا، أنطونيو؛ توستو، إميليو؛ فييرا، هوغو توريس؛ زافاتارو ، جيانلويجي (5 أبريل 2016). "أسس أنواع الجلسات والعقود السلوكية" . مسوحات الحوسبة ACM . 49 (1): 3: 1-3: 36. دوى : 10.1145/2873052 . اتش دي ال : 2381/38761 . ISSN 0360-0300 . S2CID 3580137 .  
  2. 1 2 أنكونا، دافيد (2016). الأنواع السلوكية في لغات البرمجة . هانوفر، ماساتشوستس: ناو بابليشرز. ISBN 978-1-68083-135-1. OCLC 1053840486 . 
  3. فاولر، سيمون؛ ليندلي، سام؛ وادلر، فيليب (10 مايو 2017). "مزج الاستعارات: الفاعلون كقنوات والقنوات كفاعلين (نسخة موسعة)". arXiv : 1611.06276 [ cs.PL ].
  4. سكالاس، ألكيست؛ يوشيدا، نوبوكو (يونيو 2018). "أنواع جلسات متعددة الأطراف، ما وراء الازدواجية" . مجلة الأساليب المنطقية والجبرية في البرمجة . 97 : 55-84 . doi : 10.1016/j.jlamp.2018.01.001 . hdl : 10044/1/56777 . S2CID 48360420 . 
  5. هوندا، كوهي؛ يوشيدا، نوبوكو؛ كاربون، ماركو (2008). "أنواع الجلسات غير المتزامنة متعددة الأطراف". وقائع الندوة السنوية الخامسة والثلاثين لجمعية ACM SIGPLAN-SIGACT حول مبادئ لغات البرمجة . الصفحات 273-284 . doi : 10.1145/1328438.1328472 . hdl : 10044/1/26368 . ISBN  9781595936899. S2CID 53038488 . 
  6. يوشيدا، نوبوكو؛ غيري، لورينزو (2019). مقدمة مبسطة للغاية لأنواع جلسات الأطراف المتعددة . ICDCIT 2020. doi : 10.1007/978-3-030-36987-3_5 .
  7. 1 2 "برمجة الجلسات في سكالا" . alcestes.github.io . تم ​​الاطلاع عليه في 2 نوفمبر 2021 .
  8. "STMonitor" . chrisbartoloburlo.github.io . تم ​​الاطلاع عليه بتاريخ 2 نوفمبر 2021 .
  9. هارفي، بول؛ فاولر، سيمون؛ داردا، أورنيلا؛ جاي، سيمون ج. (2021). "أنواع جلسات متعددة الأطراف للتكيف الآمن أثناء التشغيل في لغة الممثل" . المؤتمر الأوروبي الخامس والثلاثون للبرمجة كائنية التوجه (ECOOP 2021) . 194 : 10:1–10:30. doi : 10.4230/LIPIcs.ECOOP.2021.10 . S2CID 234681015 . 
  10. ^ جيسبرسن، توماس براخت لومان؛ مونكسجارد، فيليب؛ لارسن ، كين فريس (2015-08-30). "أنواع جلسات الصدأ" . وقائع ورشة عمل ACM SIGPLAN الحادية عشرة حول البرمجة العامة . WGP 2015. جمعية آلات الحوسبة. الصفحات من 13 إلى 22. دوى : 10.1145/2808098.2808100 . رقم ISBN  9781450338103. S2CID 18320631 . 
  11. كوك، وين (12 سبتمبر 2019). "تنوع رستي: جلسات خالية من حالات الجمود مع الفشل في رست" . وقائع إلكترونية في علوم الحاسوب النظرية . 304 : 48-60 . arXiv : 1909.05970 . doi : 10.4204/EPTCS.304.4 . ISSN 2075-2180 . S2CID 198166990 .  
  12. يوشيدا، نوبوكو؛ نيكوفا، روميانا (29 مارس 2017). "فاعلو الجلسات متعددة الأطراف" . الأساليب المنطقية في علوم الحاسوب . 13 (1) 3227. arXiv : 1609.05687 . doi : 10.23638/LMCS-13(1:17)2017 . S2CID 65240382 . 
  13. فاولر، سيمون (10 أغسطس 2016). "تنفيذ إرلانج لممثلي جلسات متعددة الأطراف" . وقائع إلكترونية في علوم الحاسوب النظرية . 223 : 36-50 . arXiv : 1608.03321 . doi : 10.4204/EPTCS.223.3 . ISSN 2075-2180 . S2CID 418549 .  
  14. بادوفاني، لوكا (2017). "تنفيذ مكتبة بسيط للجلسات الثنائية" . مجلة البرمجة الوظيفية . 27 e4. doi : 10.1017/S0956796816000289 . hdl : 2318/1634956 . ISSN 0956-7968 . S2CID 19776781 .  
  15. إيماي، كيغو؛ يوشيدا، نوبوكو؛ يوين، شوجي (مارس 2019). "Session-ocaml: مكتبة قائمة على الجلسات مع قطبية وعدسات" . مجلة علوم برمجة الحاسوب . 172 : 135-159 . doi : 10.1016/j.scico.2018.08.005 . hdl : 10044/1/63748 . ISSN 0167-6423 . S2CID 69673075 .  
  16. إيماي، كيغو. "جلسة OCaml" . www.ct.info.gifu-u.ac.jp . تم الاطلاع عليه بتاريخ 2 نوفمبر 2021 .
  17. كوك، وين؛ داردا، أورنيلا (26 مارس 2021). "أنواع الجلسات الخالية من حالات الجمود في لغة هاسكل الخطية". arXiv : 2103.14481 [ cs.PL ].
  18. "مدقق حالة النوع في جافا" . جيت هاب .
  19. ^ باتشياني، لورنزو. برافيتي، ماريو؛ جيونتي، ماركو؛ موتا، جواو؛ رافارا، أنطونيو (2022). "مدقق Java typestate يدعم الميراث" . الخيال العلمي. حساب. برنامج . 221 102844. دوى : 10.1016/j.scico.2022.102844 . اتش دي ال : 10362/145315 . S2CID 250940803 . 
  20. ^ موتا، جواو؛ جيونتي، ماركو؛ رافارا، أنطونيو (2021). "مدقق Java Typestate" . وقائع التنسيق 2021 . ملاحظات محاضرة في علوم الكمبيوتر. المجلد. 12717. ص 121 – 133. دوى : 10.1007 / 978-3-030-78142-2_8 . رقم ISBN   978-3-030-78141-5. S2CID 235383301 . 
  21. روبيتشيني، أليسيو؛ بادوفاني، لوكا (2023). "جلسات سويفت: تطبيق مكتبة لأنواع الجلسات الثنائية في سويفت" . جيت هاب .