التراجع

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

إن التوقعات المتعلقة بالتراجع سهلة الفهم: أن يكون هناك وظيفة يمكن التنبؤ بها، وأن يتضمن كل الأوامر "التي يمكن التراجع عنها". [1] وعادة ما يكون التراجع متاحًا حتى يتراجع المستخدم عن كل العمليات التي تم تنفيذها. ولكن هناك بعض الإجراءات التي لا يتم تخزينها في قائمة التراجع، وبالتالي لا يمكن التراجع عنها. على سبيل المثال، لا يمكن التراجع عن حفظ الملف ، ولكن يتم وضعه في قائمة الانتظار لإظهار أنه تم تنفيذه. وهناك إجراء آخر لا يتم تخزينه عادةً، وبالتالي لا يمكن التراجع عنه، وهو التمرير أو التحديد . [2]

العكس من التراجع هو إعادة الأمر . يقوم الأمر redo بعكس التراجع أو نقل المخزن المؤقت إلى حالة أحدث.

المكونات المشتركة لوظيفة التراجع هي الأوامر التي نفذها المستخدم، ومخزن التاريخ الذي يخزن الإجراءات المكتملة، ومدير التراجع/الإعادة للتحكم في مخزن التاريخ، وواجهة المستخدم للتفاعل مع المستخدم. [3]

في معظم التطبيقات الرسومية لمعظم أنظمة التشغيل الرئيسية (مثل Microsoft Windows و Linux و BSDs )، يكون اختصار لوحة المفاتيح لأمر التراجع هو Ctrl+Z أو Alt+Backspace، ويكون اختصار الإعادة هو Ctrl+Y أو Ctrl + Shift +Z. في معظم تطبيقات macOS، يكون اختصار أمر التراجع هو Command -Z، ويكون اختصار الإعادة هو Command - Shift -Z. على جميع الأنظمة الأساسية، يمكن أيضًا الوصول إلى وظائف التراجع/الإعادة عبر قائمة التحرير .

تاريخ

تم اختراع القدرة على التراجع عن عملية على جهاز الكمبيوتر بشكل مستقل عدة مرات، استجابة لكيفية استخدام الناس لأجهزة الكمبيوتر. [4]

يُقال إن نظام استرجاع الملفات وتحريرها ، والذي تم تطويره في عام 1968 في جامعة براون ، هو أول نظام قائم على الكمبيوتر يحتوي على ميزة "التراجع". [5] [6]

قام وارن تيتلمان بتطوير مساعد المبرمج كجزء من BBN-LISP مع وظيفة التراجع، بحلول عام 1971. [7]

كان محرر النصوص Xerox PARC Bravo يحتوي على أمر التراجع في عام 1974. [8] أشار تقرير بحثي عام 1976 من قبل لانس أ. ميلر وجون سي توماس من شركة IBM ، القضايا السلوكية في استخدام الأنظمة التفاعلية ، [9] إلى أنه "سيكون من المفيد جدًا السماح للمستخدمين بـ"استعادة" الأمر السابق مباشرة على الأقل (عن طريق إصدار أمر "تراجع" خاص)." [10] قام المبرمجون في مركز أبحاث Xerox PARC بتعيين اختصار لوحة المفاتيح Ctrl-Z لأمر التراجع، والذي أصبح ميزة أساسية لمحرري النصوص ومعالجات الكلمات في عصر الكمبيوتر الشخصي . [11] في عام 1980، بدأ لاري تيسلر من Xerox PARC العمل في شركة Apple Computer . هناك، دعا هو وبيل أتكينسون إلى وجود أمر تراجع كتركيبة قياسية على Apple Lisa . تمكن أتكينسون من إقناع المطورين الفرديين لبرنامج تطبيق ليزا بتضمين مستوى واحد للتراجع والإعادة، لكنه لم ينجح في الضغط من أجل مستويات متعددة. [ بحاجة لمصدر ] عندما قدمت شركة أبل خليفة ليزا، ماكنتوش ، اشترطت أن تتضمن جميع التطبيقات القياسية "تراجع" كأمر أول في قائمة "تحرير"، [12] والتي ظلت المعيار على أنظمة التشغيل ماك أو إس وويندوز حتى يومنا هذا.

