استمرارية (معلوماتية)

في علم الحاسوب، تعد **الاستمرارية** تمثيلاً تجريديًا لحالة التحكم في برنامج حاسوب. الاستمرار يطبق (يعيد reifies) حالة التحكم في البرنامج، أي أن الاستمرارية هي بنية بيانات تمثل العملية الحسابية عند نقطة معينة في تنفيذ العملية؛ يمكن الوصول إلى بنية البيانات التي تم إنشاؤها بواسطة لغة البرمجة، بدلاً من إخفاءها في بيئة وقت التشغيل. تفيد عمليات الاستمرارية في تشفير آليات التحكم الأخرى في لغات البرمجة مثل الاستثناءات والمولدات والروتينات المساعدة وما إلى ذلك.

" **الاستمرارية الحالية** **current continuation** أو "استمرار خطوة الحساب" هي الاستمرارية، من منظور الكود المشغّل، الذي سيتم اشتقاقهمن النقطة الحالية في تنفيذ البرنامج. يمكن أيضًا استخدام مصطلح *استمرارية* للإشارة إلى **استمرارية الدرجة الأولى**، والتي هي عبارة عن تركيبات تعطي لغة البرمجة القدرة على حفظ حالة التنفيذ في أي نقطة والعودة إلى تلك النقطة في وقت لاحق في البرنامج، ربما عدة مرات.

## دعم لغة البرمجة
تعرض العديد من لغات البرمجة استمرارية من الدرجة الأولى تحت أسماء مختلفة؛ على وجه التحديد:

* ليسب الشائع: cl-cont . يمكن للمرء أيضًا استخدام وحدات الماكرو المخصصة
* C # / VB. NET : `async` و `await` : «الاشتراك بقية الطريقة باعتبارها استمرارا، ومن ثم العودة إلى المتصل على الفور، فإن المهمة الاحتجاج على استمرار عندما يكمل». البرمجة غير المتزامنة لـ C #
* فاكتور: `callcc0` و `callcc1`
* هاسكل: استمرار الكائن الدقيق الاحادي الخلية في `[http://hackage.haskell.org/packages/archive/mtl/2.0.1.0/doc/html/Control-Monad-Cont.html Control.]` `[http://hackage.haskell.org/packages/archive/mtl/2.0.1.0/doc/html/Control-Monad-Cont.html Monad.]` `[http://hackage.haskell.org/packages/archive/mtl/2.0.1.0/doc/html/Control-Monad-Cont.html Cont]`
* Haxe : haxe متابعة
* أيقونة، Unicon : `create, suspend, @` عامل التشغيل: coexpressions
* جافا: Lightwolf javaflow (يتطلب معالجة الرمز الثانوي في وقت التشغيل أو وقت الترجمة)
* كوتلن: `Continuation`
* جافا سكريبت وحيد القرن: `Continuation`
* باروت: `Continuation` PMC ؛ يستخدم أسلوب التمرير المستمر لجميع تدفق التحكم
* بيرل: كورو والاستمرارية
* Pico : `call(exp())` `continue(aContinuation, anyValue)`
* بايثون: استمرار `[http://pypy.readthedocs.org/en/latest/stackless.html _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 ، نوع من الكائن الذي يسمح بتعيين عمليات الاستمرارية القابلة للتحديد (تسمى «وسائل الشرح») للطرق على أساس كل كائن، من خلال حقن التبعية.

## المراجع

## قراءة متعمقة

* بيتر لاندين. *تقرير تعميم القفزات والتسميات* . 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 ، ص. &nbsp; 717-740، 1972. أعيد طبعه في الحساب الأعلى والحساب الرمزي 11 (4): 363-397، 1998، مع مقدمة.
* جون سي رينولدز. *حول العلاقة بين* وقائع *الدلالات المباشرة والاستمرارية للندوة* الثانية حول الأتمتة واللغات والبرمجة. المجلد LNCS. 14، ص. &nbsp; 141-156، 1974.
* 
* جيرالد سوسمان وجاي ستيل. *SCHEME: مترجم لـ Extended Lambda Calculus* AI Memo 349، MIT Artificial Intelligence Laboratory ، كامبريدج، ماساتشوستس، ديسمبر 1975. أعيد طبعه في الحساب الأعلى والحساب الرمزي 11 (4): 405-439، 1998، مع مقدمة.
* روبرت هايب، ر. كينت ديبفيج، كارل بروجمان. *تمثيل التحكم في وجود* إجراءات *استمرار من الدرجة الأولى* لمؤتمر ACM SIGPLAN '90 حول تصميم لغة البرمجة وتنفيذها، ص. &nbsp; 66-77.
* ويل كلينجر، آن هارتهايمر، إريك أوست. *استراتيجيات تنفيذ* إجراءات المتابعة لمؤتمر ACM لعام 1988 حول LISP والبرمجة الوظيفية، ص. &nbsp; 124-131، 1988. إصدار المجلة: الحوسبة العليا والرمزية، 12 (1): 7-45، 1999.
* كريستيان كوينيك. *عكس عكس التحكم أو، المتابعة مقابل البرمجة المتمركزة على الصفحة* إشعارات SIGPLAN 38 (2)، ص. &nbsp; 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
* مقارنة المولدات والملاحق والمواصلات، مصدر المثال أعلاه

تصنيف:تدفق السيطرة