अनडू (पूर्ववत): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{Short description|Computer command}}
{{Short description|Computer command}}
Undo एक इंटरेक्शन तकनीक है जिसे कई कंप्यूटर प्रोग्राम में लागू किया जाता है। यह दस्तावेज़ में किए गए अंतिम परिवर्तन को मिटा देता है, इसे पुरानी स्थिति में वापस लाता है। कुछ और उन्नत प्रोग्रामों में, जैसे कि [[ग्राफिक्स सॉफ्टवेयर]], पूर्ववत करें संपादित की जा रही फ़ाइल पर की गई अंतिम कमांड को नकार देगा। पूर्ववत करने की संभावना के साथ, उपयोगकर्ता गलती करने के डर के बिना अन्वेषण और कार्य कर सकते हैं, क्योंकि उन्हें आसानी से पूर्ववत किया जा सकता है।
अनडू इंटरेक्शन तकनीक है जिसे कई कंप्यूटर प्रोग्राम में स्थापित किया जाता है। यह प्रपत्र में किए गए अंतिम परिवर्तन को मिटा देता है, और  इसे पुरानी स्थिति में पुनः लाता है। कुछ और उन्नत प्रोग्रामों में, जैसे कि [[ग्राफिक्स सॉफ्टवेयर]], अनडू करें संपादित की जा रही फ़ाइल पर की गई अंतिम कमांड को नहीं लेता है। अनडू करने की संभावना के साथ, उपयोगकर्ता त्रुटि के डर के बिना अन्वेषण और कार्य कर सकते हैं, क्योंकि उन्हें सरलता से अनडू किया जा सकता है।


पूर्ववत करने की अपेक्षाओं को समझना आसान है: पूर्वानुमेय कार्यक्षमता के लिए, और सभी पूर्ववत आदेशों को शामिल करने के लिए।<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>
अनडू करने की अपेक्षाओं को समझना सरल है: पूर्वानुमेय कार्यक्षमता के लिए, और सभी अनडू आदेशों को सम्मलित करने के लिए।<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>
अनडू का विपरीत रिडू होता है। रीडो कमांड पूर्ववत को उलट देता है या बफर को एक और हालिया स्थिति में आगे बढ़ाता है।
अनडू का विपरीत रिडू होता है। रीडो कमांड अनडू को उलट देता है या बफर को एक और हालिया स्थिति में आगे बढ़ाता है।


पूर्ववत कार्यक्षमता के सामान्य घटक वे आदेश हैं जो उपयोगकर्ता द्वारा निष्पादित किए गए थे, इतिहास बफ़र जो पूर्ण किए गए कार्यों को संग्रहीत करता है, इतिहास बफ़र को नियंत्रित करने के लिए पूर्ववत/फिर से करें प्रबंधक, और उपयोगकर्ता के साथ इंटरैक्ट करने के लिए उपयोगकर्ता इंटरफ़ेस।<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>
अनडू कार्यक्षमता के सामान्य घटक वे आदेश हैं जो उपयोगकर्ता द्वारा निष्पादित किए गए थे, इतिहास बफ़र जो पूर्ण किए गए कार्यों को संग्रहीत करता है, इतिहास बफ़र को नियंत्रित करने के लिए अनडू/फिर से करें प्रबंधक, और उपयोगकर्ता के साथ इंटरैक्ट करने के लिए उपयोगकर्ता इंटरफ़ेस।<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]]|Ctrl+Z या Alt+Backspace है, और फिर से करने के लिए शॉर्टकट [[Control-Y]]|Ctrl+Y या [[Control key]]+[[Shift key]]+Z है।
अधिकांश [[Microsoft Windows]] अनुप्रयोगों में, अनडू [[ कमान कुंजी ]] लिए [[ कुंजीपटल संक्षिप्त रीति ]] [[Control-Z]]|Ctrl+Z या Alt+Backspace है, और फिर से करने के लिए शॉर्टकट [[Control-Y]]|Ctrl+Y या [[Control key]]+[[Shift key]]+Z है।


अधिकांश [[Apple macintosh]] अनुप्रयोगों में, अनडू कमांड का शॉर्टकट कमांड की-जेड है, और रीडो के लिए शॉर्टकट कमांड की-शिफ्ट की-जेड है।
अधिकांश [[Apple macintosh]] अनुप्रयोगों में, अनडू कमांड का शॉर्टकट कमांड की-जेड है, और रीडो के लिए शॉर्टकट कमांड की-शिफ्ट की-जेड है।


सभी प्लेटफॉर्म पर, पूर्ववत/फिर से करें कार्यों को [[संपादन मेनू]] के माध्यम से भी एक्सेस किया जा सकता है।
सभी प्लेटफॉर्म पर, अनडू/फिर से करें कार्यों को [[संपादन मेनू]] के माध्यम से भी एक्सेस किया जा सकता है।