تم تقديم أوامر التراجع متعددة المستويات في الثمانينيات، مما يسمح للمستخدمين باستعادة سلسلة من الإجراءات، وليس فقط الإجراء الأخير. [11] كان لدى EMACS ومحرري الشاشة الآخرين الذين يعتمدون على تقاسم الوقت هذه الأوامر قبل برامج الكمبيوتر الشخصية. كان CygnusEd أول محرر نصوص Amiga مزود بميزة التراجع/الإعادة غير المحدودة. كان AtariWriter ، وهو تطبيق معالجة الكلمات الذي تم تقديمه في عام 1982، يتميز بميزة التراجع. كان لدى NewWord، وهو برنامج معالجة كلمات آخر أصدرته شركة NewStar في عام 1984، أمر إلغاء المحو. [11] كان لدى برنامج VisiWord من IBM أيضًا أمر إلغاء الحذف.

التراجع وإعادة النماذج

يمكن تصنيف نماذج التراجع إلى نماذج خطية أو غير خطية. يمكن تصنيف نموذج التراجع غير الخطي إلى نماذج فرعية مثل نموذج النص، ونموذج us&r، ونموذج ثلاثي، ونموذج تراجع انتقائي. [1]

بعض الخصائص المشتركة للنماذج هي:

  • خاصية التنفيذ المستقر: يتم تمثيل الحالة كقائمة مرتبة من الأوامر. وهذا يعني أن الأمر "يتم التراجع عنه دائمًا في الحالة التي تم الوصول إليها بعد التنفيذ الأصلي." [3]
  • تنفيذ مستقر ضعيف: وهذا يعني أنه إذا تم تنفيذ أمر التراجع، فإن جميع الأوامر التي تعتمد على الأمر التراجع تعتمد على الأمر التراجع.
  • خاصية النتيجة المستقرة: تحمل هذه الخاصية نفس المعنى مثل خاصية التنفيذ المستقرة باستثناء القائمة. تتضمن القائمة المرتبة للأوامر أنها تم تنفيذها بدلاً من الأوامر فقط.
  • تبديلي: وهذا يعني أن الحالة التي تم الوصول إليها بعد التراجع وإعادة تنفيذ أمرين مختلفين هي نفسها عندما يتم تنفيذهما بالترتيب المعاكس.
  • خاصية التراجع البسيطة: تصف أن "عملية التراجع عن الأمر C تتراجع فقط عن الأمر C وجميع الأوامر الأحدث من C والتي تعتمد على C." [3]

التراجع الخطي

يتم تنفيذ التراجع الخطي باستخدام بنية بيانات مكدس (أخيرًا في أول خروج (LIFO)) تخزن تاريخًا لجميع الأوامر التي تم تنفيذها. عند تنفيذ أمر جديد، يتم إضافته إلى أعلى المكدس. وبالتالي، لا يمكن التراجع إلا عن آخر أمر تم تنفيذه وإزالته من التاريخ. يمكن تكرار التراجع طالما أن التاريخ ليس فارغًا. [1]

نموذج خطي مقيد

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

التراجع غير الخطي

الفرق الرئيسي بين التراجع الخطي والتراجع غير الخطي هو إمكانية قيام المستخدم بالتراجع عن الأوامر التي تم تنفيذها بترتيب عشوائي. لديهم الفرصة للتراجع ليس عن الأمر الأخير ولكن بدلاً من ذلك اختيار أمر من القائمة. [3] بالنسبة للنموذج غير الخطي، توجد فئات فرعية تنفذ هذا النموذج.

نموذج النص

