استمرارية (معلوماتية)
في علم الحاسوب، تعد الاستمرارية تمثيلاً تجريديًا لحالة التحكم في برنامج حاسوب.[1] الاستمرار يطبق (يعيد reifies) حالة التحكم في البرنامج، أي أن الاستمرارية هي بنية بيانات تمثل العملية الحسابية عند نقطة معينة في تنفيذ العملية؛ يمكن الوصول إلى بنية البيانات التي تم إنشاؤها بواسطة لغة البرمجة، بدلاً من إخفاءها في بيئة وقت التشغيل. تفيد عمليات الاستمرارية في تشفير آليات التحكم الأخرى في لغات البرمجة مثل الاستثناءات والمولدات والروتينات المساعدة وما إلى ذلك.
" الاستمرارية الحالية current continuation أو "استمرار خطوة الحساب" هي الاستمرارية، من منظور الكود المشغّل، الذي سيتم اشتقاقهمن النقطة الحالية في تنفيذ البرنامج. يمكن أيضًا استخدام مصطلح استمرارية للإشارة إلى استمرارية الدرجة الأولى، والتي هي عبارة عن تركيبات تعطي لغة البرمجة القدرة على حفظ حالة التنفيذ في أي نقطة والعودة إلى تلك النقطة في وقت لاحق في البرنامج، ربما عدة مرات.
دعم لغة البرمجة
تعرض العديد من لغات البرمجة استمرارية من الدرجة الأولى تحت أسماء مختلفة؛ على وجه التحديد:
- ليسب الشائع: cl-cont . يمكن للمرء أيضًا استخدام وحدات الماكرو المخصصة
- C # / VB. NET :
async
وawait
: «الاشتراك بقية الطريقة باعتبارها استمرارا، ومن ثم العودة إلى المتصل على الفور، فإن المهمة الاحتجاج على استمرار عندما يكمل». البرمجة غير المتزامنة لـ C # - فاكتور:
callcc0
وcallcc1
- هاسكل: استمرار الكائن الدقيق الاحادي الخلية في
Control.
Monad.
Cont
- Haxe : haxe متابعة
- أيقونة، Unicon :
create, suspend, @
عامل التشغيل: coexpressions - جافا: Lightwolf javaflow (يتطلب معالجة الرمز الثانوي في وقت التشغيل أو وقت الترجمة)
- كوتلن:
Continuation
- جافا سكريبت وحيد القرن:
Continuation
- باروت:
Continuation
PMC ؛ يستخدم أسلوب التمرير المستمر لجميع تدفق التحكم - بيرل: كورو والاستمرارية
- Pico :
call(exp())
continue(aContinuation, anyValue)
- بايثون: استمرار
_continuation.continulet
- راكيت:
call-with-current-continuation
(عادة ما يتم اختصارهcall/cc
) - روبي:
callcc
- سكالا:
scala.util.continuations
يوفرshift
/reset
scala.util.continuations
- سكيم:
call-with-current-continuation
(عادة ما يتم اختصارهcall/cc
) - Smalltalk :
Continuation currentDo:
يمكن تنفيذ عمليات الاستمرارية في معظم بيئات Smalltalk الحديثة بدون دعم VM إضافي. - معيار ML لنيوجيرسي:
SMLofNJ.
Cont.callcc
- Unlambda :
c
، عملية التحكم في التدفق للمكالمة مع استمرار التيار
انظر أيضًا
- تدفق التحكم
- اذهب إلى
- كومة السباغيتي
- Quajects ، نوع من الكائن الذي يسمح بتعيين عمليات الاستمرارية القابلة للتحديد (تسمى «وسائل الشرح») للطرق على أساس كل كائن، من خلال حقن التبعية.
المراجع
- ^ "معلومات عن استمرارية (معلوماتية) على موقع semanticscholar.org". semanticscholar.org. مؤرشف من الأصل في 2022-03-17.
قراءة متعمقة
- بيتر لاندين. تقرير تعميم القفزات والتسميات . UNIVAC Systems Programming Research. أغسطس 1965. أعيد طبعها بترتيب أعلى وحساب رمزي، 11 (2): 125-143، 1998، مع مقدمة كتبها Hayo Thielecke.
- درو ماكديرموت وجيري سوسمان. دليل Conniver المرجعي MIT AI Memo 259. مايو 1972.
- دانيال بوبرو: نموذج لهياكل التحكم في لغات برمجة الذكاء الاصطناعي IJCAI 1973.
- كارل هيويت وبيتر بيشوب وريتشارد ستيجر. شكلية فاعلية عالمية للذكاء الاصطناعي IJCAI 1973.
- كريستوفر ستراشي وكريستوفر ب. وادسورث. تابع: دلالات رياضية للتعامل مع القفزات الكاملة دراسة فنية PRG-11. مختبر الحوسبة بجامعة أكسفورد. يناير 1974. أعيد طبعها بترتيب أعلى وحساب رمزي، 13 (1/2): 135-152، 2000، مع مقدمة بقلم كريستوفر ب. وادسورث.
- جون سي رينولدز. المترجمون التعريفيون لجلسات البرمجة عالية المستوى في المؤتمر الوطني الخامس والعشرين لـ ACM ، ص. 717-740، 1972. أعيد طبعه في الحساب الأعلى والحساب الرمزي 11 (4): 363-397، 1998، مع مقدمة.
- جون سي رينولدز. حول العلاقة بين وقائع الدلالات المباشرة والاستمرارية للندوة الثانية حول الأتمتة واللغات والبرمجة. المجلد LNCS. 14، ص. 141-156، 1974.
- Reynolds، John C. (1993). "The discoveries of continuations" (PDF). Lisp and Symbolic Computation. ج. 6 ع. 3/4: 233–248. مؤرشف من الأصل (PDF) في 2019-03-03.
- جيرالد سوسمان وجاي ستيل. SCHEME: مترجم لـ Extended Lambda Calculus AI Memo 349، MIT Artificial Intelligence Laboratory ، كامبريدج، ماساتشوستس، ديسمبر 1975. أعيد طبعه في الحساب الأعلى والحساب الرمزي 11 (4): 405-439، 1998، مع مقدمة.
- روبرت هايب، ر. كينت ديبفيج، كارل بروجمان. تمثيل التحكم في وجود إجراءات استمرار من الدرجة الأولى لمؤتمر ACM SIGPLAN '90 حول تصميم لغة البرمجة وتنفيذها، ص. 66-77.
- ويل كلينجر، آن هارتهايمر، إريك أوست. استراتيجيات تنفيذ إجراءات المتابعة لمؤتمر ACM لعام 1988 حول LISP والبرمجة الوظيفية، ص. 124-131، 1988. إصدار المجلة: الحوسبة العليا والرمزية، 12 (1): 7-45، 1999.
- كريستيان كوينيك. عكس عكس التحكم أو، المتابعة مقابل البرمجة المتمركزة على الصفحة إشعارات SIGPLAN 38 (2)، ص. 57-64، 2003.
روابط خارجية
- ورشة عمل ACM SIGPLAN حول الاستمرارية 2011 في ICFP .
- استمرار Curmudgeons لسام روبي
- قم بتدريس مخطط نفسك في Fixnum Days by Dorai Sitaram فصلًا رائعًا عن التتابعات .
- استمرار و Python Stackless بواسطة Tismer كريستيان
- وقائع ورشة العمل الرابعة عبر الإنترنت ACM SIGPLAN حول الاستمرارية
- الإجراءات عبر الإنترنت لورشة العمل الثانية ACM SIGPLAN حول الاستمرارية
- الاستمرارية والوظائف والقفزات
- http://okmij.org/ftp/continuations/ بواسطة أوليغ كيسليوف
- https://wiki.haskell.org/Continuations
- وحيد القرن مع استمرار
- استمرار في Java خالص من إطار تطبيق الويب RIFE
- استمرار تصحيح الأخطاء في Java خالص من إطار عمل تطبيق الويب RIFE
- مقارنة المولدات والملاحق والمواصلات، مصدر المثال أعلاه