अनडू (पूर्ववत): Difference between revisions
From Vigyanwiki
No edit summary |
No edit summary |
||
| (26 intermediate revisions by 4 users not shown) | |||
| Line 1: | Line 1: | ||
{{Short description|Computer command}} | {{Short description|Computer command}} | ||
अनडू इंटरेक्शन | '''अनडू''' इंटरेक्शन प्रौद्योगिकी है जिसे अनेक कंप्यूटर प्रोग्राम में स्थापित किया जाता है। यह प्रपत्र में किए गए अंतिम परिवर्तन को समाप्त कर देता है, और इसे प्राचीन स्थिति में पुनः लाता है। कुछ और उन्नत प्रोग्रामों में, जैसे कि [[ग्राफिक्स सॉफ्टवेयर]], अनडू करें संपादित की जा रही फ़ाइल पर की गई अंतिम कमांड को नहीं लेता है। अनडू करने की संभावना के साथ, उपयोगकर्ता त्रुटि के भय के बिना अन्वेषण और कार्य कर सकते हैं, क्योंकि उन्हें सरलता से अनडू किया जा सकता है। | ||
अनडू करने की अपेक्षाओं को समझना सरल है: पूर्वानुमेय कार्यक्षमता के लिए, और सभी अनडू कमांडों को सम्मलित करने के लिए <ref name=":0">{{Cite journal|last=Berlage|first=Thomas|date=1994-09-01|title=कमांड ऑब्जेक्ट्स के आधार पर ग्राफिकल यूजर इंटरफेस के लिए एक चयनात्मक पूर्ववत तंत्र|journal=ACM Transactions on Computer-Human Interaction|volume=1|issue=3|pages=269–294|doi=10.1145/196699.196721|s2cid=11848679|issn=1073-0516}}</ref> सामान्यतः अनडू तब तक उपलब्ध होता है जब तक कि उपयोगकर्ता सभी निष्पादित कार्यों को अनडू नहीं कर देता है। किन्तु कुछ क्रियाएं ऐसी हैं जो अनडू सूची में संग्रहीत नहीं होती हैं, और इस प्रकार उन्हें अनडू नहीं किया जा सकता है। उदाहरण के लिए, फ़ाइल को सहेजना अनडू नहीं है, किन्तु सूची में | अनडू करने की अपेक्षाओं को समझना सरल है: पूर्वानुमेय कार्यक्षमता के लिए, और सभी अनडू कमांडों को सम्मलित करने के लिए <ref name=":0">{{Cite journal|last=Berlage|first=Thomas|date=1994-09-01|title=कमांड ऑब्जेक्ट्स के आधार पर ग्राफिकल यूजर इंटरफेस के लिए एक चयनात्मक पूर्ववत तंत्र|journal=ACM Transactions on Computer-Human Interaction|volume=1|issue=3|pages=269–294|doi=10.1145/196699.196721|s2cid=11848679|issn=1073-0516}}</ref> सामान्यतः अनडू तब तक उपलब्ध होता है जब तक कि उपयोगकर्ता सभी निष्पादित कार्यों को अनडू नहीं कर देता है। किन्तु कुछ क्रियाएं ऐसी हैं जो अनडू सूची में संग्रहीत नहीं होती हैं, और इस प्रकार उन्हें अनडू नहीं किया जा सकता है। उदाहरण के लिए, फ़ाइल को सहेजना अनडू नहीं है, किन्तु सूची में क्रमितबद्ध है, यह दिखाने के लिए कि इसे निष्पादित किया गया था। स्क्रॉलिंग या चयन क्रिया जो सामान्यतः संग्रहीत नहीं होती है, और इस प्रकार अनडू नहीं होती है।<ref>{{Cite book|last1=Myers|first1=Brad A.|last2=Kosbie|first2=David S.|date=1996-04-13|title=पुन: प्रयोज्य पदानुक्रमित कमांड ऑब्जेक्ट|publisher=ACM|pages=[https://archive.org/details/commongroundchi900chi9/page/260 260–267]|doi=10.1145/238386.238526|isbn=0897917774|s2cid=17033810|url=https://archive.org/details/commongroundchi900chi9/page/260}}</ref> | ||
अनडू का विपरीत रिडू होता है। रीडो कमांड अनडू के विपरीत होता है ये बफर को अग्रिम स्थिति में आगे बढ़ाता है। | अनडू का विपरीत रिडू होता है। रीडो कमांड अनडू के विपरीत होता है ये बफर को अग्रिम स्थिति में आगे बढ़ाता है। | ||
अनडू कार्यक्षमता के सामान्य घटक वे कमांड्स हैं जो उपयोगकर्ता द्वारा निष्पादित किए गए थे, इतिहास बफ़र जो पूर्ण किए गए कार्यों को संग्रहीत करता है, इतिहास बफ़र को नियंत्रित करने के लिए अनडू करें I प्रबंधक, और उपयोगकर्ता के साथ इंटरैक्ट करने के लिए उपयोगकर्ता इंटरफ़ेस होता है।<ref name=":1">{{Cite journal|last1=Jakubec|first1=Karel|last2=Polák|first2=Marek|last3=Nečaský|first3=Martin|last4=Holubová|first4=Irena|date=2014|title=Undo/Redo Operations in Complex Environments|journal=Procedia Computer Science|volume=32|pages=561–570|doi=10.1016/j.procs.2014.05.461|issn=1877-0509|doi-access=free}}</ref> अधिकांश [[Microsoft Windows|माइक्रोसॉफ़्ट विंडोज़]] अनुप्रयोगों में, अनडू [[ कमान कुंजी |कमांड कुंजी]] के लिए [[ कुंजीपटल संक्षिप्त रीति |कुंजीपटल संक्षिप्त रीति]] [[Control-Z]] या Alt+Backspace होता है, और पुनः करने के लिए शॉर्टकट [[Control-Y]] | अनडू कार्यक्षमता के सामान्य घटक वे कमांड्स हैं जो उपयोगकर्ता द्वारा निष्पादित किए गए थे, इतिहास बफ़र जो पूर्ण किए गए कार्यों को संग्रहीत करता है, इतिहास बफ़र को नियंत्रित करने के लिए अनडू करें I प्रबंधक, और उपयोगकर्ता के साथ इंटरैक्ट करने के लिए उपयोगकर्ता इंटरफ़ेस होता है।<ref name=":1">{{Cite journal|last1=Jakubec|first1=Karel|last2=Polák|first2=Marek|last3=Nečaský|first3=Martin|last4=Holubová|first4=Irena|date=2014|title=Undo/Redo Operations in Complex Environments|journal=Procedia Computer Science|volume=32|pages=561–570|doi=10.1016/j.procs.2014.05.461|issn=1877-0509|doi-access=free}}</ref> अधिकांश [[Microsoft Windows|माइक्रोसॉफ़्ट विंडोज़]] अनुप्रयोगों में, अनडू [[ कमान कुंजी |कमांड कुंजी]] के लिए [[ कुंजीपटल संक्षिप्त रीति |कुंजीपटल संक्षिप्त रीति]] [[Control-Z]] या Alt+Backspace होता है, और पुनः करने के लिए शॉर्टकट [[Control-Y]] या CC+[[Shift key]]+Z होता है। | ||
अधिकांश [[Apple macintosh|एप्पल मैकिंटोश]] अनुप्रयोगों में, अनडू कमांड का शॉर्टकट कमांड-जेड है, और रीडो के लिए शॉर्टकट कमांड-शिफ्ट-जेड है। | अधिकांश [[Apple macintosh|एप्पल मैकिंटोश]] अनुप्रयोगों में, अनडू कमांड का शॉर्टकट कमांड-जेड है, और रीडो के लिए शॉर्टकट कमांड-शिफ्ट-जेड है। | ||
| Line 17: | Line 17: | ||
[[वारेन टिटेलमैन]] ने 1971 तक अनडू कार्य के साथ बीबीएन-लिस्प के भाग के रूप में प्रोग्रामर सहायक विकसित किया है।<ref>{{Cite journal|last=Teitelman|first=Warren|date=1972-01-01|title=Automated Programmering: The Programmer's Assistant|journal=Proceedings of the December 5–7, 1972, Fall Joint Computer Conference, Part II|series=AFIPS '72 (Fall, part II)|location=New York, NY, USA|publisher=ACM|pages=917–921|doi=10.1145/1480083.1480119|s2cid=1276566}}</ref> | [[वारेन टिटेलमैन]] ने 1971 तक अनडू कार्य के साथ बीबीएन-लिस्प के भाग के रूप में प्रोग्रामर सहायक विकसित किया है।<ref>{{Cite journal|last=Teitelman|first=Warren|date=1972-01-01|title=Automated Programmering: The Programmer's Assistant|journal=Proceedings of the December 5–7, 1972, Fall Joint Computer Conference, Part II|series=AFIPS '72 (Fall, part II)|location=New York, NY, USA|publisher=ACM|pages=917–921|doi=10.1145/1480083.1480119|s2cid=1276566}}</ref> | ||
[[ज़ेरॉक्स PARC|ज़ेरॉक्स पीएआरसी]] [[ब्रावो (सॉफ्टवेयर)]] टेक्स्ट एडिटर के निकट 1974 में अनडू कमांड था।<ref>{{cite web|title=Bravo Manual in Alto Non-Programmers Guide, p. 52 |url=http://history-computer.com/Library/AltoUsersHandbook.pdf |access-date=2014-03-29}}</ref> [[आईबीएम]] के लांस ए. मिलर और जॉन सी. थॉमस की 1976 की शोध रिपोर्ट, इंटरएक्टिव | [[ज़ेरॉक्स PARC|ज़ेरॉक्स पीएआरसी]] [[ब्रावो (सॉफ्टवेयर)]] टेक्स्ट एडिटर के निकट 1974 में अनडू कमांड था।<ref>{{cite web|title=Bravo Manual in Alto Non-Programmers Guide, p. 52 |url=http://history-computer.com/Library/AltoUsersHandbook.pdf |access-date=2014-03-29}}</ref> [[आईबीएम]] के लांस ए. मिलर और जॉन सी. थॉमस की 1976 की शोध रिपोर्ट, इंटरएक्टिव प्रणाली के उपयोग में व्यवहारिक विषय,<ref>{{Cite journal|last1=Miller|first1=Lance A.|last2=Thomas|first2=John C.|date=1977-09-01|title=इंटरएक्टिव सिस्टम के उपयोग में व्यवहार संबंधी मुद्दे|journal=International Journal of Man-Machine Studies|volume=9|issue=5|pages=509–536|doi=10.1016/S0020-7373(77)80002-3|issn=0020-7373}}</ref> नोट किया गया कि यह उपयोगकर्ताओं को अल्प से अल्प तत्काल अनडू कमांड 'वापस लेने' की अनुमति देने के लिए अधिक उपयोगी होगा।<ref>{{cite web | last=Miller | first=Lance A. |author2=John C. Thomas Jr. | title=इंटरएक्टिव सिस्टम के उपयोग में व्यवहार संबंधी मुद्दे| date=December 1976 | url=http://handle.dtic.mil/100.2/ADA043033 | archive-url=https://web.archive.org/web/20120527163155/http://handle.dtic.mil/100.2/ADA043033 | url-status=dead | archive-date=May 27, 2012 | format=PDF | access-date=2011-05-21}}</ref> पीएआरसी (कंपनी) अनुसंधान केंद्र के प्रोग्रामरों ने कीबोर्ड शॉर्टकट Ctrl-Z को अनडू कमांड दिया, जो व्यक्तिगत कंप्यूटर युग में पाठ संपादकों और वर्ड प्रोसेसर की महत्वपूर्ण विशेषता बन गई है।<ref name="BenZimmer_2009"><nowiki>{{cite web | url=</nowiki>https://www.nytimes.com/2009/09/20/magazine/20FOB-onlanguage-t.html | title=पूर्ववत करने का युग| access-date=2013-06-02 | author=Ben Zimmer | date=2009-09-15 | work=New York Times}</ref> 1980 में, ज़ेरॉक्स पीएआरसी के [[लैरी टेस्लर]] ने एप्पल कंप्यूटर में कार्य करना प्रारम्भ किया था। वहाँ, उन्होंने और [[बिल एटकिंसन]] ने एप्पल लिसा पर मानक स्थिरता के रूप में अनडू कमांड की उपस्थिति की वकालत की थी। एटकिन्सन लिसा के एप्लिकेशन सॉफ़्टवेयर के व्यक्तिगत डेवलपर्स को अनडू और पुनः करने के एकल स्तर को सम्मलित करने में सक्षम था, किन्तु अनेक स्तरों का निरक्षण करने में असफल हो रहा था।{{Citation needed|date=October 2018}} जब एप्पल ने लिसा के उत्तराधिकारी, [[Macintosh|मैकिनटोश]] को प्रस्तुत किया है, तो यह निर्धारित किया गया कि सभी मानक अनुप्रयोगों में "एडिट" मेनू में पूर्व कमांड के रूप में "अनडू करें" सम्मलित होना चाहिए,<ref>{{cite book | title=मैकिंटोश के अंदर, खंड I| last=Apple Computer, Inc. | date=1984 | chapter=User Interface}}</ref> जो वर्तमान [[macOS|मैकओएस]] और [[Windows|विंडोज]] पर मानक बना हुआ है। | ||
बहु-स्तरीय अनडू कमांड 1980 के दशक में प्रस्तुत किए गए थे, जिससे उपयोगकर्ता न केवल सबसे अग्रिम जबकि अनेक कार्यों को वापस ले सकते थे।<ref name="BenZimmer_2009" />पर्सनल कंप्यूटर सॉफ़्टवेयर से पूर्व [[EMACS|ईएमएसीएस]] और अन्य टाइमशेयर स्क्रीन संपादकों के निकट यह था। [[सिग्नस एड]] प्रथम अमीगा पाठ संपादक था जिसमें असीमित अनडू/पुनः सुविधा थी। [[AtariWriter|अटारीराइटर( AtariWriter]]), 1982 में प्रस्तुत किया गया | बहु-स्तरीय अनडू कमांड 1980 के दशक में प्रस्तुत किए गए थे, जिससे उपयोगकर्ता न केवल सबसे अग्रिम जबकि अनेक कार्यों को वापस ले सकते थे।<ref name="BenZimmer_2009" />पर्सनल कंप्यूटर सॉफ़्टवेयर से पूर्व [[EMACS|ईएमएसीएस]] और अन्य टाइमशेयर स्क्रीन संपादकों के निकट यह था। [[सिग्नस एड]] प्रथम अमीगा पाठ संपादक था जिसमें असीमित अनडू/पुनः सुविधा थी। [[AtariWriter|अटारीराइटर (AtariWriter]]), 1982 में प्रस्तुत किया गया, यह वर्ड-प्रोसेसिंग एप्लिकेशन है, जिसमे अनडू चित्रित किया गया है। न्यूवर्ड, 1984 में न्यूस्टार द्वारा जारी किया गया अन्य वर्ड-प्रोसेसिंग प्रोग्राम था, जिसमें अनरेज़ कमांड था।<ref name="BenZimmer_2009" /> आईबीएम के विसीवर्ड के निकट अनडिलीट कमांड भी था। | ||
== मॉडल अनडू करें और पुनः करें == | == मॉडल अनडू करें और पुनः करें == | ||
अनडू मॉडल को रैखिक या अन्य -रैखिक के रूप में वर्गीकृत किया जा सकता है। अन्य-रैखिक अनडू मॉडल को स्क्रिप्ट मॉडल, यूएस के मॉडल, ट्रायडिक मॉडल और चयनात्मक अनडू में उप-वर्गीकृत किया जा सकता है।<ref name=":0" /> | अनडू मॉडल को रैखिक या अन्य-रैखिक के रूप में वर्गीकृत किया जा सकता है। अन्य-रैखिक अनडू मॉडल को स्क्रिप्ट मॉडल, यूएस के मॉडल, ट्रायडिक मॉडल और चयनात्मक अनडू में उप-वर्गीकृत किया जा सकता है।<ref name=":0" /> | ||
मॉडल के कुछ सामान्य गुण हैं: | मॉडल के कुछ सामान्य गुण हैं: | ||
* स्थिर निष्पादन संपत्ति: राज्य को कमांडों की कमांडित सूची के रूप में दर्शाया गया है। इसका तात्पर्य यह है कि मूल निष्पादन के पश्चात् जिस स्थिति में पहुंचा था, उस राज्य में कमांड सदैव अनडू किया जाता है।<ref name=":1" /> | * स्थिर निष्पादन संपत्ति: राज्य को कमांडों की कमांडित सूची के रूप में दर्शाया गया है। इसका तात्पर्य यह है कि मूल निष्पादन के पश्चात् जिस स्थिति में पहुंचा था, उस राज्य में कमांड सदैव अनडू किया जाता है।<ref name=":1" /> अप्रबल स्थिर निष्पादन: इसका तात्पर्य यह है कि यदि अनडू निष्पादित किया जाता है तो सभी कमांड जो अनडू कमांड पर निर्भर करते हैं। | ||
* स्थिर परिणाम संपत्ति: सूची को त्यागकर इस संपत्ति का अर्थ स्थिर निष्पादन संपत्ति के समान होता है। कमांडों की कमांडित सूची में सम्मलित है कि उन्हें केवल कमांडों के अतिरिक्त निष्पादित किया गया था। | * स्थिर परिणाम संपत्ति: सूची को त्यागकर इस संपत्ति का अर्थ स्थिर निष्पादन संपत्ति के समान होता है। कमांडों की कमांडित सूची में सम्मलित है कि उन्हें केवल कमांडों के अतिरिक्त निष्पादित किया गया था। | ||
* क्रमविनिमेय: इसका तात्पर्य है कि दो भिन्न -भिन्न कमांडों को अनडू और पुनः करने के पश्चात् पहुंची हुई स्थिति समान होती है जब उन्हें विपरीत क्रम में निष्पादित किया जाता है। | * क्रमविनिमेय: इसका तात्पर्य है कि दो भिन्न-भिन्न कमांडों को अनडू और पुनः करने के पश्चात् पहुंची हुई स्थिति समान होती है जब उन्हें विपरीत क्रम में निष्पादित किया जाता है। | ||
* न्यूनतर अनडू गुण: यह वर्णन करता है कि कमांड C का अनडू संचालन केवल कमांड C को अनडू करता है और C से छोटे सभी कमांड जो C पर निर्भर हैं।<ref name=":1" /> | * न्यूनतर अनडू गुण: यह वर्णन करता है कि कमांड C का अनडू संचालन केवल कमांड C को अनडू करता है और C से छोटे सभी कमांड जो C पर निर्भर हैं।<ref name=":1" /> | ||
=== रैखिक अनडू करें === | === रैखिक अनडू करें === | ||
रैखिक अनडू स्टैक (डेटा संरचना) के साथ कार्यान्वित किया जाता है जो सभी निष्पादित कमांडों का इतिहास संग्रहीत करता है। जब अन्य नया कमांड निष्पादित किया जाता है तो इसे स्टैक के शीर्ष पर जोड़ दिया जाता है। इसलिए, केवल अंतिम निष्पादित कमांड को अनडू किया जा सकता है और इतिहास से विस्थापित किया जा सकता है। अनडू तब तक दोहराया जा सकता है जब तक कि इतिहास रिक्त न हो जाये।<ref name=":0" /> | रैखिक अनडू स्टैक (डेटा संरचना) के साथ कार्यान्वित किया जाता है जो सभी निष्पादित कमांडों का इतिहास संग्रहीत करता है। जब अन्य नया कमांड निष्पादित किया जाता है तो इसे स्टैक के शीर्ष पर जोड़ दिया जाता है। इसलिए, केवल अंतिम निष्पादित कमांड को अनडू किया जा सकता है और इतिहास से विस्थापित किया जा सकता है। अनडू को तब तक दोहराया जा सकता है जब तक कि इतिहास रिक्त न हो जाये।<ref name=":0" /> | ||
==== प्रतिबंधित रैखिक मॉडल ==== | ==== प्रतिबंधित रैखिक मॉडल ==== | ||
प्रतिबंधित रेखीय मॉडल रेखीय अनडू मॉडल का संवर्द्धन है। यह रैखिक अनडू करने के लिए ऊपर वर्णित स्थिर निष्पादन संपत्ति को संतुष्ट करता है, क्योंकि यह मॉडल संपत्ति को नहीं रखता है यदि अन्य कमांड किया जाता है जबकि इतिहास सूची में अन्य कमांड सम्मलित होते हैं। नया कमांड जोड़ने से पूर्व प्रतिबंधित रेखीय मॉडल इतिहास सूची को स्वच्छ करता है। किन्तु अन्य प्रतिबंध भी उपलब्ध हैं। उदाहरण के लिए, इतिहास सूची का आकार प्रतिबंधित किया जा सकता है या जब परिभाषित आकार तक पहुँच जाता है, तो पूर्व निष्पादित कमांड को सूची से विस्थापित कर दिया जाता है।<ref name=":0" /> | प्रतिबंधित रेखीय मॉडल रेखीय अनडू मॉडल का संवर्द्धन है। यह रैखिक अनडू करने के लिए ऊपर वर्णित स्थिर निष्पादन संपत्ति को संतुष्ट करता है, क्योंकि यह मॉडल संपत्ति को नहीं रखता है यदि अन्य कमांड किया जाता है जबकि इतिहास सूची में अन्य कमांड सम्मलित होते हैं। नया कमांड जोड़ने से पूर्व प्रतिबंधित रेखीय मॉडल इतिहास सूची को स्वच्छ करता है। किन्तु अन्य प्रतिबंध भी उपलब्ध हैं। उदाहरण के लिए, इतिहास सूची का आकार प्रतिबंधित किया जा सकता है या जब परिभाषित आकार तक पहुँच जाता है, तो पूर्व निष्पादित कमांड को सूची से विस्थापित कर दिया जाता है।<ref name=":0" /> | ||
=== अन्य | === अन्य-रेखीय अनडू करें === | ||
रैखिक अनडू और अन्य -रैखिक अनडू के मध्य | रैखिक अनडू और अन्य-रैखिक अनडू के मध्य मुख्य अंतर यह है कि उपयोगकर्ता द्वारा निष्पादित कमांडों को स्वेच्छानुसार क्रम में अनडू करने की संभावना होती है। उनके निकट सबसे अग्रिम कमांड को अनडू करने का संयोग नहीं है जबकि सूची से कमांड का चयन करने का संयोग है।<ref name=":1" />अन्य रेखीय मॉडल के लिए उपवर्ग हैं जो इस मॉडल को प्रस्तावित करते हैं। | ||
==== स्क्रिप्ट मॉडल ==== | ==== स्क्रिप्ट मॉडल ==== | ||
स्क्रिप्ट मॉडल उपयोगकर्ता क्रियाओं को कमांड की स्क्रिप्ट संपादित करने के रूप में संभालता है। निष्पादित कमांडों की इतिहास सूची को | स्क्रिप्ट मॉडल उपयोगकर्ता क्रियाओं को कमांड की स्क्रिप्ट संपादित करने के रूप में संभालता है। निष्पादित कमांडों की इतिहास सूची को स्क्रिप्ट के रूप में व्याख्या की जाती है, अनडू प्रभाव को उसी प्रकार परिभाषित किया जाता है जैसे कि अनडू के सापेक्ष गतिविधियों के पूर्व में कभी नहीं हुई थी।<ref name=":0" />राज्य को अनडू करने के परिणाम के रूप में ऐसा होना चाहिए जैसे कि अनडू कमांड को कभी निष्पादित नहीं किया गया था। इस मॉडल की हानि यह है कि साइड इफेक्ट से बचने के लिए उपयोगकर्ता को अनडू कमांड और वर्तमान स्थिति के मध्य संबंध को जानना होगा। इनमें से उदाहरण के लिए दोहराव हो सकता है। अन्य समस्याएँ यह हैं कि यदि पश्चात् के कमांडों को भिन्न स्थिति में पुनः किया जाता है कि वे मूल रूप से प्रत्यक्ष हेरफेर इंटरफेस में निष्पादित किए गए थे, तो मूल उपयोगकर्ता क्रिया की यह पुनर्व्याख्या सदैव स्पष्ट या उत्तम प्रकार से परिभाषित नहीं होती है।<ref name=":0" /> | ||
==== यूएस एंड आर मॉडल ==== | ==== यूएस एंड आर मॉडल ==== | ||
इस मॉडल की | इस मॉडल की विशेष बात यह है कि इसमें कमांड को स्किप करने का विकल्प है। इसका तात्पर्य है कि कमांड को पुनः करना त्यागा जा सकता है। स्किप की गई कमांड को स्किप के रूप में चिह्नित किया गया है किन्तु डिलीट नहीं किया गया है। जब नए कमांड निष्पादित किए जाते हैं, तो इतिहास सूची को उपस्थित रखा जाता है, इसलिए निष्पादित कमांडों का क्रम उसके साथ पुन: उत्पन्न किया जा सकता है। आदेश को इतिहास के वृक्ष के माध्यम से वर्णित किया जा सकता है जो निर्देशित ग्राफ है, क्योंकि ग्राफ में लिंक बनाने वाली दूसरी शाखा से कमांडों को पुनः निरंतर रखना संभव है।<ref name=":0" />भले ही कमांडों का सेट समझने में सरल है, जब उपयोगकर्ता अधिक चरणों को अनडू करना चाहता है, तो लंघन और शाखाओं को जोड़ने वाली जटिल संरचना को समझना और याद रखना कठिन होता है।<ref name=":0" /> | ||
==== ट्रायडिक मॉडल ==== | ==== ट्रायडिक मॉडल ==== | ||
इस अन्य -रैखिक अनडू मॉडल में घुमाने की संभावना अनडू और पुनः करने के | इस अन्य-रैखिक अनडू मॉडल में घुमाने की संभावना अनडू और पुनः करने के अतिरिक्त है। इसकी डेटा संरचना है जो उपर्युक्त मॉडल के रूप में इतिहास सूची और भिन्न रीडो सूची है जिसमें रीडो ऑपरेशन सम्मलित हैं। रोटेट ऑपरेशन उसके सामने रीडो लिस्ट की अंतिम कमांड सेट करता है। एक ओर, इसका तात्पर्य यह है कि अग्रिम कमांड को पुनः करने के लिए इसे सामने रखकर चयन किया जा सकता है। दूसरी ओर, रोटेशन का उपयोग रीडो सूची में उस स्थान का चयन करने के लिए किया जा सकता है जहां अग्रिम अनडू ऑपरेशन कमांड का उपयोग किया जाता है।<ref name=":0" />इसलिए रीडो की सूची अनियंत्रित है। पृथक कमांड को अनडू करने के लिए, उपयोगकर्ता को अनेक चरणों को अनडू करना होगा, पुनः सूची को घुमाना होगा और अनेक चरणों को पुनः करना होगा।<ref name=":0" />पुनः करने के लिए सूची को तब तक घुमाना पड़ता है जब तक वांछित कमांड ऊपर न हो। | ||
=== चयनात्मक अनडू करें === | === चयनात्मक अनडू करें === | ||
जकुबेक एट | जकुबेक एट अल कहते हैं कि चयनात्मक अनडू ऐसी विशेषता है जो मॉडल प्रस्तुत कर सकती है किन्तु चयनात्मक अनडू के लिए अन्य स्पष्ट परिभाषा नहीं है।<ref name=":1" />लेखकों ने उन कार्यों का चयन किया जो मॉडल के निकट होना चाहिए जब वह चयनात्मक अनडू का समर्थन करता है। इतिहास बफ़र में किसी भी निष्पादित क्रिया को अनडू करना संभव होना चाहिए। अनडू के सापेक्ष गतिविधियों से स्वतंत्र क्रियाओं को अस्पृष्ट त्याग देना चाहिए।<ref name=":1" />ठीक वैसे ही किसी भी अनडू कमांड के लिए पुनः करना संभव है। चयनात्मक अनडू के लिए तीसरा कार्य यह है कि प्रत्यक्ष उपयोगकर्ता के अनुरोध के बिना इतिहास बफ़र से अन्य भी कमांड स्वचालित रूप से बहिष्कृत नहीं किया जा सकता है।<ref name=":1" />चयनात्मक अनडू के लिए प्रारम्भ होता है कि अनडू और पुनः करना किसी भी संदर्भ के प्रत्येक निष्पादन योग्य है। तीन मुख्य उद्देश्य हैं। प्रथम यह है कि अनडू कमांड मूल संदर्भ से प्रत्येक हो सकते हैं। इसके माध्यम से मृत संदर्भ हो सकते हैं जिन्हें संभालना होगा। दूसरा उद्देश्य यह है कि संशोधित कमांडों को अनडू किया जा सकता है और इसलिए इसका समाधान करना होगा कि अनडू करने के पश्चात् कौन सी स्थिति प्रस्तुत की जाएगी। तीसरा उद्देश्य कमांड की समस्याओं को दूर कर रहा है। चयनात्मक अनडू का सूचियों में अन्य संकेतक नहीं है, इसलिए इसका तात्पर्य है कि स्टैक से अन्य कमांड नहीं त्यागा जाना चाहिए।<ref name=":1" /> | ||
==== प्रत्यक्ष चयनात्मक अनडू करें ==== | ==== प्रत्यक्ष चयनात्मक अनडू करें ==== | ||
प्रत्यक्ष चयनात्मक अनडू | प्रत्यक्ष चयनात्मक अनडू इतिहास वृक्ष के साथ प्रतिबंधित रेखीय अनडू का विस्तार है। ऑपरेशन चयनित कमांड की प्रति बनाता है, इसे निष्पादित करता है और इसे इतिहास सूची में जोड़ता है। वहाँ दो अन्य-रैखिक संचालन चयनात्मक अनडू और चयनात्मक पुनः परिभाषित किए गए हैं, इसलिए यह अधिक सममित है।<ref name=":0" /> | ||
=== बहुउपयोगकर्ता अनुप्रयोग === | === बहुउपयोगकर्ता अनुप्रयोग === | ||
जब एकाधिक उपयोगकर्ता | जब एकाधिक उपयोगकर्ता प्रपत्र को संपादित कर सकते हैं, तो बहु-उपयोगकर्ता को अनडू करने की आवश्यकता होती है। वैश्विक बहु-उपयोगकर्ता अनडू प्रपत्र में की गई नवीनतम क्रिया को अनडू करता है, भले ही संपादन किसने किया हो। स्थानीय बहु-उपयोगकर्ता अनडू केवल स्थानीय उपयोगकर्ता द्वारा किए गए कार्यों को अनडू करता है, जिसके लिए अन्य-रैखिक अनडू कार्यान्वयन की आवश्यकता होती है। | ||
जहां अनडू का उपयोग अनेक संपादनों के माध्यम से बैकट्रैक करने के लिए किया जा सकता है, पुनः | जहां अनडू का उपयोग अनेक संपादनों के माध्यम से बैकट्रैक करने के लिए किया जा सकता है, पुनः कमांड क्रिया इतिहास के माध्यम से आगे बढ़ता है। नया संपादन करने से सामान्यतः पुनः की जाने वाली सूची स्पष्ट हो जाती है। यदि ब्रांचिंग रीडो मॉडल का उपयोग किया जाता है, तो नया संपादन क्रिया इतिहास को शाखाबद्ध करता है। | ||
अनडू की जा सकने वाली | अनडू की जा सकने वाली प्राचीन गतिविधियों की संख्या प्रोग्राम, संस्करण और हार्डवेयर या सॉफ़्टवेयर क्षमताओं के अनुसार भिन्न होती है। उदाहरण के लिए, [[Adobe Photoshop|एडोब फोटोशॉप]] में डिफ़ॉल्ट अनडू करें/पुनः करें स्टैक आकार 20 है किन्तु उपयोगकर्ता द्वारा इसे परिवर्तित किया जा सकता है। दूसरे उदाहरण के रूप में, {{when|date=May 2018}} माइक्रोसॉफ्ट पेंट के पूर्व संस्करणों को अनडू करने के लिए केवल तीन संपादनों तक की अनुमति है; विंडोज 7 में प्रस्तुत किए गए संस्करण ने इस सीमा को बढ़ाकर 50 कर दिया। | ||
सरलीकृत, एकल-संपादन अनडू सुविधाएँ कभी-कभी अनडू कमांड को अनडू की | सरलीकृत, एकल-संपादन अनडू सुविधाएँ कभी-कभी अनडू कमांड को अनडू कमांड में की जाने वाली क्रिया के रूप में मानकर पुनः करना बंद कर देती हैं। इसे फ्लिप अनडू मॉडल के रूप में जाना जाता है, क्योंकि उपयोगकर्ता अनडू कमांड का उपयोग करके दो प्रोग्राम राज्यों के मध्य फ़्लिप कर सकता है।<ref>Roberta Mancini, Alan Dix and Stefano Levialdi. 2006. [http://www.hcibook.com/alan/papers/undo-techrep-96/tech9611.pdf "Reflections on Undo"]</ref> 1990 के दशक के प्रारंभ में बहु-स्तरीय अनडू के व्यापक रूप से अपनाने से पूर्व यह मानक मॉडल था। | ||
== कार्यान्वयन अनडू करें == | == कार्यान्वयन अनडू करें == | ||
अनडू विभिन्न पैटर्न के माध्यम से | अनडू विभिन्न पैटर्न के माध्यम से प्रारम्भ किया जा सकता है। [[कमांड पैटर्न]] और[[ स्मृति चिन्ह पैटर्न ]]सबसे सामान्य पैटर्न हैं। | ||
=== कमांड पैटर्न === | === कमांड पैटर्न === | ||
कमांड पैटर्न | कमांड पैटर्न [[सॉफ्टवेयर डिजाइन पैटर्न]] है जो ऑपरेशन से कमांड ऑब्जेक्ट में सूचना को एनकैप्सुलेट करता है। इसका तात्पर्य है कि प्रत्येक क्रिया वस्तु में संग्रहित होती है। सार कमांड वर्ग अमूर्त निष्पादन ऑपरेशन को प्रारम्भ करता है, इसलिए प्रत्येक कमांड ऑब्जेक्ट में निष्पादन ऑपरेशन होता है। अनडू के लिए अनएक्सक्यूटेड ऑपरेशन भी होना चाहिए, जो निष्पादित कमांड के प्रभाव को अनडू करता है, जो इतिहास सूची में संग्रहीत होते हैं। अनडू और पुनः प्रारम्भ किया जाता है जिससे कि सूची को आगे और पीछे से चलाया जा सके जब निष्पादित या अन-निष्पादित कमांड कहा जाता है।<ref name=":2">{{Cite book|url=https://archive.org/details/designpatternsel00gamm|title=Design patterns : elements of reusable object-oriented software|date=1995|publisher=Addison-Wesley|others=Gamma, Erich.|isbn=0201633612|location=Reading, Mass.|oclc=31171684|url-access=registration}}</ref> | ||
एकल अनडू करने के लिए केवल निष्पादित कमांड संग्रहीत किया जाता है। बहु स्तरीय अनडू के विपरीत जहां न केवल कमांडों के साथ इतिहास सूची सहेजी जाती है जबकि अनडू स्तरों की संख्या भी सूची की अधिकतम लंबाई निर्धारित की जा सकती है।<ref name=":2" /> | एकल अनडू करने के लिए केवल निष्पादित कमांड संग्रहीत किया जाता है। बहु स्तरीय अनडू के विपरीत जहां न केवल कमांडों के साथ इतिहास सूची सहेजी जाती है जबकि अनडू स्तरों की संख्या भी सूची की अधिकतम लंबाई निर्धारित की जा सकती है।<ref name=":2" /> | ||
=== मेमेंटो पैटर्न === | === मेमेंटो पैटर्न === | ||
मेमेंटो पैटर्न के साथ किसी वस्तु की आंतरिक स्थिति को संग्रहित किया जाता है। जिस वस्तु में राज्य को सहेजा जाता है, उसे स्मृति चिन्ह कहा जाता है और स्मृति चिन्ह प्रवर्तक के माध्यम से आयोजित किया जाता है। यह | मेमेंटो पैटर्न के साथ किसी वस्तु की आंतरिक स्थिति को संग्रहित किया जाता है। जिस वस्तु में राज्य को सहेजा जाता है, उसे स्मृति चिन्ह कहा जाता है और स्मृति चिन्ह प्रवर्तक के माध्यम से आयोजित किया जाता है। यह स्मृति चिन्ह लौटाता है, वर्तमान स्थिति की सूचना के साथ आरंभ किया जाता है, जब अनडू निष्पादित किया जाता है, जिससे कि राज्य का परीक्षण किया जा सके। स्मृति चिन्ह केवल प्रवर्तक के लिए दृश्यमान है। | ||
मेमेंटो पैटर्न में अनडू मैकेनिज्म को केयरटेकर कहा जाता है। यह स्मृति चिन्हों को सुरक्षित रखने के लिए | |||