يتعامل نموذج البرنامج النصي مع إجراءات المستخدم كتحرير لبرنامج نصي للأوامر. يتم تفسير قائمة التاريخ للأوامر التي تم تنفيذها "كبرنامج نصي، ويتم تعريف تأثير التراجع على أنه نفس الشيء كما لو لم يحدث إجراء التراجع في المقام الأول." [1] ونتيجة للتراجع، يجب أن تكون الحالة كما لو لم يتم تنفيذ أمر التراجع مطلقًا. أحد عيوب هذا النموذج هو أن المستخدم يجب أن يعرف الارتباط بين أمر التراجع والحالة الحالية لتجنب الآثار الجانبية. يمكن أن يكون أحد هذه الآثار الجانبية على سبيل المثال التكرار. ومن المشاكل الأخرى أنه إذا "تم إعادة تنفيذ الأوامر اللاحقة في حالة مختلفة عن تلك التي تم تنفيذها في الأصل في واجهات التلاعب المباشر، فإن إعادة تفسير إجراء المستخدم الأصلي هذا ليست واضحة أو محددة جيدًا دائمًا". [1]

نموذج US&R

الميزة الخاصة لهذا النموذج هي أنه يحتوي على خيار تخطي الأمر. وهذا يعني أنه يمكن تخطي إعادة الأمر. يتم وضع علامة على الأمر الذي تم تخطيه على أنه تم تخطيه ولكن لا يتم حذفه. عند تنفيذ أوامر جديدة، يتم الاحتفاظ بقائمة التاريخ، وبالتالي يمكن إعادة إنتاج ترتيب الأوامر المنفذة بذلك. يمكن وصف الترتيب من خلال شجرة التاريخ التي هي عبارة عن رسم بياني موجه، "لأنه من الممكن الاستمرار في إعادة تنفيذ الأوامر من فرع آخر وإنشاء رابط في الرسم البياني". [1] على الرغم من أن مجموعة الأوامر بسيطة وسهلة الفهم، إلا أن البنية المعقدة مع تخطي الفروع وربطها يصعب فهمها وتذكرها، عندما يريد المستخدم التراجع عن أكثر من خطوة واحدة. [1]

النموذج الثلاثي

هذا النموذج غير الخطي للتراجع لديه بالإضافة إلى التراجع والإعادة إمكانية التدوير. لديه نفس بنية البيانات مثل النماذج المذكورة أعلاه مع قائمة التاريخ وقائمة إعادة منفصلة تتضمن عمليات الإعادة. تحدد عملية التدوير الأمر الأخير في قائمة الإعادة أمامها. من ناحية، يعني هذا أنه يمكن تحديد الأمر التالي المراد إعادة تنفيذه عن طريق وضعه في المقدمة. من ناحية أخرى، يمكن استخدام التدوير "لتحديد المكان في قائمة الإعادة حيث ستضع عملية التراجع التالية الأمر". [1] وبالتالي فإن قائمة الإعادة غير مرتبة. "للتراجع عن أمر معزول، يجب على المستخدم التراجع عن عدد من الخطوات، وتدوير قائمة الإعادة، ثم إعادة عدد من الخطوات". [1] لإعادة التنفيذ، يجب تدوير القائمة حتى يصبح الأمر المطلوب أعلاه.

التراجع الانتقائي

يقول جاكوبك وآخرون إن التراجع الانتقائي هو ميزة يمكن أن يقدمها النموذج ولكن لا يوجد تعريف واضح للتراجع الانتقائي. [3] حدد المؤلفون الوظائف التي يجب أن يتمتع بها النموذج عندما يدعم التراجع الانتقائي. يجب أن يكون من الممكن "التراجع عن أي إجراء تم تنفيذه في مخزن السجل. يجب ترك الإجراءات المستقلة عن الإجراء الذي يتم التراجع عنه دون مساس". [3] تمامًا مثل ذلك يجب أن يكون الإعادة ممكنًا لأي أمر تم التراجع عنه. الوظيفة الثالثة للتراجع الانتقائي هي أنه "لا يمكن تجاهل أي أمر تلقائيًا من مخزن السجل دون طلب مباشر من المستخدم". [3] بالنسبة للتراجع الانتقائي ينطبق أن التراجع والإعادة قابلان للتنفيذ خارج أي سياق. هناك ثلاث قضايا رئيسية. الأولى هي أن أوامر التراجع يمكن أن تكون خارج السياق الأصلي. من خلال هذا يمكن أن تكون هناك مراجع ميتة يجب التعامل معها. القضية الثانية هي أنه يمكن التراجع عن الأوامر المعدلة وبالتالي يجب حل الحالة التي سيتم تقديمها بعد التراجع. القضية الثالثة هي تجاهل مشاكل الأوامر. لا يوجد مؤشر للتراجع الانتقائي في القوائم، لذا فهذا يعني أنه لا ينبغي تجاهل أي أمر من المكدس. [3]