== इतिहास ==
== इतिहास ==
लोगों द्वारा कंप्यूटर का उपयोग करने के तरीके के जवाब में कंप्यूटर पर किसी ऑपरेशन को पूर्ववत करने की क्षमता का स्वतंत्र रूप से कई बार आविष्कार किया गया था।<ref>{{cite thesis|last=Moran|first=Chuktropolis Welling|title=इंटरएक्टिव समय|date=2013-01-01|url=http://roger.ucsd.edu/record=b7759913~S9|type=Ph.D.|publisher=University of California, San Diego|isbn=9781303194450|location=La Jolla}}</ref>
लोगों द्वारा कंप्यूटर का उपयोग करने के तरीके के जवाब में कंप्यूटर पर किसी ऑपरेशन को अनडू करने की क्षमता का स्वतंत्र रूप से कई बार आविष्कार किया गया था।<ref>{{cite thesis|last=Moran|first=Chuktropolis Welling|title=इंटरएक्टिव समय|date=2013-01-01|url=http://roger.ucsd.edu/record=b7759913~S9|type=Ph.D.|publisher=University of California, San Diego|isbn=9781303194450|location=La Jolla}}</ref>
[[ ब्राउन विश्वविद्यालय ]] में 1968 में शुरू हुई [[ फ़ाइल पुनर्प्राप्ति और संपादन प्रणाली ]] के बारे में कहा जाता है कि यह पहली कंप्यूटर-आधारित प्रणाली है, जिसमें अनडू फीचर है।<ref>{{Cite book|url=https://books.google.com/books?id=N1qWBQAAQBAJ|title=Memory Machines: The Evolution of Hypertext|last=Barnet|first=Belinda|date=2014-12-01|quote=But the most popular development for novice users in FRESS was not its capacity to accommodate multiple displays and users; it was the 'undo' feature – the feature of which van Dam is most proud (van Dam 2011). FRESS pioneered a single-level undo for both word processing and hypertext. Every edit to a file was saved in a shadow version of the data structure, which allowed for both an 'autosave' and an undo. Brown staff and students understood immediately the importance and usefulness of this feature (van Dam 1999).|publisher=Anthem Press|isbn=9781783083442|page=108|language=en}}</ref><ref name="barnet">{{Cite journal|last=Barnet|first=Belinda|date=2010-01-01|title=Crafting the User-Centered Document Interface: The Hypertext Editing System (HES) and the File Retrieval and Editing System (FRESS)|journal=Digital Humanities Quarterly|url=http://www.digitalhumanities.org/dhq/vol/4/1/000081/000081.html|volume=4|issue=1}}</ref>
[[ ब्राउन विश्वविद्यालय ]] में 1968 में शुरू हुई [[ फ़ाइल पुनर्प्राप्ति और संपादन प्रणाली ]] के बारे में कहा जाता है कि यह पहली कंप्यूटर-आधारित प्रणाली है, जिसमें अनडू फीचर है।<ref>{{Cite book|url=https://books.google.com/books?id=N1qWBQAAQBAJ|title=Memory Machines: The Evolution of Hypertext|last=Barnet|first=Belinda|date=2014-12-01|quote=But the most popular development for novice users in FRESS was not its capacity to accommodate multiple displays and users; it was the 'undo' feature – the feature of which van Dam is most proud (van Dam 2011). FRESS pioneered a single-level undo for both word processing and hypertext. Every edit to a file was saved in a shadow version of the data structure, which allowed for both an 'autosave' and an undo. Brown staff and students understood immediately the importance and usefulness of this feature (van Dam 1999).|publisher=Anthem Press|isbn=9781783083442|page=108|language=en}}</ref><ref name="barnet">{{Cite journal|last=Barnet|first=Belinda|date=2010-01-01|title=Crafting the User-Centered Document Interface: The Hypertext Editing System (HES) and the File Retrieval and Editing System (FRESS)|journal=Digital Humanities Quarterly|url=http://www.digitalhumanities.org/dhq/vol/4/1/000081/000081.html|volume=4|issue=1}}</ref>
[[वारेन टिटेलमैन]] ने 1971 तक पूर्ववत कार्य के साथ BBN-LISP के भाग के रूप में एक प्रोग्रामर सहायक विकसित किया।<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 तक अनडू कार्य के साथ BBN-LISP के भाग के रूप में एक प्रोग्रामर सहायक विकसित किया।<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 की एक शोध रिपोर्ट, इंटरएक्टिव सिस्टम के उपयोग में व्यवहारिक मुद्दे,<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> PARC (कंपनी) अनुसंधान केंद्र के प्रोग्रामरों ने कीबोर्ड शॉर्टकट Ctrl-Z को पूर्ववत आदेश दिया, जो व्यक्तिगत कंप्यूटर युग में पाठ संपादकों और वर्ड प्रोसेसर की एक महत्वपूर्ण विशेषता बन गई।<ref name="BenZimmer_2009">{{cite web | url=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 में, ज़ेरॉक्स PARC के [[लैरी टेस्लर]] ने Apple कंप्यूटर में काम करना शुरू किया। वहाँ, उन्होंने और [[बिल एटकिंसन]] ने Apple लिसा पर एक मानक स्थिरता के रूप में एक पूर्ववत आदेश की उपस्थिति की वकालत की। एटकिन्सन लिसा के एप्लिकेशन सॉफ़्टवेयर के व्यक्तिगत डेवलपर्स को पूर्ववत और फिर से करने के एकल स्तर को शामिल करने में सक्षम था, लेकिन कई स्तरों के लिए पैरवी करने में असफल रहा।{{Citation needed|date=October 2018}} जब Apple ने लिसा के उत्तराधिकारी, [[Macintosh]] को पेश किया, तो यह निर्धारित किया गया कि सभी मानक अनुप्रयोगों में "संपादन" मेनू में पहले आदेश के रूप में "पूर्ववत करें" शामिल होना चाहिए,<ref>{{cite book | title=मैकिंटोश के अंदर, खंड I| last=Apple Computer, Inc. | date=1984 | chapter=User Interface}}</ref> जो आज तक [[macOS]] और [[Windows]] पर मानक बना हुआ है।
[[ज़ेरॉक्स 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> PARC (कंपनी) अनुसंधान केंद्र के प्रोग्रामरों ने कीबोर्ड शॉर्टकट Ctrl-Z को अनडू आदेश दिया, जो व्यक्तिगत कंप्यूटर युग में पाठ संपादकों और वर्ड प्रोसेसर की एक महत्वपूर्ण विशेषता बन गई।<ref name="BenZimmer_2009">{{cite web | url=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 में, ज़ेरॉक्स PARC के [[लैरी टेस्लर]] ने Apple कंप्यूटर में काम करना शुरू किया। वहाँ, उन्होंने और [[बिल एटकिंसन]] ने Apple लिसा पर एक मानक स्थिरता के रूप में एक अनडू आदेश की उपस्थिति की वकालत की। एटकिन्सन लिसा के एप्लिकेशन सॉफ़्टवेयर के व्यक्तिगत डेवलपर्स को अनडू और फिर से करने के एकल स्तर को सम्मलित करने में सक्षम था, लेकिन कई स्तरों के लिए पैरवी करने में असफल रहा।{{Citation needed|date=October 2018}} जब Apple ने लिसा के उत्तराधिकारी, [[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]], 1982 में पेश किया गया एक वर्ड-प्रोसेसिंग एप्लिकेशन, पूर्ववत चित्रित किया गया। NewWord, 1984 में NewStar द्वारा जारी किया गया एक अन्य वर्ड-प्रोसेसिंग प्रोग्राम था, जिसमें एक अनरेज़ कमांड था।<ref name="BenZimmer_2009"/>IBM के VisiWord के पास एक अनडिलीट कमांड भी था।
बहु-स्तरीय अनडू आदेश 1980 के दशक में पेश किए गए थे, जिससे उपयोगकर्ता न केवल सबसे हालिया बल्कि कई कार्यों को वापस ले सकते थे।<ref name="BenZimmer_2009"/>व्यक्तिगत कंप्यूटर सॉफ़्टवेयर से पहले [[EMACS]] और अन्य टाइमशेयर स्क्रीन संपादकों के पास यह था। [[सिग्नस एड]] पहला अमीगा पाठ संपादक था जिसमें असीमित अनडू / फिर से सुविधा थी। [[AtariWriter]], 1982 में पेश किया गया एक वर्ड-प्रोसेसिंग एप्लिकेशन, अनडू चित्रित किया गया। NewWord, 1984 में NewStar द्वारा जारी किया गया एक अन्य वर्ड-प्रोसेसिंग प्रोग्राम था, जिसमें एक अनरेज़ कमांड था।<ref name="BenZimmer_2009"/>IBM के VisiWord के पास एक अनडिलीट कमांड भी था।


== मॉडल पूर्ववत करें और फिर से करें ==
== मॉडल अनडू करें और फिर से करें ==
पूर्ववत मॉडल को रैखिक या गैर-रैखिक के रूप में वर्गीकृत किया जा सकता है। गैर-रैखिक पूर्ववत मॉडल को स्क्रिप्ट मॉडल, यूएस के मॉडल, ट्रायडिक मॉडल और चयनात्मक पूर्ववत में उप-वर्गीकृत किया जा सकता है।<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=":1" />गैर रेखीय मॉडल के लिए उपवर्ग हैं जो इस मॉडल को लागू करते हैं।


==== स्क्रिप्ट मॉडल ====
==== स्क्रिप्ट मॉडल ====
स्क्रिप्ट मॉडल उपयोगकर्ता क्रियाओं को कमांड की स्क्रिप्ट संपादित करने के रूप में संभालता है। निष्पादित आदेशों की इतिहास सूची को एक स्क्रिप्ट के रूप में व्याख्या की जाती है, एक पूर्ववत प्रभाव को उसी तरह परिभाषित किया जाता है जैसे कि पूर्ववत कार्रवाई पहले कभी नहीं हुई थी।<ref name=":0" />राज्य को पूर्ववत करने के परिणाम के रूप में ऐसा होना चाहिए जैसे कि पूर्ववत आदेश को कभी निष्पादित नहीं किया गया था। इस मॉडल का एक नुकसान यह है कि साइड इफेक्ट से बचने के लिए उपयोगकर्ता को पूर्ववत आदेश और वर्तमान स्थिति के बीच संबंध को जानना होगा। इनमें से एक उदाहरण के लिए दोहराव हो सकता है। अन्य समस्याएँ यह हैं कि यदि बाद के आदेशों को एक अलग स्थिति में फिर से किया जाता है कि वे मूल रूप से प्रत्यक्ष हेरफेर इंटरफेस में निष्पादित किए गए थे, तो मूल उपयोगकर्ता क्रिया की यह पुनर्व्याख्या हमेशा स्पष्ट या अच्छी तरह से परिभाषित नहीं होती है।<ref name=":0" />
स्क्रिप्ट मॉडल उपयोगकर्ता क्रियाओं को कमांड की स्क्रिप्ट संपादित करने के रूप में संभालता है। निष्पादित आदेशों की इतिहास सूची को एक स्क्रिप्ट के रूप में व्याख्या की जाती है, एक अनडू प्रभाव को उसी तरह परिभाषित किया जाता है जैसे कि अनडू कार्रवाई पहले कभी नहीं हुई थी।<ref name=":0" />राज्य को अनडू करने के परिणाम के रूप में ऐसा होना चाहिए जैसे कि अनडू आदेश को कभी निष्पादित नहीं किया गया था। इस मॉडल का एक नुकसान यह है कि साइड इफेक्ट से बचने के लिए उपयोगकर्ता को अनडू आदेश और वर्तमान स्थिति के बीच संबंध को जानना होगा। इनमें से एक उदाहरण के लिए दोहराव हो सकता है। अन्य समस्याएँ यह हैं कि यदि बाद के आदेशों को एक अलग स्थिति में फिर से किया जाता है कि वे मूल रूप से प्रत्यक्ष हेरफेर इंटरफेस में निष्पादित किए गए थे, तो मूल उपयोगकर्ता क्रिया की यह पुनर्व्याख्या हमेशा स्पष्ट या अच्छी तरह से परिभाषित नहीं होती है।<ref name=":0" />




==== यूएस एंड आर मॉडल ====
==== यूएस एंड आर मॉडल ====
इस मॉडल की खास बात यह है कि इसमें एक कमांड को स्किप करने का विकल्प है। इसका मतलब है कि कमांड को फिर से करना छोड़ दिया जा सकता है। स्किप की गई कमांड को स्किप के रूप में चिह्नित किया गया है लेकिन डिलीट नहीं किया गया है। जब नए आदेश निष्पादित किए जाते हैं, तो इतिहास सूची को बरकरार रखा जाता है, इसलिए निष्पादित आदेशों का क्रम उसके साथ पुन: उत्पन्न किया जा सकता है। ऑर्डर को इतिहास के पेड़ के माध्यम से वर्णित किया जा सकता है जो एक निर्देशित ग्राफ है, क्योंकि ग्राफ में एक लिंक बनाने वाली दूसरी शाखा से आदेशों को फिर से जारी रखना संभव है।<ref name=":0" />भले ही आदेशों का सेट सरल और समझने में आसान है, जब उपयोगकर्ता एक से अधिक चरणों को पूर्ववत करना चाहता है, तो लंघन और शाखाओं को जोड़ने वाली जटिल संरचना को समझना और याद रखना कठिन होता है।<ref name=":0" />
इस मॉडल की खास बात यह है कि इसमें एक कमांड को स्किप करने का विकल्प है। इसका मतलब है कि कमांड को फिर से करना छोड़ दिया जा सकता है। स्किप की गई कमांड को स्किप के रूप में चिह्नित किया गया है लेकिन डिलीट नहीं किया गया है। जब नए आदेश निष्पादित किए जाते हैं, तो इतिहास सूची को बरकरार रखा जाता है, इसलिए निष्पादित आदेशों का क्रम उसके साथ पुन: उत्पन्न किया जा सकता है। ऑर्डर को इतिहास के पेड़ के माध्यम से वर्णित किया जा सकता है जो एक निर्देशित ग्राफ है, क्योंकि ग्राफ में एक लिंक बनाने वाली दूसरी शाखा से आदेशों को फिर से जारी रखना संभव है।<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=":1" />लेखकों ने उन कार्यों का चयन किया जो एक मॉडल के पास होना चाहिए जब वह चयनात्मक अनडू का समर्थन करता है। इतिहास बफ़र में किसी भी निष्पादित क्रिया को अनडू करना संभव होना चाहिए। अनडू की जा रही कार्रवाई से स्वतंत्र क्रियाओं को अछूता छोड़ देना चाहिए।<ref name=":1" />ठीक वैसे ही किसी भी अनडू आदेश के लिए फिर से करना संभव है। चयनात्मक अनडू के लिए तीसरा कार्य यह है कि प्रत्यक्ष उपयोगकर्ता के अनुरोध के बिना इतिहास बफ़र से कोई भी आदेश स्वचालित रूप से खारिज नहीं किया जा सकता है।<ref name=":1" />चयनात्मक अनडू के लिए लागू होता है कि अनडू और फिर से करना किसी भी संदर्भ के बाहर निष्पादन योग्य है। तीन मुख्य मुद्दे हैं। पहला यह है कि अनडू आदेश मूल संदर्भ से बाहर हो सकते हैं। इसके माध्यम से मृत संदर्भ हो सकते हैं जिन्हें संभालना होगा। दूसरा मुद्दा यह है कि संशोधित आदेशों को अनडू किया जा सकता है और इसलिए इसे हल करना होगा कि अनडू करने के बाद कौन सी स्थिति प्रस्तुत की जाएगी। तीसरा मुद्दा कमांड की समस्याओं को दूर कर रहा है। चयनात्मक अनडू का सूचियों में कोई संकेतक नहीं है, इसलिए इसका मतलब है कि स्टैक से कोई आदेश नहीं छोड़ा जाना चाहिए।<ref name=":1" />






==== प्रत्यक्ष चयनात्मक पूर्ववत करें ====
==== प्रत्यक्ष चयनात्मक अनडू करें ====
प्रत्यक्ष चयनात्मक पूर्ववत एक इतिहास वृक्ष के साथ प्रतिबंधित रेखीय पूर्ववत का विस्तार है। ऑपरेशन चयनित कमांड की एक प्रति बनाता है, इसे निष्पादित करता है और इसे इतिहास सूची में जोड़ता है। वहाँ दो गैर-रैखिक संचालन चयनात्मक पूर्ववत और चयनात्मक फिर से परिभाषित किए गए हैं, इसलिए यह अधिक सममित है।<ref name=":0" />
प्रत्यक्ष चयनात्मक अनडू एक इतिहास वृक्ष के साथ प्रतिबंधित रेखीय अनडू का विस्तार है। ऑपरेशन चयनित कमांड की एक प्रति बनाता है, इसे निष्पादित करता है और इसे इतिहास सूची में जोड़ता है। वहाँ दो गैर-रैखिक संचालन चयनात्मक अनडू और चयनात्मक फिर से परिभाषित किए गए हैं, इसलिए यह अधिक सममित है।<ref name=":0" />




=== बहुउपयोगकर्ता अनुप्रयोग ===
=== बहुउपयोगकर्ता अनुप्रयोग ===
जब एकाधिक उपयोगकर्ता एक ही दस्तावेज़ को एक साथ संपादित कर सकते हैं, तो बहु-उपयोगकर्ता पूर्ववत करने की आवश्यकता होती है। वैश्विक बहु-उपयोगकर्ता पूर्ववत दस्तावेज़ में की गई नवीनतम क्रिया को पूर्ववत करता है, भले ही संपादन किसने किया हो। स्थानीय बहु-उपयोगकर्ता पूर्ववत केवल स्थानीय उपयोगकर्ता द्वारा किए गए कार्यों को पूर्ववत करता है, जिसके लिए गैर-रैखिक पूर्ववत कार्यान्वयन की आवश्यकता होती है।
जब एकाधिक उपयोगकर्ता एक ही प्रपत्र को एक साथ संपादित कर सकते हैं, तो बहु-उपयोगकर्ता अनडू करने की आवश्यकता होती है। वैश्विक बहु-उपयोगकर्ता अनडू प्रपत्र में की गई नवीनतम क्रिया को अनडू करता है, भले ही संपादन किसने किया हो। स्थानीय बहु-उपयोगकर्ता अनडू केवल स्थानीय उपयोगकर्ता द्वारा किए गए कार्यों को अनडू करता है, जिसके लिए गैर-रैखिक अनडू कार्यान्वयन की आवश्यकता होती है।


जहां पूर्ववत का उपयोग कई संपादनों के माध्यम से बैकट्रैक करने के लिए किया जा सकता है, फिर से करें आदेश क्रिया इतिहास के माध्यम से आगे बढ़ता है। नया संपादन करने से आमतौर पर फिर से की जाने वाली सूची साफ़ हो जाती है। यदि एक ब्रांचिंग रीडो मॉडल का उपयोग किया जाता है, तो नया संपादन क्रिया इतिहास को शाखाबद्ध करता है।
जहां अनडू का उपयोग कई संपादनों के माध्यम से बैकट्रैक करने के लिए किया जा सकता है, फिर से करें आदेश क्रिया इतिहास के माध्यम से आगे बढ़ता है। नया संपादन करने से आमतौर पर फिर से की जाने वाली सूची साफ़ हो जाती है। यदि एक ब्रांचिंग रीडो मॉडल का उपयोग किया जाता है, तो नया संपादन क्रिया इतिहास को शाखाबद्ध करता है।


पूर्ववत की जा सकने वाली पिछली कार्रवाइयों की संख्या प्रोग्राम, संस्करण और हार्डवेयर या सॉफ़्टवेयर क्षमताओं के अनुसार भिन्न होती है। उदाहरण के लिए, [[Adobe Photoshop]] में डिफ़ॉल्ट पूर्ववत करें/फिर से करें स्टैक आकार 20 है लेकिन उपयोगकर्ता द्वारा इसे बदला जा सकता है। दूसरे उदाहरण के रूप में, पहले{{when|date=May 2018}} Microsoft पेंट के संस्करणों को पूर्ववत करने के लिए केवल तीन संपादनों तक की अनुमति है; विंडोज 7 में पेश किए गए संस्करण ने इस सीमा को बढ़ाकर 50 कर दिया।
अनडू की जा सकने वाली पिछली कार्रवाइयों की संख्या प्रोग्राम, संस्करण और हार्डवेयर या सॉफ़्टवेयर क्षमताओं के अनुसार भिन्न होती है। उदाहरण के लिए, [[Adobe Photoshop]] में डिफ़ॉल्ट अनडू करें/फिर से करें स्टैक आकार 20 है लेकिन उपयोगकर्ता द्वारा इसे बदला जा सकता है। दूसरे उदाहरण के रूप में, पहले{{when|date=May 2018}} Microsoft पेंट के संस्करणों को अनडू करने के लिए केवल तीन संपादनों तक की अनुमति है; विंडोज 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>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">{{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" />




=== मेमेंटो पैटर्न ===
=== मेमेंटो पैटर्न ===
मेमेंटो पैटर्न के साथ किसी वस्तु की आंतरिक स्थिति को संग्रहित किया जाता है। जिस वस्तु में राज्य को सहेजा जाता है, उसे स्मृति चिन्ह कहा जाता है और स्मृति चिन्ह प्रवर्तक के माध्यम से आयोजित किया जाता है। यह एक स्मृति चिन्ह लौटाता है, वर्तमान स्थिति की जानकारी के साथ आरंभ किया जाता है, जब पूर्ववत निष्पादित किया जाता है, ताकि राज्य की जाँच की जा सके। स्मृति चिन्ह केवल प्रवर्तक के लिए दृश्यमान है।
मेमेंटो पैटर्न के साथ किसी वस्तु की आंतरिक स्थिति को संग्रहित किया जाता है। जिस वस्तु में राज्य को सहेजा जाता है, उसे स्मृति चिन्ह कहा जाता है और स्मृति चिन्ह प्रवर्तक के माध्यम से आयोजित किया जाता है। यह एक स्मृति चिन्ह लौटाता है, वर्तमान स्थिति की जानकारी के साथ आरंभ किया जाता है, जब अनडू निष्पादित किया जाता है, ताकि राज्य की जाँच की जा सके। स्मृति चिन्ह केवल प्रवर्तक के लिए दृश्यमान है।


मेमेंटो पैटर्न में अनडू मैकेनिज्म को केयरटेकर कहा जाता है। यह स्मृति चिन्हों को सुरक्षित रखने के लिए जिम्मेदार है लेकिन इनकी सामग्री को कभी नहीं बदलें। पूर्ववत करने के लिए कार्यवाहक प्रवर्तक के एक स्मृति चिन्ह का अनुरोध करता है और फिर पूर्ववत आवेदन करता है।<ref name=":2" />
मेमेंटो पैटर्न में अनडू मैकेनिज्म को केयरटेकर कहा जाता है। यह स्मृति चिन्हों को सुरक्षित रखने के लिए जिम्मेदार है लेकिन इनकी सामग्री को कभी नहीं बदलें। अनडू करने के लिए कार्यवाहक प्रवर्तक के एक स्मृति चिन्ह का अनुरोध करता है और फिर अनडू आवेदन करता है।<ref name=":2" />


पूर्ववत तंत्र का अधिकांश भाग विशिष्ट अनुप्रयोगों या कमांड वर्गों पर निर्भरता के बिना कार्यान्वित किया जा सकता है। इसमें इतिहास सूची का प्रबंधन, इतिहास स्क्रॉलर, पूर्ववत और फिर से करने के लिए मेनू प्रविष्टियाँ और अगले उपलब्ध कमांड के नाम के आधार पर मेनू प्रविष्टियों का अद्यतन शामिल है।<ref name=":0" />
अनडू तंत्र का अधिकांश भाग विशिष्ट अनुप्रयोगों या कमांड वर्गों पर निर्भरता के बिना कार्यान्वित किया जा सकता है। इसमें इतिहास सूची का प्रबंधन, इतिहास स्क्रॉलर, अनडू और फिर से करने के लिए मेनू प्रविष्टियाँ और अगले उपलब्ध कमांड के नाम के आधार पर मेनू प्रविष्टियों का अद्यतन सम्मलित है।<ref name=":0" />


प्रत्येक कमांड क्लास में एक डू विधि होती है जिसे कमांड निष्पादित होने पर कहा जाता है। अनडू-मेथड डू-मेथड के रिवर्स ऑपरेशन को लागू करता है। रिवर्स को लागू करने के लिए कई अलग-अलग रणनीतियां हैं।
प्रत्येक कमांड क्लास में एक डू विधि होती है जिसे कमांड निष्पादित होने पर कहा जाता है। अनडू-मेथड डू-मेथड के रिवर्स ऑपरेशन को लागू करता है। रिवर्स को लागू करने के लिए कई अलग-अलग रणनीतियां हैं।


* पूर्ण चेकपॉइंट':' इसका अर्थ है कि कमांड निष्पादित होने के बाद पूर्ण स्थिति सहेजी जाती है। यह सबसे आसान कार्यान्वयन है, लेकिन अत्यधिक कुशल नहीं है और इसलिए अक्सर इसका उपयोग नहीं किया जाता है।
* पूर्ण चेकपॉइंट':' इसका अर्थ है कि कमांड निष्पादित होने के बाद पूर्ण स्थिति सहेजी जाती है। यह सबसे सरल कार्यान्वयन है, लेकिन अत्यधिक कुशल नहीं है और इसलिए अक्सर इसका उपयोग नहीं किया जाता है।
* पूर्ण पुन: चलाएँ: इसलिए, प्रारंभिक अवस्था को सहेजा जाता है और इतिहास की सूची में प्रत्येक राज्य को प्रारंभिक अवस्था से शुरू करके और इतिहास की शुरुआत से सभी आदेशों को फिर से शुरू करके पहुँचा जा सकता है।<ref name=":0" />* आंशिक चेकपॉइंट':' यह सबसे अधिक उपयोग की जाने वाली रणनीति है। बदली हुई एप्लिकेशन स्थिति सहेजी जाती है और राज्य के हिस्से को पूर्ववत करने के साथ आगे के मूल्य पर वापस सेट किया जाता है।
* पूर्ण पुन: चलाएँ: इसलिए, प्रारंभिक अवस्था को सहेजा जाता है और इतिहास की सूची में प्रत्येक राज्य को प्रारंभिक अवस्था से शुरू करके और इतिहास की शुरुआत से सभी आदेशों को फिर से शुरू करके पहुँचा जा सकता है।<ref name=":0" />* आंशिक चेकपॉइंट':' यह सबसे अधिक उपयोग की जाने वाली रणनीति है। बदली हुई एप्लिकेशन स्थिति सहेजी जाती है और राज्य के हिस्से को अनडू करने के साथ आगे के मूल्य पर वापस सेट किया जाता है।
* उलटा कार्य: उलटा कार्य को सहेजे गए राज्य की जानकारी की आवश्यकता नहीं है। उदाहरण के लिए, वस्तु को सापेक्ष मात्रा में वापस ले जाकर हिलना उलटा हो सकता है।<ref name=":0" />चयनात्मक पूर्ववत करने के लिए राज्य को बचाने के लिए पर्याप्त जानकारी नहीं है।
* उलटा कार्य: उलटा कार्य को सहेजे गए राज्य की जानकारी की आवश्यकता नहीं है। उदाहरण के लिए, वस्तु को सापेक्ष मात्रा में वापस ले जाकर हिलना उलटा हो सकता है।<ref name=":0" />चयनात्मक अनडू करने के लिए राज्य को बचाने के लिए पर्याप्त जानकारी नहीं है।


== यह भी देखें ==
== यह भी देखें ==
Line 106: Line 106:


== बाहरी संबंध ==
== बाहरी संबंध ==
*[https://www.nytimes.com/2009/09/20/magazine/20FOB-onlanguage-t.html?_r=0 The Age of Undoing] - Article about the linguistic history of Undo at The New York Times Magazine.
*[https://www.nytimes.com/2009/09/20/magazine/20FOB-onlanguage-t.html?_r=0 The Age of अनडूing] - Article about the linguistic history of अनडू at The New York Times Magazine.
*[https://docplayer.net/39445574-Czech-technical-university-prague-faculty-of-electrical-engineering-bachelor-thesis-cascading-undo-control-jan-vratislav.html Cascading undo control] - a paper focused on what is cascading undo and how it might be presented to users
*[https://docplayer.net/39445574-Czech-technical-university-prague-faculty-of-electrical-engineering-bachelor-thesis-cascading-undo-control-jan-vratislav.html Cascading अनडू control] - a paper focused on what is cascading अनडू and how it might be presented to users
[[Category: पाठ संपादक सुविधाएँ]] [[Category: प्रतिवर्ती कंप्यूटिंग]] [[Category: 1968 में कंप्यूटर से संबंधित परिचय]]  
[[Category: पाठ संपादक सुविधाएँ]] [[Category: प्रतिवर्ती कंप्यूटिंग]] [[Category: 1968 में कंप्यूटर से संबंधित परिचय]]  



Revision as of 01:48, 7 March 2023

अनडू इंटरेक्शन तकनीक है जिसे कई कंप्यूटर प्रोग्राम में स्थापित किया जाता है। यह प्रपत्र में किए गए अंतिम परिवर्तन को मिटा देता है, और इसे पुरानी स्थिति में पुनः लाता है। कुछ और उन्नत प्रोग्रामों में, जैसे कि ग्राफिक्स सॉफ्टवेयर, अनडू करें संपादित की जा रही फ़ाइल पर की गई अंतिम कमांड को नहीं लेता है। अनडू करने की संभावना के साथ, उपयोगकर्ता त्रुटि के डर के बिना अन्वेषण और कार्य कर सकते हैं, क्योंकि उन्हें सरलता से अनडू किया जा सकता है।

अनडू करने की अपेक्षाओं को समझना सरल है: पूर्वानुमेय कार्यक्षमता के लिए, और सभी अनडू आदेशों को सम्मलित करने के लिए।[1] आमतौर पर अनडू तब तक उपलब्ध होता है जब तक कि उपयोगकर्ता सभी निष्पादित कार्यों को अनडू नहीं कर देता। लेकिन कुछ क्रियाएं ऐसी हैं जो अनडू सूची में संग्रहीत नहीं हैं, और इस प्रकार उन्हें अनडू नहीं किया जा सकता है। उदाहरण के लिए, फ़ाइल को सहेजना अनडू नहीं है, लेकिन सूची में कतारबद्ध है यह दिखाने के लिए कि इसे निष्पादित किया गया था। एक अन्य क्रिया जो आमतौर पर संग्रहीत नहीं होती है, और इस प्रकार अनडू नहीं होती है, स्क्रॉलिंग या चयन है।[2] अनडू का विपरीत रिडू होता है। रीडो कमांड अनडू को उलट देता है या बफर को एक और हालिया स्थिति में आगे बढ़ाता है।

अनडू कार्यक्षमता के सामान्य घटक वे आदेश हैं जो उपयोगकर्ता द्वारा निष्पादित किए गए थे, इतिहास बफ़र जो पूर्ण किए गए कार्यों को संग्रहीत करता है, इतिहास बफ़र को नियंत्रित करने के लिए अनडू/फिर से करें प्रबंधक, और उपयोगकर्ता के साथ इंटरैक्ट करने के लिए उपयोगकर्ता इंटरफ़ेस।[3] अधिकांश Microsoft Windows अनुप्रयोगों में, अनडू कमान कुंजी लिए कुंजीपटल संक्षिप्त रीति Control-Z|Ctrl+Z या Alt+Backspace है, और फिर से करने के लिए शॉर्टकट Control-Y|Ctrl+Y या Control key+Shift key+Z है।

अधिकांश Apple macintosh अनुप्रयोगों में, अनडू कमांड का शॉर्टकट कमांड की-जेड है, और रीडो के लिए शॉर्टकट कमांड की-शिफ्ट की-जेड है।

सभी प्लेटफॉर्म पर, अनडू/फिर से करें कार्यों को संपादन मेनू के माध्यम से भी एक्सेस किया जा सकता है।

इतिहास

लोगों द्वारा कंप्यूटर का उपयोग करने के तरीके के जवाब में कंप्यूटर पर किसी ऑपरेशन को अनडू करने की क्षमता का स्वतंत्र रूप से कई बार आविष्कार किया गया था।[4] ब्राउन विश्वविद्यालय में 1968 में शुरू हुई फ़ाइल पुनर्प्राप्ति और संपादन प्रणाली के बारे में कहा जाता है कि यह पहली कंप्यूटर-आधारित प्रणाली है, जिसमें अनडू फीचर है।[5][6] वारेन टिटेलमैन ने 1971 तक अनडू कार्य के साथ BBN-LISP के भाग के रूप में एक प्रोग्रामर सहायक विकसित किया।[7] ज़ेरॉक्स PARC ब्रावो (सॉफ्टवेयर) टेक्स्ट एडिटर के पास 1974 में एक अनडू कमांड था।[8] आईबीएम के लांस ए. मिलर और जॉन सी. थॉमस की 1976 की एक शोध रिपोर्ट, इंटरएक्टिव सिस्टम के उपयोग में व्यवहारिक मुद्दे,[9] नोट किया गया कि यह उपयोगकर्ताओं को कम से कम तत्काल पूर्ववर्ती आदेश (कुछ विशेष 'अनडू करें' आदेश जारी करके) 'वापस लेने' की अनुमति देने के लिए काफी उपयोगी होगा।[10] PARC (कंपनी) अनुसंधान केंद्र के प्रोग्रामरों ने कीबोर्ड शॉर्टकट Ctrl-Z को अनडू आदेश दिया, जो व्यक्तिगत कंप्यूटर युग में पाठ संपादकों और वर्ड प्रोसेसर की एक महत्वपूर्ण विशेषता बन गई।[11] 1980 में, ज़ेरॉक्स PARC के लैरी टेस्लर ने Apple कंप्यूटर में काम करना शुरू किया। वहाँ, उन्होंने और बिल एटकिंसन ने Apple लिसा पर एक मानक स्थिरता के रूप में एक अनडू आदेश की उपस्थिति की वकालत की। एटकिन्सन लिसा के एप्लिकेशन सॉफ़्टवेयर के व्यक्तिगत डेवलपर्स को अनडू और फिर से करने के एकल स्तर को सम्मलित करने में सक्षम था, लेकिन कई स्तरों के लिए पैरवी करने में असफल रहा।[citation needed] जब Apple ने लिसा के उत्तराधिकारी, Macintosh को पेश किया, तो यह निर्धारित किया गया कि सभी मानक अनुप्रयोगों में "संपादन" मेनू में पहले आदेश के रूप में "अनडू करें" सम्मलित होना चाहिए,[12] जो आज तक macOS और Windows पर मानक बना हुआ है।

बहु-स्तरीय अनडू आदेश 1980 के दशक में पेश किए गए थे, जिससे उपयोगकर्ता न केवल सबसे हालिया बल्कि कई कार्यों को वापस ले सकते थे।[11]व्यक्तिगत कंप्यूटर सॉफ़्टवेयर से पहले EMACS और अन्य टाइमशेयर स्क्रीन संपादकों के पास यह था। सिग्नस एड पहला अमीगा पाठ संपादक था जिसमें असीमित अनडू / फिर से सुविधा थी। AtariWriter, 1982 में पेश किया गया एक वर्ड-प्रोसेसिंग एप्लिकेशन, अनडू चित्रित किया गया। NewWord, 1984 में NewStar द्वारा जारी किया गया एक अन्य वर्ड-प्रोसेसिंग प्रोग्राम था, जिसमें एक अनरेज़ कमांड था।[11]IBM के VisiWord के पास एक अनडिलीट कमांड भी था।

मॉडल अनडू करें और फिर से करें

अनडू मॉडल को रैखिक या गैर-रैखिक के रूप में वर्गीकृत किया जा सकता है। गैर-रैखिक अनडू मॉडल को स्क्रिप्ट मॉडल, यूएस के मॉडल, ट्रायडिक मॉडल और चयनात्मक अनडू में उप-वर्गीकृत किया जा सकता है।[1]

मॉडल के कुछ सामान्य गुण हैं:

  • स्थिर निष्पादन संपत्ति: एक राज्य को आदेशों की एक आदेशित सूची के रूप में दर्शाया गया है। इसका मतलब यह है कि मूल निष्पादन के बाद जिस स्थिति में पहुंचा था, उस राज्य में एक आदेश हमेशा अनडू किया जाता है।[3]* कमजोर स्थिर निष्पादन: इसका मतलब यह है कि यदि अनडू निष्पादित किया जाता है तो सभी आदेश जो अनडू आदेश पर निर्भर करते हैं, आदेश पर निर्भर अनडू होते हैं।
  • स्थिर परिणाम संपत्ति: सूची को छोड़कर इस संपत्ति का अर्थ स्थिर निष्पादन संपत्ति के समान है। आदेशों की आदेशित सूची में सम्मलित है कि उन्हें केवल आदेशों के बजाय निष्पादित किया गया था।
  • क्रमविनिमेय: इसका मतलब है कि दो अलग-अलग आदेशों को अनडू और फिर से करने के बाद पहुंची हुई स्थिति समान होती है जब उन्हें विपरीत क्रम में निष्पादित किया जाता है।
  • न्यूनतर अनडू गुण: यह वर्णन करता है कि कमांड C का अनडू संचालन केवल कमांड C को अनडू करता है और C से छोटे सभी आदेश जो C पर निर्भर हैं।[3]


रैखिक अनडू करें

रैखिक अनडू एक स्टैक (डेटा संरचना) (आखिरी में पहले बाहर (एलआईएफओ) डेटा संरचना) के साथ कार्यान्वित किया जाता है जो सभी निष्पादित आदेशों का इतिहास संग्रहीत करता है। जब कोई नया आदेश निष्पादित किया जाता है तो इसे स्टैक के शीर्ष पर जोड़ दिया जाता है। इसलिए, केवल अंतिम निष्पादित कमांड को अनडू किया जा सकता है और इतिहास से हटाया जा सकता है। अनडू तब तक दोहराया जा सकता है जब तक कि इतिहास खाली न हो।[1]


प्रतिबंधित रैखिक मॉडल

प्रतिबंधित रेखीय मॉडल रेखीय अनडू मॉडल का एक संवर्द्धन है। यह रैखिक अनडू करने के लिए ऊपर वर्णित स्थिर निष्पादन संपत्ति को संतुष्ट करता है, क्योंकि यह मॉडल संपत्ति को नहीं रखता है यदि कोई आदेश किया जाता है जबकि इतिहास सूची में अन्य आदेश सम्मलित होते हैं। नया आदेश जोड़ने से पहले प्रतिबंधित रेखीय मॉडल इतिहास सूची को साफ़ करता है। लेकिन अन्य प्रतिबंध भी उपलब्ध हैं। उदाहरण के लिए, इतिहास सूची का आकार प्रतिबंधित किया जा सकता है या जब एक परिभाषित आकार तक पहुँच जाता है, तो पहले निष्पादित कमांड को सूची से हटा दिया जाता है।[1]


गैर रेखीय अनडू

रैखिक अनडू और गैर-रैखिक अनडू के बीच मुख्य अंतर यह है कि उपयोगकर्ता द्वारा निष्पादित आदेशों को मनमाने क्रम में अनडू करने की संभावना है। उनके पास सबसे हालिया आदेश को अनडू करने का मौका नहीं है बल्कि सूची से एक आदेश का चयन करने का मौका है।[3]गैर रेखीय मॉडल के लिए उपवर्ग हैं जो इस मॉडल को लागू करते हैं।

स्क्रिप्ट मॉडल

स्क्रिप्ट मॉडल उपयोगकर्ता क्रियाओं को कमांड की स्क्रिप्ट संपादित करने के रूप में संभालता है। निष्पादित आदेशों की इतिहास सूची को एक स्क्रिप्ट के रूप में व्याख्या की जाती है, एक अनडू प्रभाव को उसी तरह परिभाषित किया जाता है जैसे कि अनडू कार्रवाई पहले कभी नहीं हुई थी।[1]राज्य को अनडू करने के परिणाम के रूप में ऐसा होना चाहिए जैसे कि अनडू आदेश को कभी निष्पादित नहीं किया गया था। इस मॉडल का एक नुकसान यह है कि साइड इफेक्ट से बचने के लिए उपयोगकर्ता को अनडू आदेश और वर्तमान स्थिति के बीच संबंध को जानना होगा। इनमें से एक उदाहरण के लिए दोहराव हो सकता है। अन्य समस्याएँ यह हैं कि यदि बाद के आदेशों को एक अलग स्थिति में फिर से किया जाता है कि वे मूल रूप से प्रत्यक्ष हेरफेर इंटरफेस में निष्पादित किए गए थे, तो मूल उपयोगकर्ता क्रिया की यह पुनर्व्याख्या हमेशा स्पष्ट या अच्छी तरह से परिभाषित नहीं होती है।[1]


यूएस एंड आर मॉडल

इस मॉडल की खास बात यह है कि इसमें एक कमांड को स्किप करने का विकल्प है। इसका मतलब है कि कमांड को फिर से करना छोड़ दिया जा सकता है। स्किप की गई कमांड को स्किप के रूप में चिह्नित किया गया है लेकिन डिलीट नहीं किया गया है। जब नए आदेश निष्पादित किए जाते हैं, तो इतिहास सूची को बरकरार रखा जाता है, इसलिए निष्पादित आदेशों का क्रम उसके साथ पुन: उत्पन्न किया जा सकता है। ऑर्डर को इतिहास के पेड़ के माध्यम से वर्णित किया जा सकता है जो एक निर्देशित ग्राफ है, क्योंकि ग्राफ में एक लिंक बनाने वाली दूसरी शाखा से आदेशों को फिर से जारी रखना संभव है।[1]भले ही आदेशों का सेट सरल और समझने में सरल है, जब उपयोगकर्ता एक से अधिक चरणों को अनडू करना चाहता है, तो लंघन और शाखाओं को जोड़ने वाली जटिल संरचना को समझना और याद रखना कठिन होता है।[1]


ट्रायडिक मॉडल

इस गैर-रैखिक अनडू मॉडल में घुमाने की संभावना अनडू और फिर से करने के अलावा है। इसकी एक ही डेटा संरचना है जो उपर्युक्त मॉडल के रूप में एक इतिहास सूची और एक अलग रीडो सूची है जिसमें रीडो ऑपरेशन सम्मलित हैं। रोटेट ऑपरेशन उसके सामने रीडो लिस्ट की आखिरी कमांड सेट करता है। एक तरफ इसका मतलब यह है कि अगली कमांड को फिर से करने के लिए इसे सामने रखकर चुना जा सकता है। दूसरी ओर, रोटेशन का उपयोग रीडो सूची में उस स्थान का चयन करने के लिए किया जा सकता है जहां अगला अनडू ऑपरेशन कमांड डालेगा।[1]इसलिए रीडो की सूची अनियंत्रित है। एक पृथक आदेश को अनडू करने के लिए, उपयोगकर्ता को कई चरणों को अनडू करना होगा, फिर से करें सूची को घुमाना होगा और फिर कई चरणों को फिर से करना होगा।[1]फिर से करने के लिए सूची को तब तक घुमाना पड़ता है जब तक वांछित आदेश ऊपर न हो।

चयनात्मक अनडू करें

जकुबेक एट अल। कहते हैं कि चयनात्मक अनडू एक विशेषता है जो एक मॉडल पेश कर सकता है लेकिन चयनात्मक अनडू के लिए कोई स्पष्ट परिभाषा नहीं है।[3]लेखकों ने उन कार्यों का चयन किया जो एक मॉडल के पास होना चाहिए जब वह चयनात्मक अनडू का समर्थन करता है। इतिहास बफ़र में किसी भी निष्पादित क्रिया को अनडू करना संभव होना चाहिए। अनडू की जा रही कार्रवाई से स्वतंत्र क्रियाओं को अछूता छोड़ देना चाहिए।[3]ठीक वैसे ही किसी भी अनडू आदेश के लिए फिर से करना संभव है। चयनात्मक अनडू के लिए तीसरा कार्य यह है कि प्रत्यक्ष उपयोगकर्ता के अनुरोध के बिना इतिहास बफ़र से कोई भी आदेश स्वचालित रूप से खारिज नहीं किया जा सकता है।[3]चयनात्मक अनडू के लिए लागू होता है कि अनडू और फिर से करना किसी भी संदर्भ के बाहर निष्पादन योग्य है। तीन मुख्य मुद्दे हैं। पहला यह है कि अनडू आदेश मूल संदर्भ से बाहर हो सकते हैं। इसके माध्यम से मृत संदर्भ हो सकते हैं जिन्हें संभालना होगा। दूसरा मुद्दा यह है कि संशोधित आदेशों को अनडू किया जा सकता है और इसलिए इसे हल करना होगा कि अनडू करने के बाद कौन सी स्थिति प्रस्तुत की जाएगी। तीसरा मुद्दा कमांड की समस्याओं को दूर कर रहा है। चयनात्मक अनडू का सूचियों में कोई संकेतक नहीं है, इसलिए इसका मतलब है कि स्टैक से कोई आदेश नहीं छोड़ा जाना चाहिए।[3]


प्रत्यक्ष चयनात्मक अनडू करें

प्रत्यक्ष चयनात्मक अनडू एक इतिहास वृक्ष के साथ प्रतिबंधित रेखीय अनडू का विस्तार है। ऑपरेशन चयनित कमांड की एक प्रति बनाता है, इसे निष्पादित करता है और इसे इतिहास सूची में जोड़ता है। वहाँ दो गैर-रैखिक संचालन चयनात्मक अनडू और चयनात्मक फिर से परिभाषित किए गए हैं, इसलिए यह अधिक सममित है।[1]


बहुउपयोगकर्ता अनुप्रयोग

जब एकाधिक उपयोगकर्ता एक ही प्रपत्र को एक साथ संपादित कर सकते हैं, तो बहु-उपयोगकर्ता अनडू करने की आवश्यकता होती है। वैश्विक बहु-उपयोगकर्ता अनडू प्रपत्र में की गई नवीनतम क्रिया को अनडू करता है, भले ही संपादन किसने किया हो। स्थानीय बहु-उपयोगकर्ता अनडू केवल स्थानीय उपयोगकर्ता द्वारा किए गए कार्यों को अनडू करता है, जिसके लिए गैर-रैखिक अनडू कार्यान्वयन की आवश्यकता होती है।

जहां अनडू का उपयोग कई संपादनों के माध्यम से बैकट्रैक करने के लिए किया जा सकता है, फिर से करें आदेश क्रिया इतिहास के माध्यम से आगे बढ़ता है। नया संपादन करने से आमतौर पर फिर से की जाने वाली सूची साफ़ हो जाती है। यदि एक ब्रांचिंग रीडो मॉडल का उपयोग किया जाता है, तो नया संपादन क्रिया इतिहास को शाखाबद्ध करता है।

अनडू की जा सकने वाली पिछली कार्रवाइयों की संख्या प्रोग्राम, संस्करण और हार्डवेयर या सॉफ़्टवेयर क्षमताओं के अनुसार भिन्न होती है। उदाहरण के लिए, Adobe Photoshop में डिफ़ॉल्ट अनडू करें/फिर से करें स्टैक आकार 20 है लेकिन उपयोगकर्ता द्वारा इसे बदला जा सकता है। दूसरे उदाहरण के रूप में, पहले[when?] Microsoft पेंट के संस्करणों को अनडू करने के लिए केवल तीन संपादनों तक की अनुमति है; विंडोज 7 में पेश किए गए संस्करण ने इस सीमा को बढ़ाकर 50 कर दिया।

सरलीकृत, एकल-संपादन अनडू सुविधाएँ कभी-कभी अनडू कमांड को अनडू की जा सकने वाली क्रिया के रूप में मानकर फिर से करना बंद कर देती हैं। इसे फ्लिप अनडू मॉडल के रूप में जाना जाता है, क्योंकि उपयोगकर्ता अनडू आदेश का उपयोग करके दो प्रोग्राम राज्यों के बीच फ़्लिप कर सकता है।[13] 1990 के दशक की शुरुआत में बहु-स्तरीय अनडू के व्यापक रूप से अपनाने से पहले यह मानक मॉडल था।

कार्यान्वयन अनडू करें

अनडू विभिन्न पैटर्न के माध्यम से लागू किया जा सकता है। कमांड पैटर्न और स्मृति चिन्ह पैटर्न सबसे आम पैटर्न हैं।

कमांड पैटर्न

कमांड पैटर्न एक सॉफ्टवेयर डिजाइन पैटर्न है जो ऑपरेशन से कमांड ऑब्जेक्ट में जानकारी को एनकैप्सुलेट करता है। इसका मतलब है कि हर क्रिया एक वस्तु में संग्रहित होती है। सार कमांड वर्ग एक अमूर्त निष्पादन ऑपरेशन को लागू करता है, इसलिए प्रत्येक कमांड ऑब्जेक्ट में एक निष्पादन ऑपरेशन होता है। अनडू के लिए अनएक्सक्यूटेड ऑपरेशन भी होना चाहिए, जो निष्पादित कमांड के प्रभाव को अनडू करता है, जो एक इतिहास सूची में संग्रहीत होते हैं। अनडू और फिर से लागू किया जाता है ताकि सूची को आगे और पीछे से चलाया जा सके जब निष्पादित या अन-निष्पादित आदेश कहा जाता है।[14] एकल अनडू करने के लिए केवल निष्पादित आदेश संग्रहीत किया जाता है। बहु स्तरीय अनडू के विपरीत जहां न केवल आदेशों के साथ इतिहास सूची सहेजी जाती है बल्कि अनडू स्तरों की संख्या भी सूची की अधिकतम लंबाई निर्धारित की जा सकती है।[14]


मेमेंटो पैटर्न

मेमेंटो पैटर्न के साथ किसी वस्तु की आंतरिक स्थिति को संग्रहित किया जाता है। जिस वस्तु में राज्य को सहेजा जाता है, उसे स्मृति चिन्ह कहा जाता है और स्मृति चिन्ह प्रवर्तक के माध्यम से आयोजित किया जाता है। यह एक स्मृति चिन्ह लौटाता है, वर्तमान स्थिति की जानकारी के साथ आरंभ किया जाता है, जब अनडू निष्पादित किया जाता है, ताकि राज्य की जाँच की जा सके। स्मृति चिन्ह केवल प्रवर्तक के लिए दृश्यमान है।

मेमेंटो पैटर्न में अनडू मैकेनिज्म को केयरटेकर कहा जाता है। यह स्मृति चिन्हों को सुरक्षित रखने के लिए जिम्मेदार है लेकिन इनकी सामग्री को कभी नहीं बदलें। अनडू करने के लिए कार्यवाहक प्रवर्तक के एक स्मृति चिन्ह का अनुरोध करता है और फिर अनडू आवेदन करता है।[14]

अनडू तंत्र का अधिकांश भाग विशिष्ट अनुप्रयोगों या कमांड वर्गों पर निर्भरता के बिना कार्यान्वित किया जा सकता है। इसमें इतिहास सूची का प्रबंधन, इतिहास स्क्रॉलर, अनडू और फिर से करने के लिए मेनू प्रविष्टियाँ और अगले उपलब्ध कमांड के नाम के आधार पर मेनू प्रविष्टियों का अद्यतन सम्मलित है।[1]

प्रत्येक कमांड क्लास में एक डू विधि होती है जिसे कमांड निष्पादित होने पर कहा जाता है। अनडू-मेथड डू-मेथड के रिवर्स ऑपरेशन को लागू करता है। रिवर्स को लागू करने के लिए कई अलग-अलग रणनीतियां हैं।

  • पूर्ण चेकपॉइंट':' इसका अर्थ है कि कमांड निष्पादित होने के बाद पूर्ण स्थिति सहेजी जाती है। यह सबसे सरल कार्यान्वयन है, लेकिन अत्यधिक कुशल नहीं है और इसलिए अक्सर इसका उपयोग नहीं किया जाता है।
  • पूर्ण पुन: चलाएँ: इसलिए, प्रारंभिक अवस्था को सहेजा जाता है और इतिहास की सूची में प्रत्येक राज्य को प्रारंभिक अवस्था से शुरू करके और इतिहास की शुरुआत से सभी आदेशों को फिर से शुरू करके पहुँचा जा सकता है।[1]* आंशिक चेकपॉइंट':' यह सबसे अधिक उपयोग की जाने वाली रणनीति है। बदली हुई एप्लिकेशन स्थिति सहेजी जाती है और राज्य के हिस्से को अनडू करने के साथ आगे के मूल्य पर वापस सेट किया जाता है।
  • उलटा कार्य: उलटा कार्य को सहेजे गए राज्य की जानकारी की आवश्यकता नहीं है। उदाहरण के लिए, वस्तु को सापेक्ष मात्रा में वापस ले जाकर हिलना उलटा हो सकता है।[1]चयनात्मक अनडू करने के लिए राज्य को बचाने के लिए पर्याप्त जानकारी नहीं है।

यह भी देखें

संदर्भ

  1. 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 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. Myers, Brad A.; Kosbie, David S. (1996-04-13). पुन: प्रयोज्य पदानुक्रमित कमांड ऑब्जेक्ट. ACM. pp. 260–267. doi:10.1145/238386.238526. ISBN 0897917774. S2CID 17033810.
  3. 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 Jakubec, Karel; Polák, Marek; Nečaský, Martin; Holubová, Irena (2014). "Undo/Redo Operations in Complex Environments". Procedia Computer Science. 32: 561–570. doi:10.1016/j.procs.2014.05.461. ISSN 1877-0509.
  4. Moran, Chuktropolis Welling (2013-01-01). इंटरएक्टिव समय (Ph.D.). La Jolla: University of California, San Diego. ISBN 9781303194450.
  5. Barnet, Belinda (2014-12-01). Memory Machines: The Evolution of Hypertext (in English). Anthem Press. p. 108. ISBN 9781783083442. But the most popular development for novice users in FRESS was not its capacity to accommodate multiple displays and users; it was the 'undo' feature – the feature of which van Dam is most proud (van Dam 2011). FRESS pioneered a single-level undo for both word processing and hypertext. Every edit to a file was saved in a shadow version of the data structure, which allowed for both an 'autosave' and an undo. Brown staff and students understood immediately the importance and usefulness of this feature (van Dam 1999).
  6. Barnet, Belinda (2010-01-01). "Crafting the User-Centered Document Interface: The Hypertext Editing System (HES) and the File Retrieval and Editing System (FRESS)". Digital Humanities Quarterly. 4 (1).
  7. Teitelman, Warren (1972-01-01). "Automated Programmering: The Programmer's Assistant". Proceedings of the December 5–7, 1972, Fall Joint Computer Conference, Part II. AFIPS '72 (Fall, part II). New York, NY, USA: ACM: 917–921. doi:10.1145/1480083.1480119. S2CID 1276566.
  8. "Bravo Manual in Alto Non-Programmers Guide, p. 52" (PDF). Retrieved 2014-03-29.
  9. Miller, Lance A.; Thomas, John C. (1977-09-01). "इंटरएक्टिव सिस्टम के उपयोग में व्यवहार संबंधी मुद्दे". International Journal of Man-Machine Studies. 9 (5): 509–536. doi:10.1016/S0020-7373(77)80002-3. ISSN 0020-7373.
  10. Miller, Lance A.; John C. Thomas Jr. (December 1976). "इंटरएक्टिव सिस्टम के उपयोग में व्यवहार संबंधी मुद्दे". Archived from the original (PDF) on May 27, 2012. Retrieved 2011-05-21.
  11. 11.0 11.1 11.2 {{cite web | url=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}
  12. Apple Computer, Inc. (1984). "User Interface". मैकिंटोश के अंदर, खंड I.
  13. Roberta Mancini, Alan Dix and Stefano Levialdi. 2006. "Reflections on Undo"
  14. 14.0 14.1 14.2 Design patterns : elements of reusable object-oriented software. Gamma, Erich. Reading, Mass.: Addison-Wesley. 1995. ISBN 0201633612. OCLC 31171684.{{cite book}}: CS1 maint: others (link)


बाहरी संबंध