التراجع الانتقائي المباشر

التراجع الانتقائي المباشر هو امتداد للتراجع الخطي المقيد مع شجرة التاريخ. تقوم العملية بإنشاء نسخة من الأمر المحدد، وتنفيذها وإضافتها إلى قائمة التاريخ. هناك عمليتان غير خطيتين، التراجع الانتقائي والإعادة الانتقائية، وبالتالي فهي أكثر تناسقًا. [1]

تطبيق متعدد المستخدمين

عندما يتمكن مستخدمون متعددون من تحرير نفس المستند في نفس الوقت، يلزم التراجع عن إجراء متعدد المستخدمين. يتراجع التراجع العالمي متعدد المستخدمين عن آخر إجراء تم إجراؤه على المستند، بغض النظر عن الشخص الذي قام بالتحرير. يتراجع التراجع المحلي متعدد المستخدمين فقط عن الإجراءات التي قام بها المستخدم المحلي، الأمر الذي يتطلب تنفيذ تراجع غير خطي.

عندما يمكن استخدام التراجع للرجوع إلى الوراء عبر تعديلات متعددة، فإن أمر الإعادة يتقدم للأمام عبر سجل الإجراءات. عادةً ما يؤدي إجراء تعديل جديد إلى مسح قائمة الإعادة. إذا تم استخدام نموذج إعادة متفرع، فإن التحرير الجديد يتفرع من سجل الإجراءات.

يختلف عدد الإجراءات السابقة التي يمكن التراجع عنها باختلاف البرنامج والإصدار وإمكانيات الأجهزة أو البرامج. على سبيل المثال، يبلغ حجم كومة التراجع/الإعادة الافتراضية في Adobe Photoshop 20 ولكن يمكن للمستخدم تغييرها. وكمثال آخر، كانت الإصدارات السابقة من برنامج الرسام Microsoft Paint تسمح فقط بالتراجع عن ثلاثة تعديلات كحد أقصى؛ وقد زاد الإصدار المقدم في Windows 7 هذا الحد إلى 50 تعديلاً.

في بعض الأحيان، تتخلص ميزات التراجع البسيطة التي تتم من خلال تحرير واحد من "إعادة" من خلال التعامل مع أمر التراجع نفسه باعتباره إجراءً يمكن التراجع عنه. يُعرف هذا باسم نموذج التراجع المقلوب، لأن المستخدم يمكنه التبديل بين حالتين للبرنامج باستخدام أمر التراجع. [13] كان هذا هو النموذج القياسي قبل التبني الواسع النطاق للتراجع متعدد المستويات في أوائل التسعينيات.

التراجع عن التنفيذ

يمكن تنفيذ التراجع من خلال أنماط مختلفة. الأنماط الأكثر شيوعًا هي نمط الأمر ونمط التذكار .

نمط الأمر

نمط الأمر هو نمط تصميم برمجي يغلف المعلومات من العملية في كائنات الأمر. وهذا يعني أن كل إجراء يتم تخزينه في كائن. تنفذ فئة الأمر المجرد عملية تنفيذ مجردة، لذا فإن كل كائن أمر لديه عملية تنفيذ. بالنسبة للتراجع، يجب أن تكون هناك أيضًا عملية غير منفذة، والتي تتراجع عن تأثير الأمر المنفذ، والتي يتم تخزينها في قائمة التاريخ. يتم تنفيذ التراجع والإعادة بحيث يتم تشغيل القائمة للأمام والخلف عند استدعاء أمر التنفيذ أو إلغاء التنفيذ. [14]

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

نمط تذكاري

مع نمط memento يتم تخزين الحالة الداخلية للكائن. الكائن الذي يتم حفظ الحالة فيه يسمى memento ويتم تنظيمه من خلال منشئ memento. هذا يعيد memento، يتم تهيئته بمعلومات الحالة الحالية، عند تنفيذ التراجع، بحيث يمكن التحقق من الحالة. memento مرئي فقط للمنشئ.

في نمط التذكارات، تسمى آلية التراجع باسم القائم بالرعاية. وهو مسؤول عن حفظ التذكارات ولكنه لا يغير محتوياتها أبدًا. وللتراجع، يطلب القائم بالرعاية تذكارًا من صاحب التذكارات ثم يطبق التراجع. [14]

يمكن تنفيذ الجزء الأكبر من آلية التراجع دون الاعتماد على تطبيقات أو فئات أوامر محددة. ويتضمن ذلك "إدارة قائمة التاريخ، ومتصفح التاريخ، وإدخالات القائمة للتراجع وإعادة التنفيذ وتحديث إدخالات القائمة اعتمادًا على اسم الأمر المتاح التالي." [1]

تحتوي كل فئة أوامر على طريقة do والتي يتم استدعاؤها عند تنفيذ أمر ما. تنفذ طريقة undo العملية العكسية لطريقة do. لتنفيذ العكس، هناك عدة استراتيجيات مختلفة.

  • نقطة تفتيش كاملة : هذا يعني أن الحالة الكاملة يتم حفظها بعد تنفيذ الأمر. هذا هو أسهل تنفيذ، لكنه ليس فعالاً للغاية وبالتالي لا يتم استخدامه كثيرًا.
  • إعادة التشغيل الكامل: لذلك، يتم حفظ الحالة الأولية ويمكن الوصول إلى كل حالة في قائمة التاريخ من خلال "البدء بالحالة الأولية وإعادة تنفيذ جميع الأوامر من بداية التاريخ." [1]
  • نقطة تفتيش جزئية : هذه هي الاستراتيجية الأكثر استخدامًا. يتم حفظ حالة التطبيق المتغيرة ومع التراجع يتم إعادة تعيين جزء من الحالة إلى القيمة الأمامية.
  • الدالة العكسية: لا تحتاج الدالة العكسية إلى معلومات حالة محفوظة. "على سبيل المثال، يمكن عكس الحركة عن طريق تحريك الكائن للخلف بمقدار نسبي." [1] بالنسبة للتراجع الانتقائي، لا توجد معلومات كافية لحفظ الحالة.

انظر أيضا

مراجع

  1. ^ abcdefghijklmn Berlage, Thomas (1994-09-01). "آلية التراجع الانتقائية لواجهات المستخدم الرسومية المستندة إلى كائنات الأوامر". ACM Transactions on Computer-Human Interaction . 1 (3): 269–294. doi :10.1145/196699.196721. ISSN  1073-0516. S2CID  11848679.
  2. ^ مايرز، براد أ.؛ كوسبي، ديفيد س. (13 أبريل 1996). "كائنات الأوامر الهرمية القابلة لإعادة الاستخدام". وقائع مؤتمر SIGCHI حول العوامل البشرية في أنظمة الحوسبة المشتركة - CHI '96 . ACM. ص 260-267. doi :10.1145/238386.238526. ISBN 0897917774. S2CID  17033810.
  3. ^ abcdefgh جاكوبيك ، كاريل. بولاك، ماريك؛ نيكاسكي، مارتن؛ هولوبوفا، إيرينا (2014). “عمليات التراجع/الإعادة في البيئات المعقدة”. بروسيديا علوم الكمبيوتر . 32 : 561-570. دوى : 10.1016/j.procs.2014.05.461 . ISSN  1877-0509.
  4. ^ موران، تشوكتروبوليس ويلينج (2013-01-01). الوقت التفاعلي (دكتوراه). لا جولا: جامعة كاليفورنيا، سان دييغو. ISBN 9781303194450. تم أرشفة النسخة الأصلية في 2021-04-28 . تم استرجاعها في 2016-07-07 .
  5. ^ بارنت، بليندا (2014-12-01). آلات الذاكرة: تطور النص التشعبي. Anthem Press. ص. 108. ISBN 9781783083442ولكن التطور الأكثر شعبية للمستخدمين المبتدئين في FRESS لم يكن قدرته على استيعاب شاشات ومستخدمين متعددين؛ بل كان ميزة "التراجع" - الميزة التي يفتخر بها فان دام أكثر من غيرها (فان دام 2011). كان FRESS رائدًا في التراجع على مستوى واحد لكل من معالجة الكلمات والنص التشعبي. يتم حفظ كل تعديل على ملف في إصدار ظل من بنية البيانات، مما يسمح بكل من "الحفظ التلقائي" والتراجع. لقد أدرك موظفو وطلاب جامعة براون على الفور أهمية وفائدة هذه الميزة (فان دام 1999).
  6. ^ بارنت، بليندا (2010-01-01). "صياغة واجهة المستندات التي تركز على المستخدم: نظام تحرير النص التشعبي (HES) ونظام استرجاع الملفات وتحريرها (FRESS)". Digital Humanities Quarterly . 4 (1). مؤرشف من الأصل في 2021-05-01 . تم الاسترجاع في 2016-05-27 .
  7. ^ تيتلمان، وارن (1972-01-01). "البرمجة الآلية: مساعد المبرمج". وقائع مؤتمر الكمبيوتر المشترك الذي عقد في الخريف في الفترة من 5 إلى 7 ديسمبر 1972، الجزء الثاني - AFIPS '72 (الخريف، الجزء الثاني) . نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. ص 917-921. doi :10.1145/1480083.1480119. S2CID  1276566.
  8. ^ "دليل برافو في دليل غير المبرمجين في ألتو، ص 52" (PDF) . مؤرشف من الأصل (PDF) في 2015-05-05 . تم استرجاعه في 2014-03-29 .
  9. ^ ميلر، لانس أ.؛ توماس، جون سي. (1977-09-01). "القضايا السلوكية في استخدام الأنظمة التفاعلية". المجلة الدولية لدراسات الإنسان والآلة . 9 (5): 509-536. doi :10.1016/S0020-7373(77)80002-3. ISSN  0020-7373.
  10. ^ ميلر، لانس أ.؛ جون سي توماس الابن (ديسمبر 1976). "القضايا السلوكية في استخدام الأنظمة التفاعلية". مؤرشف من الأصل (PDF) في 27 مايو 2012. تم الاسترجاع في 2011-05-21 .
  11. ^ abc Ben Zimmer (2009-09-15). "The Age of Undoing". New York Times . مؤرشف من الأصل في 2013-06-17 . تم الاسترجاع في 2013-06-02 .
  12. ^ Apple Computer, Inc. (1984). "واجهة المستخدم". Inside Macintosh، المجلد الأول .
  13. ^ روبرتا مانشيني، آلان ديكس وستيفانو ليفيالدي. 2006. "تأملات حول التراجع"
  14. ^ abc Erich Gamma; Richard Helm; Ralph Johnson; John Vlissides (1995). أنماط التصميم . ريدنج، ماساتشوستس: أديسون ويسلي. ISBN 0201633612. OCLC  31171684.
  • عصر التراجع - مقالة عن التاريخ اللغوي لعصر التراجع في مجلة نيويورك تايمز.
  • التحكم في التراجع المتتالي - ورقة بحثية تركز على ما هو التراجع المتتالي وكيف يمكن تقديمه للمستخدمين
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=تراجع&oldid=1236787340"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate