सार मशीन: Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Theoretical computer used for defining a model of computation}} {{Distinguish|Virtual machine}} कंप्यूटर विज्ञान मे...")
 
No edit summary
Line 1: Line 1:
{{Short description|Theoretical computer used for defining a model of computation}}
{{Short description|Theoretical computer used for defining a model of computation}}
{{Distinguish|Virtual machine}}
{{Distinguish|आभासी मशीन}}
[[कंप्यूटर विज्ञान]] में, एक अमूर्त मशीन एक सैद्धांतिक मॉडल है जो एक कंप्यूटर सिस्टम कैसे कार्य करता है, इसका विस्तृत और सटीक विश्लेषण करने की अनुमति देता है।<ref>{{Cite web |last=Weisstein |first=Eric W. |title=सार मशीन|url=https://mathworld.wolfram.com/ |access-date=2022-05-16 |website=mathworld.wolfram.com |language=en}}</ref> यह एक फ़ंक्शन (गणित) के समान है जिसमें यह इनपुट प्राप्त करता है और पूर्वनिर्धारित नियमों के आधार पर आउटपुट उत्पन्न करता है। सार मशीनें शाब्दिक मशीनों से भिन्न होती हैं, जिसमें उनसे [[हार्डवेयर विवरण भाषा]] के सही और स्वतंत्र रूप से प्रदर्शन करने की अपेक्षा की जाती है।<ref name=":2">{{Cite web |title=What is an Abstract Machine? |url=http://www.easytechjunkie.com/what-is-an-abstract-machine.htm |access-date=2022-05-16 |website=EasyTechJunkie |language=en-US}}</ref> सार [[मशीन]]ें मशीनें हैं क्योंकि वे [[प्रोग्रामिंग भाषा]] के चरण-दर-चरण निष्पादन की अनुमति देती हैं; वे अमूर्त (कंप्यूटर विज्ञान) हैं क्योंकि वे वास्तविक (हार्डवेयर विवरण भाषा) मशीनों के कई पहलुओं की उपेक्षा करते हैं।<ref name=":1">{{Cite journal |last1=Diehl |first1=Stephan |last2=Hartel |first2=Pieter |last3=Sestoft |first3=Peter |date=May 2000 |title=प्रोग्रामिंग भाषा कार्यान्वयन के लिए सार मशीनें|url=https://linkinghub.elsevier.com/retrieve/pii/S0167739X99000886 |journal=Future Generation Computer Systems |language=en |volume=16 |issue=7 |pages=739–751 |doi=10.1016/S0167-739X(99)00088-6}}</ref> एक विशिष्ट अमूर्त मशीन में इनपुट, आउटपुट और पूर्व को बाद में बदलने के लिए उपयोग किए जाने वाले स्वीकार्य संचालन के सेट के संदर्भ में एक परिभाषा होती है। उनका उपयोग विशुद्ध रूप से सैद्धांतिक कारणों के साथ-साथ वास्तविक दुनिया के कंप्यूटर सिस्टम के मॉडल के लिए भी किया जा सकता है।<ref name=":2" />संगणना के सिद्धांत में, सार मशीनों का उपयोग अक्सर संगणना के संबंध में विचार प्रयोगों में या [[कलन विधि]] की जटिलता का विश्लेषण करने के लिए किया जाता है।<ref name=":1" />अमूर्त मशीनों का यह उपयोग [[कम्प्यूटेशनल जटिलता सिद्धांत]] के क्षेत्र के लिए मौलिक है, जैसे कि परिमित-राज्य मशीन, [[मीली मशीन]], [[पुशडाउन ऑटोमेटन]]|पुश-डाउन ऑटोमेटा और [[ट्यूरिंग मशीन]]।<ref>{{Cite web |date=2021-04-29 |title=9.1.1: Finite-State Machine Overview |url=https://eng.libretexts.org/Under_Construction/Book%3A_Discrete_Structures/09%3A_Finite-State_Automata/9.01%3A_Introduction/9.1.01%3A_Finite-State_Machine_Overview |access-date=2022-05-31 |website=Engineering LibreTexts |language=en}}</ref>
[[कंप्यूटर विज्ञान]] में, एक अमूर्त मशीन एक सैद्धांतिक मॉडल है जो एक कंप्यूटर प्रणाली कैसे कार्य करता है, इसका विस्तृत और यथार्थ विश्लेषण करने की अनुमति देता है।<ref>{{Cite web |last=Weisstein |first=Eric W. |title=सार मशीन|url=https://mathworld.wolfram.com/ |access-date=2022-05-16 |website=mathworld.wolfram.com |language=en}}</ref> यह एक फलन (गणित) के समान है जिसमें यह निवेश प्राप्त करता है और पूर्वनिर्धारित नियमों के आधार पर निर्गम उत्पन्न करता है। सार मशीनें शाब्दिक मशीनों से भिन्न होती हैं, जिसमें उनसे [[हार्डवेयर विवरण भाषा]] के उचित और स्वतंत्र रूप से निष्पादन करने की अपेक्षा की जाती है।<ref name=":2">{{Cite web |title=What is an Abstract Machine? |url=http://www.easytechjunkie.com/what-is-an-abstract-machine.htm |access-date=2022-05-16 |website=EasyTechJunkie |language=en-US}}</ref> सार [[मशीन]] मशीनें हैं क्योंकि वे [[प्रोग्रामिंग भाषा|प्रोग्रामन भाषा]] के चरण-दर-चरण निष्पादन की अनुमति देती हैं; वे अमूर्त (कंप्यूटर विज्ञान) हैं क्योंकि वे वास्तविक (हार्डवेयर विवरण भाषा) मशीनों के कई रूपों की उपेक्षा करते हैं।<ref name=":1">{{Cite journal |last1=Diehl |first1=Stephan |last2=Hartel |first2=Pieter |last3=Sestoft |first3=Peter |date=May 2000 |title=प्रोग्रामिंग भाषा कार्यान्वयन के लिए सार मशीनें|url=https://linkinghub.elsevier.com/retrieve/pii/S0167739X99000886 |journal=Future Generation Computer Systems |language=en |volume=16 |issue=7 |pages=739–751 |doi=10.1016/S0167-739X(99)00088-6}}</ref> एक विशिष्ट अमूर्त मशीन में निवेश, निर्गम और पूर्व को बाद में बदलने के लिए उपयोग किए जाने वाले स्वीकार्य संचालन के समूह के संदर्भ में एक परिभाषा होती है। उनका उपयोग विशुद्ध रूप से सैद्धांतिक कारणों के साथ-साथ वास्तविक संसार के कंप्यूटर प्रणाली के मॉडल के लिए भी किया जा सकता है।<ref name=":2" /> संगणना के सिद्धांत में, सार मशीनों का उपयोग प्रायः संगणना के संबंध में विचार प्रयोगों में या [[कलन विधि|एल्गोरिदम]] की जटिलता का विश्लेषण करने के लिए किया जाता है।<ref name=":1" /> अमूर्त मशीनों का यह उपयोग [[कम्प्यूटेशनल जटिलता सिद्धांत|संगणनात्मक जटिलता सिद्धांत]] के क्षेत्र के लिए मौलिक है, जैसे कि परिमित-अवस्था मशीन, [[मीली मशीन]], [[पुशडाउन ऑटोमेटन]] और [[ट्यूरिंग मशीन]]।<ref>{{Cite web |date=2021-04-29 |title=9.1.1: Finite-State Machine Overview |url=https://eng.libretexts.org/Under_Construction/Book%3A_Discrete_Structures/09%3A_Finite-State_Automata/9.01%3A_Introduction/9.1.01%3A_Finite-State_Machine_Overview |access-date=2022-05-31 |website=Engineering LibreTexts |language=en}}</ref>




== वर्गीकरण ==
== वर्गीकरण ==
सार मशीनों को आम तौर पर दो प्रकारों में वर्गीकृत किया जाता है, जो किसी भी समय में किए जाने वाले संचालन की संख्या के आधार पर होते हैं: [[नियतात्मक एल्गोरिथ्म]] और गैर-नियतात्मक सार मशीन।<ref name=":2" />एक नियतात्मक एल्गोरिथम अमूर्त मशीन एक ऐसी प्रणाली है जिसमें एक विशेष शुरुआत की स्थिति या स्थिति हमेशा एक ही आउटपुट देती है। इनपुट को आउटपुट में कैसे परिवर्तित किया जाता है, इसमें कोई यादृच्छिकता या भिन्नता नहीं है।<ref>{{Cite web |title=What is Deterministic System? - Definition from Techopedia |url=http://www.techopedia.com/definition/602/deterministic-system |access-date=2022-05-30 |website=Techopedia.com |language=en}}</ref> इसके विपरीत, एक गैर-नियतात्मक एल्गोरिथम | गैर-नियतात्मक सार मशीन विभिन्न निष्पादनों पर एक ही इनपुट के लिए विभिन्न आउटपुट प्रदान कर सकती है।<ref name=":2" />नियतात्मक एल्गोरिथम के विपरीत, जो पुनरावृत्तियों की संख्या की परवाह किए बिना समान इनपुट के लिए समान परिणाम देता है, एक गैर-नियतात्मक एल्गोरिथ्म विभिन्न आउटपुट तक पहुंचने के लिए विभिन्न पथ लेता है।<ref>{{Cite journal |last=Stearns |first=Richard E. |date=January 2003 |title=नियतात्मक बनाम गैर-नियतात्मक समय और निचली सीमा की समस्याएं|url=http://dx.doi.org/10.1145/602382.602409 |journal=Journal of the ACM |volume=50 |issue=1 |pages=91–95 |doi=10.1145/602382.602409 |s2cid=2194820 |issn=0004-5411}}</ref> गैर-नियतात्मक एल्गोरिदम अनुमानित उत्तर प्राप्त करने में सहायक होते हैं जब एक नियतात्मक दृष्टिकोण का उपयोग करके एक सटीक समाधान प्राप्त करना कठिन या महंगा होता है।<ref>{{Cite journal |last1=Armoni |first1=Michal |last2=Gal-Ezer |first2=Judith |date=December 2007 |title=Non-determinism: An abstract concept in computer science studies |url=http://dx.doi.org/10.1080/08993400701442885 |journal=Computer Science Education |volume=17 |issue=4 |pages=243–262 |doi=10.1080/08993400701442885 |bibcode=2007CSEd...17..243A |s2cid=41928460 |issn=0899-3408}}</ref>
सार मशीनों को सामान्यतः दो प्रकारों में वर्गीकृत किया जाता है, जो किसी भी समय में किए जाने वाले संचालन की संख्या के आधार पर होते हैं: [[नियतात्मक एल्गोरिथ्म|नियतात्मक एल्गोरिदम]] और गैर-नियतात्मक सार मशीन।<ref name=":2" /> एक नियतात्मक एल्गोरिदम अमूर्त मशीन एक ऐसी प्रणाली है जिसमें एक विशेष प्रारम्भ की स्थिति या स्थिति सदैव एक ही निर्गम देती है। निवेश को निर्गम में कैसे परिवर्तित किया जाता है, इसमें कोई यादृच्छिकता या भिन्नता नहीं है।<ref>{{Cite web |title=What is Deterministic System? - Definition from Techopedia |url=http://www.techopedia.com/definition/602/deterministic-system |access-date=2022-05-30 |website=Techopedia.com |language=en}}</ref> इसके विपरीत, एक गैर-नियतात्मक सार मशीन विभिन्न निष्पादनों पर एक ही निवेश के लिए विभिन्न निर्गम प्रदान कर सकती है।<ref name=":2" /> नियतात्मक एल्गोरिदम के विपरीत, जो पुनरावृत्तियों की संख्या की ध्यान दिए बिना समान निवेश के लिए समान परिणाम देता है, एक गैर-नियतात्मक एल्गोरिदम विभिन्न निर्गम तक पहुंचने के लिए विभिन्न पथ लेता है।<ref>{{Cite journal |last=Stearns |first=Richard E. |date=January 2003 |title=नियतात्मक बनाम गैर-नियतात्मक समय और निचली सीमा की समस्याएं|url=http://dx.doi.org/10.1145/602382.602409 |journal=Journal of the ACM |volume=50 |issue=1 |pages=91–95 |doi=10.1145/602382.602409 |s2cid=2194820 |issn=0004-5411}}</ref> गैर-नियतात्मक एल्गोरिदम अनुमानित उत्तर प्राप्त करने में सहायक होते हैं जब एक नियतात्मक दृष्टिकोण का उपयोग करके एक यथार्थ हल प्राप्त करना जटिल या बहुमानित होता है।<ref>{{Cite journal |last1=Armoni |first1=Michal |last2=Gal-Ezer |first2=Judith |date=December 2007 |title=Non-determinism: An abstract concept in computer science studies |url=http://dx.doi.org/10.1080/08993400701442885 |journal=Computer Science Education |volume=17 |issue=4 |pages=243–262 |doi=10.1080/08993400701442885 |bibcode=2007CSEd...17..243A |s2cid=41928460 |issn=0899-3408}}</ref>


[[File:2-state 3-symbol Turing Machine.png|thumb|ट्यूरिंग मशीन का एक रन।]]ट्यूरिंग मशीन, उदाहरण के लिए, कंप्यूटर विज्ञान में कुछ सबसे मौलिक अमूर्त मशीनें हैं।<ref name=":2" />ये मशीनें किसी भी लम्बाई के एक [[स्ट्रिंग (कंप्यूटर विज्ञान)]] | टेप (प्रतीकों की एक स्ट्रिंग) पर संचालन करती हैं। उनके निर्देश प्रतीकों को संशोधित करने और उस प्रतीक को बदलने के लिए प्रदान करते हैं जो वर्तमान में मशीन के सूचक पर है। उदाहरण के लिए, एक प्रारंभिक ट्यूरिंग मशीन में एक ही आदेश हो सकता है, प्रतीक को 1 में परिवर्तित करें और फिर दाएं चलें, और यह मशीन केवल 1s की एक स्ट्रिंग का उत्पादन करेगी।<ref>{{Cite journal |last=Gill |first=John |date=December 1977 |title=संभाव्य ट्यूरिंग मशीनों की कम्प्यूटेशनल जटिलता|url=http://epubs.siam.org/doi/10.1137/0206049 |journal=SIAM Journal on Computing |language=en |volume=6 |issue=4 |pages=675–695 |doi=10.1137/0206049 |issn=0097-5397}}</ref> यह बुनियादी ट्यूरिंग मशीन नियतात्मक है; हालाँकि, [[गैर नियतात्मक ट्यूरिंग मशीन]] जो एक ही इनपुट दिए जाने पर कई क्रियाओं को अंजाम दे सकती है, का निर्माण भी किया जा सकता है।<ref name=":2" />
[[File:2-state 3-symbol Turing Machine.png|thumb|ट्यूरिंग मशीन का एक रन।]]ट्यूरिंग मशीन, उदाहरण के लिए, कंप्यूटर विज्ञान में कुछ सबसे मौलिक अमूर्त मशीनें हैं।<ref name=":2" /> ये मशीनें किसी भी लम्बाई के [[स्ट्रिंग (कंप्यूटर विज्ञान)]] (प्रतीकों की एक स्ट्रिंग) पर संचालन करती हैं। उनके निर्देश प्रतीकों को संशोधित करने और उस प्रतीक को बदलने के लिए प्रदान करते हैं जो वर्तमान में मशीन के सूचक पर है। उदाहरण के लिए, एक प्रारंभिक ट्यूरिंग मशीन में एक ही क्रम हो सकता है, प्रतीक को 1 में परिवर्तित करें और फिर दाएं चलें, और यह मशीन मात्र 1s की एक स्ट्रिंग का उत्पादन करेगी।<ref>{{Cite journal |last=Gill |first=John |date=December 1977 |title=संभाव्य ट्यूरिंग मशीनों की कम्प्यूटेशनल जटिलता|url=http://epubs.siam.org/doi/10.1137/0206049 |journal=SIAM Journal on Computing |language=en |volume=6 |issue=4 |pages=675–695 |doi=10.1137/0206049 |issn=0097-5397}}</ref> यह आधारभूत ट्यूरिंग मशीन नियतात्मक है; यद्यपि, [[गैर नियतात्मक ट्यूरिंग मशीन]] जो एक ही निवेश दिए जाने पर कई क्रियाओं को निष्पादित कर सकती हैं, उन्हें भी बनाया जा सकता है।<ref name=":2" />




== कार्यान्वयन ==
== कार्यान्वयन ==
भौतिक कार्यान्वयन (हार्डवेयर विवरण भाषा में) के मामले में अमूर्त मशीन का कोई भी कार्यान्वयन प्रोग्रामिंग भाषा के निर्देशों को निष्पादित करने के लिए किसी प्रकार के भौतिक उपकरण (यांत्रिक या इलेक्ट्रॉनिक) का उपयोग करता है। सार मशीन हालांकि अमूर्त मशीन और अंतर्निहित भौतिक उपकरण के बीच के स्तरों पर [[ सॉफ़्टवेयर ]] या [[फर्मवेयर]] में भी लागू की जा सकती है।<ref name=":3">{{Citation |last1=Gabbrielli |first1=Maurizio |title=Abstract Machines |date=2010 |url=http://link.springer.com/10.1007/978-1-84882-914-5_1 |work=Programming Languages: Principles and Paradigms |pages=1–25 |place=London |publisher=Springer London |doi=10.1007/978-1-84882-914-5_1 |isbn=978-1-84882-913-8 |access-date=2022-05-16 |last2=Martini |first2=Simone}}</ref> * हार्डवेयर विवरण भाषा: हार्डवेयर में अमूर्त मशीन का प्रत्यक्ष कार्यान्वयन भौतिक उपकरणों जैसे कि [[मेमोरी सेल (कंप्यूटिंग)]], अंकगणित तर्क इकाई और [[लॉजिक गेट]], बसों आदि का उपयोग करने का मामला है, एक भौतिक मशीन को लागू करने के लिए जिसकी मशीन भाषा के साथ मेल खाती है प्रोग्रामिंग भाषा। एक बार निर्माण हो जाने के बाद, ऐसी मशीन को बदलना वस्तुतः कठिन होगा।<ref name=":3" />एक [[सेंट्रल प्रोसेसिंग यूनिट]] को अमूर्त मशीन, विशेष रूप से प्रोसेसर (कंप्यूटिंग) | प्रोसेसर के डिजाइन के ठोस हार्डवेयर अहसास के रूप में माना जा सकता है।<ref>{{Cite journal |last1=Bair |first1=Ray |last2=Chien |first2=Andrew |last3=Cook |first3=Jeanine |last4=Donofrio |first4=Dave |last5=Grider |first5=Gary |last6=Kuehn |first6=Jeff |last7=Moore |first7=Shirley |last8=Shalf |first8=John |last9=Vetter |first9=Jeff |date=2018-02-01 |title=Hardware Evaluation: Abstract Machine Models and Proxy Architectures for Exascale Computing |doi=10.2172/1733300 |osti=1733300 |url=http://dx.doi.org/10.2172/1733300}}</ref>
भौतिक कार्यान्वयन (हार्डवेयर विवरण भाषा में) की स्थिति में अमूर्त मशीन का कोई भी कार्यान्वयन प्रोग्रामन भाषा के निर्देशों को निष्पादित करने के लिए किसी प्रकार के भौतिक उपकरण (यांत्रिक या इलेक्ट्रॉनिक) का उपयोग करता है। सार मशीन यद्यपि अमूर्त मशीन और अंतर्निहित भौतिक उपकरण के बीच के स्तरों पर [[ सॉफ़्टवेयर |सॉफ़्टवेयर]] या [[फर्मवेयर]] में भी लागू की जा सकती है।<ref name=":3">{{Citation |last1=Gabbrielli |first1=Maurizio |title=Abstract Machines |date=2010 |url=http://link.springer.com/10.1007/978-1-84882-914-5_1 |work=Programming Languages: Principles and Paradigms |pages=1–25 |place=London |publisher=Springer London |doi=10.1007/978-1-84882-914-5_1 |isbn=978-1-84882-913-8 |access-date=2022-05-16 |last2=Martini |first2=Simone}}</ref>  
* सॉफ्टवेयर: सॉफ्टवेयर के साथ एक सार मशीन को लागू करने के लिए सार मशीन द्वारा आवश्यक [[डेटा संरचना]] और एल्गोरिदम को लागू करने के लिए एक अलग प्रोग्रामिंग भाषा में प्रोग्राम लिखने की आवश्यकता होती है। यह सबसे अधिक लचीलापन प्रदान करता है क्योंकि अमूर्त मशीन निर्माणों को लागू करने वाले कार्यक्रमों को आसानी से बदला जा सकता है।<ref name=":3" />एक अमूर्त मशीन जिसे सॉफ्टवेयर सिमुलेशन के रूप में लागू किया गया है, या जिसके लिए एक [[ दुभाषिया (कंप्यूटिंग) ]] मौजूद है, एक [[ आभासी मशीन ]] कहलाती है।<ref name=":0">{{Cite web |title=FOLDOC से अमूर्त मशीन|url=http://foldoc.org/Abstract+machine |access-date=2021-08-07 |website=foldoc.org}}</ref>
* फर्मवेयर: फर्मवेयर कार्यान्वयन हार्डवेयर और सॉफ्टवेयर कार्यान्वयन के बीच बैठता है। इसमें अमूर्त मशीनों के लिए डेटा संरचना और एल्गोरिथम के [[माइक्रोकोड]] सिमुलेशन शामिल हैं।<ref name=":3" />माइक्रोकोड एक कंप्यूटर प्रोग्रामर को [[ विद्युत सर्किट ]] बनाने की आवश्यकता के बिना मशीन [[मशीन कोड]] लिखने की अनुमति देता है।<ref>{{Cite journal |last1=Gee |first1=J. |last2=Melvin |first2=S. W. |last3=Patt |first3=Y. N. |date=1986 |title=The implementation of Prolog via VAX 8600 microcode |url=http://dx.doi.org/10.1145/19551.19538 |journal=Proceedings of the 19th Annual Workshop on Microprogramming - MICRO 19 |pages=68–74 |location=New York, New York, USA |publisher=ACM Press |doi=10.1145/19551.19538|isbn=081860736X |s2cid=3846072 }}</ref>


* हार्डवेयर विवरण भाषा: हार्डवेयर में अमूर्त मशीन का प्रत्यक्ष कार्यान्वयन एक भौतिक मशीन को लागू करने के लिए भौतिक उपकरणों जैसे [[मेमोरी सेल (कंप्यूटिंग)|मेमोरी (कंप्यूटिंग)]], अंकगणित तर्क इकाई और [[लॉजिक गेट|तर्क गेट]], बसों आदि का उपयोग करने की स्थिति है, , जिसकी मशीनी भाषा प्रोग्रामन भाषा के साथ मेल खाती है। एक बार निर्माण हो जाने के बाद, ऐसी मशीन को बदलना वस्तुतः जटिल होगा।<ref name=":3" /> एक [[सेंट्रल प्रोसेसिंग यूनिट]] को अमूर्त मशीन, विशेष रूप से प्रोसेसर (कंप्यूटिंग) के डिजाइन के स्थूल हार्डवेयर प्रस्तुति के रूप में माना जा सकता है।<ref>{{Cite journal |last1=Bair |first1=Ray |last2=Chien |first2=Andrew |last3=Cook |first3=Jeanine |last4=Donofrio |first4=Dave |last5=Grider |first5=Gary |last6=Kuehn |first6=Jeff |last7=Moore |first7=Shirley |last8=Shalf |first8=John |last9=Vetter |first9=Jeff |date=2018-02-01 |title=Hardware Evaluation: Abstract Machine Models and Proxy Architectures for Exascale Computing |doi=10.2172/1733300 |osti=1733300 |url=http://dx.doi.org/10.2172/1733300}}</ref>


== प्रोग्रामिंग भाषा कार्यान्वयन ==
* सॉफ्टवेयर: सॉफ्टवेयर के साथ एक सार मशीन को लागू करने के लिए सार मशीन द्वारा आवश्यक [[डेटा संरचना]] और एल्गोरिदम को लागू करने के लिए एक अलग प्रोग्रामन भाषा में प्रोग्राम लिखने की आवश्यकता होती है। यह सबसे अधिक नम्यता प्रदान करता है क्योंकि अमूर्त मशीन निर्माणों को लागू करने वाले प्रोग्रामों को सरलता से बदला जा सकता है।<ref name=":3" /> एक अमूर्त मशीन जिसे सॉफ्टवेयर अनुकार के रूप में लागू किया गया है, या जिसके लिए एक [[ दुभाषिया (कंप्यूटिंग) |दुभाषिया (कंप्यूटिंग)]] स्थित है, एक [[ आभासी मशीन |आभासी मशीन]] कहलाती है।<ref name=":0">{{Cite web |title=FOLDOC से अमूर्त मशीन|url=http://foldoc.org/Abstract+machine |access-date=2021-08-07 |website=foldoc.org}}</ref>
एक अमूर्त मशीन, सहज रूप से, एक भौतिक कंप्यूटर के विचार का एक अमूर्त (कंप्यूटर विज्ञान) है।<ref>{{Cite web |title=अमूर्त मशीन|url=https://www.oxfordreference.com/view/10.1093/oi/authority.20110803095345129 |access-date=2022-05-16 |website=Oxford Reference |language=en}}</ref> वास्तविक निष्पादन के लिए, एल्गोरिदम को प्रोग्रामिंग भाषा द्वारा प्रदान की गई संरचनाओं का उपयोग करके उचित रूप से औपचारिक रूप दिया जाना चाहिए। इसका तात्पर्य है कि निष्पादित किए जाने वाले एल्गोरिदम को प्रोग्रामिंग भाषा निर्देशों का उपयोग करके व्यक्त किया जाना चाहिए।<ref name=":1" />[[ सिंटेक्स (प्रोग्रामिंग भाषाएं) ]] निर्देशों के रूप में ज्ञात निर्माणों के एक सीमित सेट का उपयोग करके [[कंप्यूटर प्रोग्राम]] के निर्माण को सक्षम बनाता है। अधिकांश अमूर्त मशीनें [[संग्रहीत कार्यक्रम कंप्यूटर]] और [[ राज्य (कंप्यूटर विज्ञान) ]] साझा करती हैं, जिसमें अक्सर स्टैक (सार डेटा प्रकार) और रजिस्टर शामिल होते हैं।<ref name=":3" /><ref>{{Cite journal |last1=García-Martín |first1=Julio Manuel |last2=Sutil-Martin |first2=Miguel |date=1999-08-15 |title=सार मशीनों को डिजाइन करने के लिए एक पैटर्न|url=https://www.researchgate.net/publication/239544796 |doi=10.13140/RG.2.1.3680.5203}}</ref> डिजिटल कंप्यूटरों में, स्टैक केवल एक मेमोरी सेल (कंप्यूटिंग) है जिसमें एक पता रजिस्टर होता है जो केवल सकारात्मक पूर्णांकों की गणना कर सकता है (एक प्रारंभिक मान लोड होने के बाद)। स्टैक के लिए एड्रेस रजिस्टर को [[ कार्यक्रम गणक ]] के रूप में जाना जाता है क्योंकि इसका मान हमेशा स्टैक पर शीर्ष आइटम को संदर्भित करता है।<ref>{{Cite web |last=upscfever.com |date=2017-01-25 |title=कंप्यूटर संगठन और वास्तुकला (स्टैक संगठन) - यूपीएससी फीवर|url=http://upscfever.com/upsc-fever/en/gatecse/en-gatecse-chp159.html |access-date=2022-05-31 |website=upscfever.com |language=en}}</ref> प्रोग्राम में निर्देशों की एक श्रृंखला होती है, जिसमें प्रोग्राम काउंटर प्रदर्शन किए जाने वाले अगले निर्देश का संकेत देता है। जब निर्देश पूरा हो जाता है, तो प्रोग्राम काउंटर आगे बढ़ जाता है। अमूर्त मशीन के इस मौलिक नियंत्रण तंत्र को इसके [[निष्पादन (कंप्यूटिंग)]] के रूप में भी जाना जाता है।<ref name=":1" />इस प्रकार, प्रोग्रामिंग भाषा के लिए एक अमूर्त मशीन प्रोग्रामिंग भाषा में लिखे गए प्रोग्रामों को संग्रहीत करने और चलाने में सक्षम डेटा संरचनाओं और एल्गोरिदम का कोई संग्रह है। यह [[ संकलक ]] के लिए एक मध्यवर्ती भाषा चरण प्रदान करके उच्च-स्तरीय प्रोग्रामिंग भाषा और [[निम्न-स्तरीय प्रोग्रामिंग भाषा]] के बीच की खाई को पाटता है। एक सार मशीन के निर्देश एक निश्चित स्रोत भाषा या स्रोत भाषाओं के सेट के संचालन को लागू करने के लिए आवश्यक अद्वितीय संचालन के लिए अनुकूलित होते हैं।<ref name=":3" />
* फर्मवेयर: फर्मवेयर कार्यान्वयन हार्डवेयर और सॉफ्टवेयर कार्यान्वयन के बीच बैठता है। इसमें अमूर्त मशीनों के लिए डेटा संरचना और एल्गोरिदम के [[माइक्रोकोड]] अनुकार सम्मिलित हैं।<ref name=":3" /> माइक्रोकोड एक कंप्यूटर प्रोग्रामर को [[ विद्युत सर्किट |विद्युत परिपथ]] बनाने की आवश्यकता के बिना मशीन [[मशीन कोड]] लिखने की अनुमति देता है।<ref>{{Cite journal |last1=Gee |first1=J. |last2=Melvin |first2=S. W. |last3=Patt |first3=Y. N. |date=1986 |title=The implementation of Prolog via VAX 8600 microcode |url=http://dx.doi.org/10.1145/19551.19538 |journal=Proceedings of the 19th Annual Workshop on Microprogramming - MICRO 19 |pages=68–74 |location=New York, New York, USA |publisher=ACM Press |doi=10.1145/19551.19538|isbn=081860736X |s2cid=3846072 }}</ref>
 
 
== प्रोग्रामन भाषा कार्यान्वयन ==
एक अमूर्त मशीन, सहज रूप से, एक भौतिक कंप्यूटर के विचार का एक अमूर्त (कंप्यूटर विज्ञान) है।<ref>{{Cite web |title=अमूर्त मशीन|url=https://www.oxfordreference.com/view/10.1093/oi/authority.20110803095345129 |access-date=2022-05-16 |website=Oxford Reference |language=en}}</ref> वास्तविक निष्पादन के लिए, एल्गोरिदम को प्रोग्रामन भाषा द्वारा प्रदान की गई संरचनाओं का उपयोग करके उचित रूप से साधारण रूप दिया जाना चाहिए। इसका तात्पर्य है कि निष्पादित किए जाने वाले एल्गोरिदम को प्रोग्रामन भाषा निर्देशों का उपयोग करके व्यक्त किया जाना चाहिए।<ref name=":1" />[[ सिंटेक्स (प्रोग्रामिंग भाषाएं) | सिंटेक्स (प्रोग्रामन भाषाएं)]] निर्देशों के रूप में ज्ञात निर्माणों के एक सीमित समूह का उपयोग करके [[कंप्यूटर प्रोग्राम]] के निर्माण को सक्षम बनाता है। अधिकांश अमूर्त मशीनें [[संग्रहीत कार्यक्रम कंप्यूटर|संग्रहीत प्रोग्राम कंप्यूटर]] और [[ राज्य (कंप्यूटर विज्ञान) |अवस्था (कंप्यूटर विज्ञान)]] साझा करती हैं, जिसमें प्रायः स्टैक (सार डेटा प्रकार) और रजिस्टर सम्मिलित होते हैं।<ref name=":3" /><ref>{{Cite journal |last1=García-Martín |first1=Julio Manuel |last2=Sutil-Martin |first2=Miguel |date=1999-08-15 |title=सार मशीनों को डिजाइन करने के लिए एक पैटर्न|url=https://www.researchgate.net/publication/239544796 |doi=10.13140/RG.2.1.3680.5203}}</ref> डिजिटल कंप्यूटरों में, स्टैक मात्र एक मेमोरी इकाई(कंप्यूटिंग) है जिसमें एक एड्रेस रजिस्टर होता है जो मात्र सकारात्मक पूर्णांकों की गणना कर सकता है (एक प्रारंभिक मान लोड होने के बाद)। स्टैक के लिए एड्रेस रजिस्टर को [[ कार्यक्रम गणक |प्रोग्राम गणक]] के रूप में जाना जाता है क्योंकि इसका मान सदैव स्टैक पर शीर्ष विषय को संदर्भित करता है।<ref>{{Cite web |last=upscfever.com |date=2017-01-25 |title=कंप्यूटर संगठन और वास्तुकला (स्टैक संगठन) - यूपीएससी फीवर|url=http://upscfever.com/upsc-fever/en/gatecse/en-gatecse-chp159.html |access-date=2022-05-31 |website=upscfever.com |language=en}}</ref> प्रोग्राम में निर्देशों की एक श्रृंखला होती है, जिसमें प्रोग्राम गणक निष्पादन किए जाने वाले अगले निर्देश का संकेत देता है। जब निर्देश पूरा हो जाता है, तो प्रोग्राम गणक आगे बढ़ जाता है। अमूर्त मशीन के इस मौलिक नियंत्रण तंत्र को इसके [[निष्पादन (कंप्यूटिंग)]] के रूप में भी जाना जाता है।<ref name=":1" /> इस प्रकार, प्रोग्रामन भाषा के लिए एक अमूर्त मशीन प्रोग्रामन भाषा में लिखे गए प्रोग्रामों को संग्रहीत करने और चलाने में सक्षम डेटा संरचनाओं और एल्गोरिदम का कोई संग्रह है। यह [[ संकलक |संकलक]] के लिए एक मध्यवर्ती भाषा चरण प्रदान करके उच्च-स्तरीय प्रोग्रामन भाषा और [[निम्न-स्तरीय प्रोग्रामिंग भाषा|निम्न-स्तरीय प्रोग्रामन भाषा]] के बीच के पुलों पाटता है। एक सार मशीन के निर्देश एक निश्चित स्रोत भाषा या स्रोत भाषाओं के समूह के संचालन को लागू करने के लिए आवश्यक अद्वितीय संचालन के लिए अनुकूलित होते हैं।<ref name=":3" />






=== अनिवार्य भाषाएँ ===
=== अनिवार्य भाषाएँ ===
1950 के दशक के अंत में, [[संगणक तंत्र संस्था]]|एसोसिएशन फॉर कंप्यूटिंग मशीनरी (ACM) और अन्य संबद्ध संगठनों ने [[UNCOL]]|यूनिवर्सल कंप्यूटर ओरिएंटेड लैंग्वेज (UNCOL) के लिए कई प्रस्ताव विकसित किए, जैसे कि कॉनवे का गेम ऑफ लाइफ|कॉनवे की मशीन। यूएनसीओएल अवधारणा अच्छी है, लेकिन उत्पन्न [[कोड]] के खराब प्रदर्शन के कारण इसका व्यापक रूप से उपयोग नहीं किया गया है। कंप्यूटिंग के कई क्षेत्रों में, 1990 के दशक के अंत में [[जावा वर्चुअल मशीन]] के विकास के बावजूद इसका प्रदर्शन एक मुद्दा बना रहेगा। [[ALGOL]] (1964), P4-मशीन (1976), UCSD पास्कल | UCSD P-मशीन (1977), और [[ फोर्थ (प्रोग्रामिंग भाषा) ]] (1970) इस तरह की कुछ सफल अमूर्त मशीनें हैं।<ref name=":1" />
1950 के दशक के अंत में, [[संगणक तंत्र संस्था]](एसीएम) और अन्य संबद्ध संगठनों ने [[UNCOL|यूनिवर्सल कंप्यूटर ओरिएंटेड लैंग्वेज]] (यूएनसीओएल) के लिए कई प्रस्ताव विकसित किए, जैसे कि कॉनवे की मशीन। यूएनसीओएल अवधारणा ठीक है, परन्तु उत्पन्न [[कोड]] के निकृष्ट निष्पादन के कारण इसका व्यापक रूप से उपयोग नहीं किया गया है। कंप्यूटिंग के कई क्षेत्रों में, 1990 के दशक के अंत में [[जावा वर्चुअल मशीन]] के विकास के बावजूद इसका निष्पादन एक मुद्दा बना रहेगा। [[ALGOL]] (1964), P4-मशीन (1976), UCSD पास्कल | UCSD P-मशीन (1977), और [[ फोर्थ (प्रोग्रामिंग भाषा) |फोर्थ (प्रोग्रामन भाषा)]] (1970) इस तरह की कुछ सफल अमूर्त मशीनें हैं।<ref name=":1" />




=== वस्तु-उन्मुख भाषाएँ ===
=== वस्तु-उन्मुख भाषाएँ ===
[[ ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग ]] के लिए सार मशीनें | ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज अक्सर [[स्टैक-आधारित मेमोरी आवंटन]] | स्टैक-आधारित होती हैं और [[ वस्तु (कंप्यूटर विज्ञान) ]] और [[ विधि (कंप्यूटर प्रोग्रामिंग) ]] के लिए विशेष एक्सेस निर्देश होते हैं। इन मशीनों में, [[स्मृति प्रबंधन]] अक्सर [[कचरा संग्रह (कंप्यूटर विज्ञान)]] (मेमोरी रिकवरी सुविधा प्रोग्रामिंग भाषाओं में निर्मित) द्वारा किया जाता है।<ref>{{Cite web |title=What is Object-Oriented Programming (OOP)? |url=https://www.techtarget.com/searchapparchitecture/definition/object-oriented-programming-OOP |access-date=2022-05-31 |website=SearchAppArchitecture |language=en}}</ref> स्मॉलटॉक | स्मॉलटॉक-80 (1980), [[ स्वयं (प्रोग्रामिंग भाषा) ]] (1989), और [[ जावा (प्रोग्रामिंग भाषा) ]] (1994) इस कार्यान्वयन के उदाहरण हैं।<ref name=":1" />
[[ ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग | ऑब्जेक्ट ओरिएंटेड प्रोग्रामन]] के लिए सार मशीनें | ऑब्जेक्ट-ओरिएंटेड प्रोग्रामन लैंग्वेज प्रायः [[स्टैक-आधारित मेमोरी आवंटन]] | स्टैक-आधारित होती हैं और [[ वस्तु (कंप्यूटर विज्ञान) |वस्तु (कंप्यूटर विज्ञान)]] और [[ विधि (कंप्यूटर प्रोग्रामिंग) |विधि (कंप्यूटर प्रोग्रामन)]] के लिए विशेष एक्सेस निर्देश होते हैं। इन मशीनों में, [[स्मृति प्रबंधन]] प्रायः [[कचरा संग्रह (कंप्यूटर विज्ञान)]] (मेमोरी रिकवरी सुविधा प्रोग्रामन भाषाओं में निर्मित) द्वारा किया जाता है।<ref>{{Cite web |title=What is Object-Oriented Programming (OOP)? |url=https://www.techtarget.com/searchapparchitecture/definition/object-oriented-programming-OOP |access-date=2022-05-31 |website=SearchAppArchitecture |language=en}}</ref> स्मॉलटॉक | स्मॉलटॉक-80 (1980), [[ स्वयं (प्रोग्रामिंग भाषा) |स्वयं (प्रोग्रामन भाषा)]] (1989), और [[ जावा (प्रोग्रामिंग भाषा) |जावा (प्रोग्रामन भाषा)]] (1994) इस कार्यान्वयन के उदाहरण हैं।<ref name=":1" />




=== स्ट्रिंग प्रोसेसिंग लैंग्वेज ===
=== स्ट्रिंग प्रोसेसिंग लैंग्वेज ===
एक स्ट्रिंग (कंप्यूटर साइंस) एक कंप्यूटर भाषा है जो संख्याओं के बजाय प्रसंस्करण स्ट्रिंग्स पर केंद्रित है। दशकों से [[ शैल (कंप्यूटिंग) ]], [[प्रोग्रामिंग टूल]], सामान्य-उद्देश्य मैक्रो प्रोसेसर और स्क्रिप्टिंग भाषा के रूप में स्ट्रिंग प्रोसेसिंग लैंग्वेज हैं।<ref>{{Citation |title=Design considerations for string processing languages |date=1985 |url=http://dx.doi.org/10.1007/3-540-16041-8_2 |work=A Study in String Processing Languages |series=Lecture Notes in Computer Science |volume=205 |pages=17–37 |place=Berlin, Heidelberg |publisher=Springer Berlin Heidelberg |doi=10.1007/3-540-16041-8_2 |isbn=978-3-540-16041-0 |access-date=2022-05-31}}</ref> एक उपयुक्त सार मशीन का उपयोग करने के दो लाभ हैं: निष्पादन में वृद्धि (कंप्यूटिंग) और बढ़ी हुई पोर्टेबिलिटी। [[SNOBOL]] और ML/I प्रारंभिक स्ट्रिंग प्रसंस्करण भाषाओं के दो उल्लेखनीय उदाहरण हैं जो मशीन स्वतंत्रता प्राप्त करने के लिए एक अमूर्त मशीन का उपयोग करते हैं।<ref name=":1" />
एक स्ट्रिंग (कंप्यूटर साइंस) एक कंप्यूटर भाषा है जो संख्याओं के बजाय प्रसंस्करण स्ट्रिंग्स पर केंद्रित है। दशकों से [[ शैल (कंप्यूटिंग) |शैल (कंप्यूटिंग)]] , [[प्रोग्रामिंग टूल|प्रोग्रामन टूल]], सामान्य-उद्देश्य मैक्रो प्रोसेसर और स्क्रिप्टिंग भाषा के रूप में स्ट्रिंग प्रोसेसिंग लैंग्वेज हैं।<ref>{{Citation |title=Design considerations for string processing languages |date=1985 |url=http://dx.doi.org/10.1007/3-540-16041-8_2 |work=A Study in String Processing Languages |series=Lecture Notes in Computer Science |volume=205 |pages=17–37 |place=Berlin, Heidelberg |publisher=Springer Berlin Heidelberg |doi=10.1007/3-540-16041-8_2 |isbn=978-3-540-16041-0 |access-date=2022-05-31}}</ref> एक उपयुक्त सार मशीन का उपयोग करने के दो लाभ हैं: निष्पादन में वृद्धि (कंप्यूटिंग) और बढ़ी हुई पोर्टेबिलिटी। [[SNOBOL]] और ML/I प्रारंभिक स्ट्रिंग प्रसंस्करण भाषाओं के दो उल्लेखनीय उदाहरण हैं जो मशीन स्वतंत्रता प्राप्त करने के लिए एक अमूर्त मशीन का उपयोग करते हैं।<ref name=":1" />




=== कार्यात्मक प्रोग्रामिंग भाषाएं ===
=== कार्यात्मक प्रोग्रामन भाषाएं ===
[[File:Machine de Krivine.jpg|thumb|[[ मशीन घटता है ]] का सचित्र प्रतिनिधित्व।]]SECD मशीन (1964) और कार्डेली की कार्यात्मक सार मशीन (1983) सहित [[कार्यात्मक प्रोग्रामिंग]] के लिए प्रारंभिक अमूर्त मशीनें, कठोर मूल्यांकन को परिभाषित करती हैं, जिसे [[मूल्यांकन रणनीति]] के रूप में भी जाना जाता है। उत्सुक या कॉल-बाय-वैल्यू मूल्यांकन,<ref name=":1" />जिसमें फ़ंक्शन तर्कों का मूल्यांकन कॉल से पहले और ठीक एक बार किया जाता है। हाल के वर्षों में, अधिकांश शोध [[आलसी मूल्यांकन]] | आलसी (या कॉल-बाय-नीड) मूल्यांकन पर किया गया है,<ref>{{Cite journal |last1=Hackett |first1=Jennifer |last2=Hutton |first2=Graham |date=2019-07-26 |title=कॉल-बाय-नीड क्लैरवॉयंट कॉल-बाय-वैल्यू है|url=http://dx.doi.org/10.1145/3341718 |journal=Proceedings of the ACM on Programming Languages |volume=3 |issue=ICFP |pages=1–23 |doi=10.1145/3341718 |s2cid=195782686 |issn=2475-1421}}</ref> जैसे कि जी-मशीन (1984), क्रिवाइन मशीन (1985), और थ्री इंस्ट्रक्शन मशीन (1986), जिसमें फ़ंक्शन तर्कों का मूल्यांकन केवल आवश्यक होने पर और अधिक से अधिक एक बार किया जाता है। एक कारण यह है कि सख्त मूल्यांकन का प्रभावी कार्यान्वयन अब अच्छी तरह से समझा जा चुका है, इसलिए अमूर्त मशीन की आवश्यकता कम हो गई है।<ref name=":1" />
[[File:Machine de Krivine.jpg|thumb|[[ मशीन घटता है | मशीन घटता है]] का सचित्र प्रतिनिधित्व।]]SECD मशीन (1964) और कार्डेली की कार्यात्मक सार मशीन (1983) सहित [[कार्यात्मक प्रोग्रामिंग|कार्यात्मक प्रोग्रामन]] के लिए प्रारंभिक अमूर्त मशीनें, कठोर मूल्यांकन को परिभाषित करती हैं, जिसे [[मूल्यांकन रणनीति]] के रूप में भी जाना जाता है। उत्सुक या कॉल-बाय-वैल्यू मूल्यांकन,<ref name=":1" />जिसमें फलन तर्कों का मूल्यांकन कॉल से पहले और ठीक एक बार किया जाता है। हाल के वर्षों में, अधिकांश शोध [[आलसी मूल्यांकन]] | आलसी (या कॉल-बाय-नीड) मूल्यांकन पर किया गया है,<ref>{{Cite journal |last1=Hackett |first1=Jennifer |last2=Hutton |first2=Graham |date=2019-07-26 |title=कॉल-बाय-नीड क्लैरवॉयंट कॉल-बाय-वैल्यू है|url=http://dx.doi.org/10.1145/3341718 |journal=Proceedings of the ACM on Programming Languages |volume=3 |issue=ICFP |pages=1–23 |doi=10.1145/3341718 |s2cid=195782686 |issn=2475-1421}}</ref> जैसे कि जी-मशीन (1984), क्रिवाइन मशीन (1985), और थ्री इंस्ट्रक्शन मशीन (1986), जिसमें फलन तर्कों का मूल्यांकन मात्र आवश्यक होने पर और अधिक से अधिक एक बार किया जाता है। एक कारण यह है कि सख्त मूल्यांकन का प्रभावी कार्यान्वयन अब ठीक तरह से समझा जा चुका है, इसलिए अमूर्त मशीन की आवश्यकता कम हो गई है।<ref name=":1" />




=== तार्किक भाषाएं ===
=== तार्किक भाषाएं ===
प्रथम-क्रम तर्क | विधेय कलन (प्रथम क्रम तर्क) [[तर्क प्रोग्रामिंग]] की नींव है। सबसे प्रसिद्ध लॉजिक प्रोग्रामिंग लैंग्वेज [[प्रोलॉग]] है। प्रोलॉग में नियमों को एक समान प्रारूप में लिखा जाता है जिसे सार्वभौमिक रूप से परिमाणित 'हॉर्न क्लॉज' के रूप में जाना जाता है, जिसका अर्थ है गणना शुरू करना जो उद्देश्य के प्रमाण की खोज करने का प्रयास करता है। द [[वॉरेन सार मशीन]] (1983),<ref name=":1" />जो प्रोलॉग प्रोग्राम संकलन में वास्तविक मानक बन गया है, अधिकांश अध्ययनों का फोकस रहा है। यह बैकट्रैकिंग (खोज एल्गोरिथम) का समर्थन करने के लिए डेटा एकीकरण निर्देश और नियंत्रण प्रवाह निर्देश जैसे विशेष उद्देश्य निर्देश प्रदान करता है।<ref>{{Cite web |date=2018-05-26 |title=Prolog {{!}} An Introduction |url=https://www.geeksforgeeks.org/prolog-an-introduction/ |access-date=2022-05-31 |website=GeeksforGeeks |language=en-us}}</ref>
प्रथम-क्रम तर्क | विधेय कलन (प्रथम क्रम तर्क) [[तर्क प्रोग्रामिंग|तर्क प्रोग्रामन]] की नींव है। सबसे प्रसिद्ध तर्क प्रोग्रामन लैंग्वेज [[प्रोलॉग]] है। प्रोलॉग में नियमों को एक समान प्रारूप में लिखा जाता है जिसे सार्वभौमिक रूप से परिमाणित 'हॉर्न क्लॉज' के रूप में जाना जाता है, जिसका अर्थ है गणना प्रारम्भ करना जो उद्देश्य के प्रमाण की खोज करने का प्रयास करता है। द [[वॉरेन सार मशीन]] (1983),<ref name=":1" />जो प्रोलॉग प्रोग्राम संकलन में वास्तविक मानक बन गया है, अधिकांश अध्ययनों का फोकस रहा है। यह बैकट्रैकिंग (खोज एल्गोरिदम) का समर्थन करने के लिए डेटा एकीकरण निर्देश और नियंत्रण प्रवाह निर्देश जैसे विशेष उद्देश्य निर्देश प्रदान करता है।<ref>{{Cite web |date=2018-05-26 |title=Prolog {{!}} An Introduction |url=https://www.geeksforgeeks.org/prolog-an-introduction/ |access-date=2022-05-31 |website=GeeksforGeeks |language=en-us}}</ref>




== संरचना ==
== संरचना ==
एक सामान्य सार मशीन एक मेमोरी सेल (कंप्यूटिंग) और एक इंटरप्रेटर (कंप्यूटिंग) से बनी होती है। मेमोरी का उपयोग डेटा और प्रोग्राम को स्टोर करने के लिए किया जाता है, जबकि दुभाषिया वह घटक है जो प्रोग्राम में शामिल निर्देशों को निष्पादित करता है।<ref name=":3" />  
एक सामान्य सार मशीन एक मेमोरी सेल (कंप्यूटिंग) और एक इंटरप्रेटर (कंप्यूटिंग) से बनी होती है। मेमोरी का उपयोग डेटा और प्रोग्राम को स्टोर करने के लिए किया जाता है, जबकि दुभाषिया वह घटक है जो प्रोग्राम में सम्मिलित निर्देशों को निष्पादित करता है।<ref name=":3" />  
[[File:The_structure_of_an_abstract_machine.png|thumb|एक अमूर्त मशीन की संरचना]]दुभाषिया को उन कार्यों को करना चाहिए जो उस प्रोग्रामिंग भाषा के लिए अद्वितीय हैं जो वह व्याख्या कर रहा है। हालाँकि, भाषाओं की विविधता को देखते हुए, सभी दुभाषियों द्वारा साझा किए गए संचालन की श्रेणियों और एक निष्पादन (कंप्यूटिंग) की पहचान करना संभव है। दुभाषिया के संचालन और संबंधित डेटा संरचनाओं को निम्नलिखित श्रेणियों में विभाजित किया गया है:<ref name=":3" /><ref>{{Cite journal |last1=Accattoli |first1=Beniamino |last2=Barenbaum |first2=Pablo |last3=Mazza |first3=Damiano |date=2014-11-26 |title=आसवन सार मशीनें|url=https://dl.acm.org/doi/10.1145/2692915.2628154 |journal=ACM SIGPLAN Notices |language=en |volume=49 |issue=9 |pages=363–376 |doi=10.1145/2692915.2628154 |s2cid=234775413 |issn=0362-1340}}</ref>
[[File:The_structure_of_an_abstract_machine.png|thumb|एक अमूर्त मशीन की संरचना]]दुभाषिया को उन कार्यों को करना चाहिए जो उस प्रोग्रामन भाषा के लिए अद्वितीय हैं जो वह व्याख्या कर रहा है। यद्यपि, भाषाओं की विविधता को देखते हुए, सभी दुभाषियों द्वारा साझा किए गए संचालन की श्रेणियों और एक निष्पादन (कंप्यूटिंग) की पहचान करना संभव है। दुभाषिया के संचालन और संबंधित डेटा संरचनाओं को निम्नलिखित श्रेणियों में विभाजित किया गया है:<ref name=":3" /><ref>{{Cite journal |last1=Accattoli |first1=Beniamino |last2=Barenbaum |first2=Pablo |last3=Mazza |first3=Damiano |date=2014-11-26 |title=आसवन सार मशीनें|url=https://dl.acm.org/doi/10.1145/2692915.2628154 |journal=ACM SIGPLAN Notices |language=en |volume=49 |issue=9 |pages=363–376 |doi=10.1145/2692915.2628154 |s2cid=234775413 |issn=0362-1340}}</ref>
# [[आदिम डेटा प्रकार]] के प्रसंस्करण के लिए संचालन:
# [[आदिम डेटा प्रकार]] के प्रसंस्करण के लिए संचालन:
# निष्पादन (कंप्यूटिंग) के अनुक्रम को नियंत्रित करने के लिए संचालन और डेटा संरचनाएं;
# निष्पादन (कंप्यूटिंग) के अनुक्रम को नियंत्रित करने के लिए संचालन और डेटा संरचनाएं;
Line 50: Line 53:


=== प्रारंभिक डेटा प्रसंस्करण ===
=== प्रारंभिक डेटा प्रसंस्करण ===
एक सार मशीन में आदिम डेटा प्रकारों जैसे कि तार और पूर्णांक में हेरफेर करने के लिए संचालन होना चाहिए।<ref name=":3" />उदाहरण के लिए, पूर्णांकों को लगभग सार्वभौमिक रूप से भौतिक अमूर्त मशीनों और कई प्रोग्रामिंग भाषाओं द्वारा उपयोग की जाने वाली सार मशीनों दोनों के लिए एक बुनियादी डेटा प्रकार माना जाता है। मशीन [[अंकगणित]] आवश्यक करती है, जैसे जोड़ और गुणा, एक ही समय के भीतर।<ref>{{Cite web |last=baeldung |date=2018-01-11 |title=Introduction to Java Primitives {{!}} Baeldung |url=https://www.baeldung.com/java-primitives |access-date=2022-05-31 |website=www.baeldung.com |language=en-US}}</ref>
एक सार मशीन में आदिम डेटा प्रकारों जैसे कि तार और पूर्णांक में हेरफेर करने के लिए संचालन होना चाहिए।<ref name=":3" />उदाहरण के लिए, पूर्णांकों को लगभग सार्वभौमिक रूप से भौतिक अमूर्त मशीनों और कई प्रोग्रामन भाषाओं द्वारा उपयोग की जाने वाली सार मशीनों दोनों के लिए एक आधारभूत डेटा प्रकार माना जाता है। मशीन [[अंकगणित]] आवश्यक करती है, जैसे जोड़ और गुणा, एक ही समय के भीतर।<ref>{{Cite web |last=baeldung |date=2018-01-11 |title=Introduction to Java Primitives {{!}} Baeldung |url=https://www.baeldung.com/java-primitives |access-date=2022-05-31 |website=www.baeldung.com |language=en-US}}</ref>




=== अनुक्रम नियंत्रण ===
=== अनुक्रम नियंत्रण ===
अनुक्रम नियंत्रण के लिए संचालन और संरचनाएं प्रोग्राम निर्देशों के निष्पादन (कंप्यूटिंग) को नियंत्रित करने की अनुमति देती हैं। जब कुछ [[सशर्त (कंप्यूटर प्रोग्रामिंग)]] मिलते हैं, तो प्रोग्राम के सामान्य अनुक्रमिक निष्पादन को बदलना आवश्यक होता है।<ref name=":3" />इसलिए, दुभाषिया (कंप्यूटिंग) डेटा संरचनाओं को नियोजित करता है (जैसे कि निष्पादन के लिए अगले निर्देश की [[पता प्रोग्रामिंग भाषा]] को संग्रहीत करने के लिए उपयोग किया जाता है) जो डेटा हेरफेर के लिए उपयोग किए जाने वाले संचालन से अलग होते हैं (उदाहरण के लिए, पते को अपडेट करने के लिए संचालन) निष्पादित करने के लिए अगला निर्देश)।<ref>{{Citation |title=Interpreter |date=2004-04-27 |url=http://dx.doi.org/10.1201/9780203496213.ch34 |work=Software Architecture Design Patterns in Java |publisher=Auerbach Publications |doi=10.1201/9780203496213.ch34 |isbn=978-0-8493-2142-9 |access-date=2022-05-31}}</ref>
अनुक्रम नियंत्रण के लिए संचालन और संरचनाएं प्रोग्राम निर्देशों के निष्पादन (कंप्यूटिंग) को नियंत्रित करने की अनुमति देती हैं। जब कुछ [[सशर्त (कंप्यूटर प्रोग्रामिंग)|सशर्त (कंप्यूटर प्रोग्रामन)]] मिलते हैं, तो प्रोग्राम के सामान्य अनुक्रमिक निष्पादन को बदलना आवश्यक होता है।<ref name=":3" />इसलिए, दुभाषिया (कंप्यूटिंग) डेटा संरचनाओं को नियोजित करता है (जैसे कि निष्पादन के लिए अगले निर्देश की [[पता प्रोग्रामिंग भाषा|पता प्रोग्रामन भाषा]] को संग्रहीत करने के लिए उपयोग किया जाता है) जो डेटा हेरफेर के लिए उपयोग किए जाने वाले संचालन से अलग होते हैं (उदाहरण के लिए, पते को अपडेट करने के लिए संचालन) निष्पादित करने के लिए अगला निर्देश)।<ref>{{Citation |title=Interpreter |date=2004-04-27 |url=http://dx.doi.org/10.1201/9780203496213.ch34 |work=Software Architecture Design Patterns in Java |publisher=Auerbach Publications |doi=10.1201/9780203496213.ch34 |isbn=978-0-8493-2142-9 |access-date=2022-05-31}}</ref>




Line 62: Line 65:


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




== पदानुक्रम ==
== पदानुक्रम ==
{{One source|section|date=January 2023}}
[[File:A_hierarchy_of_abstract_machines.png|thumb|अमूर्त मशीनों का एक पदानुक्रम]]सार मशीन पदानुक्रम प्रायः नियोजित होते हैं, जिसमें प्रत्येक मशीन तुरंत नीचे के स्तर की कार्यक्षमता का उपयोग करती है और तुरंत ऊपर के स्तर को पूरा करने के लिए अपनी अतिरिक्त कार्यक्षमता जोड़ती है। एक [[कंप्यूटर हार्डवेयर]], भौतिक इलेक्ट्रॉनिक उपकरणों के साथ निर्मित, सबसे आधारभूत स्तर पर जोड़ा जा सकता है। इस स्तर से ऊपर, सार माइक्रोकोड पेश किया जा सकता है। [[ऑपरेटिंग सिस्टम|ऑपरेटिंग प्रणाली]] द्वारा प्रदान की गई अमूर्त मशीन, जिसे मशीन कोड में लिखे प्रोग्राम द्वारा कार्यान्वित किया जाता है, तुरंत ऊपर स्थित है (या फर्मवेयर स्तर नहीं होने पर सीधे कंप्यूटर हार्डवेयर के ऊपर)। एक ओर, ऑपरेटिंग प्रणाली भौतिक मशीन पर उपलब्ध नहीं होने वाले उच्च-स्तरीय प्रिमिटिव प्रदान करके भौतिक मशीन की क्षमता का विस्तार करता है (उदाहरण के लिए, प्रिमिटिव जो फाइलों पर कार्य करता है)। [[ सूत्र |सूत्र]] ऑपरेटिंग प्रणाली द्वारा दी गई अमूर्त मशीन द्वारा बनाया गया है, जिस पर एक वर्चुअल मशीन, जैसे कि जावा वर्चुअल मशीन और इसकी बायटेकोड भाषा का उपयोग करके एक उच्च-स्तरीय प्रोग्रामन भाषा लागू की जाती है। उच्च-स्तरीय प्रोग्रामन भाषा | उच्च-स्तरीय भाषा (उदाहरण के लिए, जावा) के लिए अमूर्त मशीन द्वारा दिया गया स्तर सामान्यतः पदानुक्रम का अंतिम स्तर नहीं होता है। इस बिंदु पर, एक या अधिक एप्लिकेशन जो एक साथ अतिरिक्त सेवाएं प्रदान करते हैं, पेश किए जा सकते हैं। एक वेब मशीन स्तर, उदाहरण के लिए, वेब संचार ([[संचार प्रोटोकॉल]] या [[HTML]]) को संभालने के लिए आवश्यक कार्यात्मकताओं को लागू करने के लिए जोड़ा जा सकता है। [[वेब सेवा]] स्तर इसके ऊपर स्थित है, और यह इंटरेक्शन प्रोटोकॉल और सम्मिलित प्रक्रियाओं के व्यवहार दोनों के संदर्भ में वेब सेवाओं को संचार करने के लिए आवश्यक कार्यात्मकता प्रदान करता है। इस स्तर पर, वेब सेवाओं पर आधारित तथाकथित व्यावसायिक प्रक्रियाओं के व्यवहार को निर्दिष्ट करने वाली पूरी तरह से नई भाषाएँ विकसित की जा सकती हैं (उदाहरण [[व्यवसाय प्रक्रिया निष्पादन भाषा]] है)। अंत में, एक विशेष एप्लिकेशन उच्चतम स्तर पर पाया जा सकता है (उदाहरण के लिए, [[ई-कॉमर्स]]) जिसकी बहुत विशिष्ट और सीमित कार्यक्षमता है।<ref name=":3" />
[[File:A_hierarchy_of_abstract_machines.png|thumb|अमूर्त मशीनों का एक पदानुक्रम]]सार मशीन पदानुक्रम अक्सर नियोजित होते हैं, जिसमें प्रत्येक मशीन तुरंत नीचे के स्तर की कार्यक्षमता का उपयोग करती है और तुरंत ऊपर के स्तर को पूरा करने के लिए अपनी अतिरिक्त कार्यक्षमता जोड़ती है। एक [[कंप्यूटर हार्डवेयर]], भौतिक इलेक्ट्रॉनिक उपकरणों के साथ निर्मित, सबसे बुनियादी स्तर पर जोड़ा जा सकता है। इस स्तर से ऊपर, सार माइक्रोकोड पेश किया जा सकता है। [[ऑपरेटिंग सिस्टम]] द्वारा प्रदान की गई अमूर्त मशीन, जिसे मशीन कोड में लिखे प्रोग्राम द्वारा कार्यान्वित किया जाता है, तुरंत ऊपर स्थित है (या फर्मवेयर स्तर नहीं होने पर सीधे कंप्यूटर हार्डवेयर के ऊपर)। एक ओर, ऑपरेटिंग सिस्टम भौतिक मशीन पर उपलब्ध नहीं होने वाले उच्च-स्तरीय प्रिमिटिव प्रदान करके भौतिक मशीन की क्षमता का विस्तार करता है (उदाहरण के लिए, प्रिमिटिव जो फाइलों पर कार्य करता है)। [[ सूत्र ]] ऑपरेटिंग सिस्टम द्वारा दी गई अमूर्त मशीन द्वारा बनाया गया है, जिस पर एक वर्चुअल मशीन, जैसे कि जावा वर्चुअल मशीन और इसकी बायटेकोड भाषा का उपयोग करके एक उच्च-स्तरीय प्रोग्रामिंग भाषा लागू की जाती है। उच्च-स्तरीय प्रोग्रामिंग भाषा | उच्च-स्तरीय भाषा (उदाहरण के लिए, जावा) के लिए अमूर्त मशीन द्वारा दिया गया स्तर आमतौर पर पदानुक्रम का अंतिम स्तर नहीं होता है। इस बिंदु पर, एक या अधिक एप्लिकेशन जो एक साथ अतिरिक्त सेवाएं प्रदान करते हैं, पेश किए जा सकते हैं। एक वेब मशीन स्तर, उदाहरण के लिए, वेब संचार ([[संचार प्रोटोकॉल]] या [[HTML]]) को संभालने के लिए आवश्यक कार्यात्मकताओं को लागू करने के लिए जोड़ा जा सकता है। [[वेब सेवा]] स्तर इसके ऊपर स्थित है, और यह इंटरेक्शन प्रोटोकॉल और शामिल प्रक्रियाओं के व्यवहार दोनों के संदर्भ में वेब सेवाओं को संचार करने के लिए आवश्यक कार्यात्मकता प्रदान करता है। इस स्तर पर, वेब सेवाओं पर आधारित तथाकथित व्यावसायिक प्रक्रियाओं के व्यवहार को निर्दिष्ट करने वाली पूरी तरह से नई भाषाएँ विकसित की जा सकती हैं (उदाहरण [[व्यवसाय प्रक्रिया निष्पादन भाषा]] है)। अंत में, एक विशेष एप्लिकेशन उच्चतम स्तर पर पाया जा सकता है (उदाहरण के लिए, [[ई-कॉमर्स]]) जिसकी बहुत विशिष्ट और सीमित कार्यक्षमता है।<ref name=":3" />




Line 75: Line 77:
* [[खास समय]]
* [[खास समय]]
* फ्लिन का वर्गीकरण
* फ्लिन का वर्गीकरण
* कम्प्यूटेबिलिटी # कम्प्यूटेशन के औपचारिक मॉडल
* कम्प्यूटेबिलिटी # कम्प्यूटेशन के साधारण मॉडल
* [[गणना का मॉडल]]
* [[गणना का मॉडल]]
* [[समानांतर रैंडम-एक्सेस मशीन]], वास्तविक मानक मॉडल।<ref name="Skillicorn2005">{{cite book|author=D. B. Skillicorn|title=समानांतर प्रोग्रामिंग की नींव|url=https://books.google.com/books?id=rQwsL5xsZigC&pg=PA18|year=2005|publisher=Cambridge University Press|isbn=978-0-521-01856-2|page=18}}</ref>
* [[समानांतर रैंडम-एक्सेस मशीन]], वास्तविक मानक मॉडल।<ref name="Skillicorn2005">{{cite book|author=D. B. Skillicorn|title=समानांतर प्रोग्रामिंग की नींव|url=https://books.google.com/books?id=rQwsL5xsZigC&pg=PA18|year=2005|publisher=Cambridge University Press|isbn=978-0-521-01856-2|page=18}}</ref>
* एसईसीडी मशीन
* एसईसीडी मशीन
* [[राज्य अंतरिक्ष]]
* [[राज्य अंतरिक्ष|अवस्था अंतरिक्ष]]


==संदर्भ==
==संदर्भ==

Revision as of 08:51, 10 May 2023

कंप्यूटर विज्ञान में, एक अमूर्त मशीन एक सैद्धांतिक मॉडल है जो एक कंप्यूटर प्रणाली कैसे कार्य करता है, इसका विस्तृत और यथार्थ विश्लेषण करने की अनुमति देता है।[1] यह एक फलन (गणित) के समान है जिसमें यह निवेश प्राप्त करता है और पूर्वनिर्धारित नियमों के आधार पर निर्गम उत्पन्न करता है। सार मशीनें शाब्दिक मशीनों से भिन्न होती हैं, जिसमें उनसे हार्डवेयर विवरण भाषा के उचित और स्वतंत्र रूप से निष्पादन करने की अपेक्षा की जाती है।[2] सार मशीन मशीनें हैं क्योंकि वे प्रोग्रामन भाषा के चरण-दर-चरण निष्पादन की अनुमति देती हैं; वे अमूर्त (कंप्यूटर विज्ञान) हैं क्योंकि वे वास्तविक (हार्डवेयर विवरण भाषा) मशीनों के कई रूपों की उपेक्षा करते हैं।[3] एक विशिष्ट अमूर्त मशीन में निवेश, निर्गम और पूर्व को बाद में बदलने के लिए उपयोग किए जाने वाले स्वीकार्य संचालन के समूह के संदर्भ में एक परिभाषा होती है। उनका उपयोग विशुद्ध रूप से सैद्धांतिक कारणों के साथ-साथ वास्तविक संसार के कंप्यूटर प्रणाली के मॉडल के लिए भी किया जा सकता है।[2] संगणना के सिद्धांत में, सार मशीनों का उपयोग प्रायः संगणना के संबंध में विचार प्रयोगों में या एल्गोरिदम की जटिलता का विश्लेषण करने के लिए किया जाता है।[3] अमूर्त मशीनों का यह उपयोग संगणनात्मक जटिलता सिद्धांत के क्षेत्र के लिए मौलिक है, जैसे कि परिमित-अवस्था मशीन, मीली मशीन, पुशडाउन ऑटोमेटन और ट्यूरिंग मशीन[4]


वर्गीकरण

सार मशीनों को सामान्यतः दो प्रकारों में वर्गीकृत किया जाता है, जो किसी भी समय में किए जाने वाले संचालन की संख्या के आधार पर होते हैं: नियतात्मक एल्गोरिदम और गैर-नियतात्मक सार मशीन।[2] एक नियतात्मक एल्गोरिदम अमूर्त मशीन एक ऐसी प्रणाली है जिसमें एक विशेष प्रारम्भ की स्थिति या स्थिति सदैव एक ही निर्गम देती है। निवेश को निर्गम में कैसे परिवर्तित किया जाता है, इसमें कोई यादृच्छिकता या भिन्नता नहीं है।[5] इसके विपरीत, एक गैर-नियतात्मक सार मशीन विभिन्न निष्पादनों पर एक ही निवेश के लिए विभिन्न निर्गम प्रदान कर सकती है।[2] नियतात्मक एल्गोरिदम के विपरीत, जो पुनरावृत्तियों की संख्या की ध्यान दिए बिना समान निवेश के लिए समान परिणाम देता है, एक गैर-नियतात्मक एल्गोरिदम विभिन्न निर्गम तक पहुंचने के लिए विभिन्न पथ लेता है।[6] गैर-नियतात्मक एल्गोरिदम अनुमानित उत्तर प्राप्त करने में सहायक होते हैं जब एक नियतात्मक दृष्टिकोण का उपयोग करके एक यथार्थ हल प्राप्त करना जटिल या बहुमानित होता है।[7]

ट्यूरिंग मशीन का एक रन।

ट्यूरिंग मशीन, उदाहरण के लिए, कंप्यूटर विज्ञान में कुछ सबसे मौलिक अमूर्त मशीनें हैं।[2] ये मशीनें किसी भी लम्बाई के स्ट्रिंग (कंप्यूटर विज्ञान) (प्रतीकों की एक स्ट्रिंग) पर संचालन करती हैं। उनके निर्देश प्रतीकों को संशोधित करने और उस प्रतीक को बदलने के लिए प्रदान करते हैं जो वर्तमान में मशीन के सूचक पर है। उदाहरण के लिए, एक प्रारंभिक ट्यूरिंग मशीन में एक ही क्रम हो सकता है, प्रतीक को 1 में परिवर्तित करें और फिर दाएं चलें, और यह मशीन मात्र 1s की एक स्ट्रिंग का उत्पादन करेगी।[8] यह आधारभूत ट्यूरिंग मशीन नियतात्मक है; यद्यपि, गैर नियतात्मक ट्यूरिंग मशीन जो एक ही निवेश दिए जाने पर कई क्रियाओं को निष्पादित कर सकती हैं, उन्हें भी बनाया जा सकता है।[2]


कार्यान्वयन

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

  • हार्डवेयर विवरण भाषा: हार्डवेयर में अमूर्त मशीन का प्रत्यक्ष कार्यान्वयन एक भौतिक मशीन को लागू करने के लिए भौतिक उपकरणों जैसे मेमोरी (कंप्यूटिंग), अंकगणित तर्क इकाई और तर्क गेट, बसों आदि का उपयोग करने की स्थिति है, , जिसकी मशीनी भाषा प्रोग्रामन भाषा के साथ मेल खाती है। एक बार निर्माण हो जाने के बाद, ऐसी मशीन को बदलना वस्तुतः जटिल होगा।[9] एक सेंट्रल प्रोसेसिंग यूनिट को अमूर्त मशीन, विशेष रूप से प्रोसेसर (कंप्यूटिंग) के डिजाइन के स्थूल हार्डवेयर प्रस्तुति के रूप में माना जा सकता है।[10]
  • सॉफ्टवेयर: सॉफ्टवेयर के साथ एक सार मशीन को लागू करने के लिए सार मशीन द्वारा आवश्यक डेटा संरचना और एल्गोरिदम को लागू करने के लिए एक अलग प्रोग्रामन भाषा में प्रोग्राम लिखने की आवश्यकता होती है। यह सबसे अधिक नम्यता प्रदान करता है क्योंकि अमूर्त मशीन निर्माणों को लागू करने वाले प्रोग्रामों को सरलता से बदला जा सकता है।[9] एक अमूर्त मशीन जिसे सॉफ्टवेयर अनुकार के रूप में लागू किया गया है, या जिसके लिए एक दुभाषिया (कंप्यूटिंग) स्थित है, एक आभासी मशीन कहलाती है।[11]
  • फर्मवेयर: फर्मवेयर कार्यान्वयन हार्डवेयर और सॉफ्टवेयर कार्यान्वयन के बीच बैठता है। इसमें अमूर्त मशीनों के लिए डेटा संरचना और एल्गोरिदम के माइक्रोकोड अनुकार सम्मिलित हैं।[9] माइक्रोकोड एक कंप्यूटर प्रोग्रामर को विद्युत परिपथ बनाने की आवश्यकता के बिना मशीन मशीन कोड लिखने की अनुमति देता है।[12]


प्रोग्रामन भाषा कार्यान्वयन

एक अमूर्त मशीन, सहज रूप से, एक भौतिक कंप्यूटर के विचार का एक अमूर्त (कंप्यूटर विज्ञान) है।[13] वास्तविक निष्पादन के लिए, एल्गोरिदम को प्रोग्रामन भाषा द्वारा प्रदान की गई संरचनाओं का उपयोग करके उचित रूप से साधारण रूप दिया जाना चाहिए। इसका तात्पर्य है कि निष्पादित किए जाने वाले एल्गोरिदम को प्रोग्रामन भाषा निर्देशों का उपयोग करके व्यक्त किया जाना चाहिए।[3] सिंटेक्स (प्रोग्रामन भाषाएं) निर्देशों के रूप में ज्ञात निर्माणों के एक सीमित समूह का उपयोग करके कंप्यूटर प्रोग्राम के निर्माण को सक्षम बनाता है। अधिकांश अमूर्त मशीनें संग्रहीत प्रोग्राम कंप्यूटर और अवस्था (कंप्यूटर विज्ञान) साझा करती हैं, जिसमें प्रायः स्टैक (सार डेटा प्रकार) और रजिस्टर सम्मिलित होते हैं।[9][14] डिजिटल कंप्यूटरों में, स्टैक मात्र एक मेमोरी इकाई(कंप्यूटिंग) है जिसमें एक एड्रेस रजिस्टर होता है जो मात्र सकारात्मक पूर्णांकों की गणना कर सकता है (एक प्रारंभिक मान लोड होने के बाद)। स्टैक के लिए एड्रेस रजिस्टर को प्रोग्राम गणक के रूप में जाना जाता है क्योंकि इसका मान सदैव स्टैक पर शीर्ष विषय को संदर्भित करता है।[15] प्रोग्राम में निर्देशों की एक श्रृंखला होती है, जिसमें प्रोग्राम गणक निष्पादन किए जाने वाले अगले निर्देश का संकेत देता है। जब निर्देश पूरा हो जाता है, तो प्रोग्राम गणक आगे बढ़ जाता है। अमूर्त मशीन के इस मौलिक नियंत्रण तंत्र को इसके निष्पादन (कंप्यूटिंग) के रूप में भी जाना जाता है।[3] इस प्रकार, प्रोग्रामन भाषा के लिए एक अमूर्त मशीन प्रोग्रामन भाषा में लिखे गए प्रोग्रामों को संग्रहीत करने और चलाने में सक्षम डेटा संरचनाओं और एल्गोरिदम का कोई संग्रह है। यह संकलक के लिए एक मध्यवर्ती भाषा चरण प्रदान करके उच्च-स्तरीय प्रोग्रामन भाषा और निम्न-स्तरीय प्रोग्रामन भाषा के बीच के पुलों पाटता है। एक सार मशीन के निर्देश एक निश्चित स्रोत भाषा या स्रोत भाषाओं के समूह के संचालन को लागू करने के लिए आवश्यक अद्वितीय संचालन के लिए अनुकूलित होते हैं।[9]


अनिवार्य भाषाएँ

1950 के दशक के अंत में, संगणक तंत्र संस्था(एसीएम) और अन्य संबद्ध संगठनों ने यूनिवर्सल कंप्यूटर ओरिएंटेड लैंग्वेज (यूएनसीओएल) के लिए कई प्रस्ताव विकसित किए, जैसे कि कॉनवे की मशीन। यूएनसीओएल अवधारणा ठीक है, परन्तु उत्पन्न कोड के निकृष्ट निष्पादन के कारण इसका व्यापक रूप से उपयोग नहीं किया गया है। कंप्यूटिंग के कई क्षेत्रों में, 1990 के दशक के अंत में जावा वर्चुअल मशीन के विकास के बावजूद इसका निष्पादन एक मुद्दा बना रहेगा। ALGOL (1964), P4-मशीन (1976), UCSD पास्कल | UCSD P-मशीन (1977), और फोर्थ (प्रोग्रामन भाषा) (1970) इस तरह की कुछ सफल अमूर्त मशीनें हैं।[3]


वस्तु-उन्मुख भाषाएँ

ऑब्जेक्ट ओरिएंटेड प्रोग्रामन के लिए सार मशीनें | ऑब्जेक्ट-ओरिएंटेड प्रोग्रामन लैंग्वेज प्रायः स्टैक-आधारित मेमोरी आवंटन | स्टैक-आधारित होती हैं और वस्तु (कंप्यूटर विज्ञान) और विधि (कंप्यूटर प्रोग्रामन) के लिए विशेष एक्सेस निर्देश होते हैं। इन मशीनों में, स्मृति प्रबंधन प्रायः कचरा संग्रह (कंप्यूटर विज्ञान) (मेमोरी रिकवरी सुविधा प्रोग्रामन भाषाओं में निर्मित) द्वारा किया जाता है।[16] स्मॉलटॉक | स्मॉलटॉक-80 (1980), स्वयं (प्रोग्रामन भाषा) (1989), और जावा (प्रोग्रामन भाषा) (1994) इस कार्यान्वयन के उदाहरण हैं।[3]


स्ट्रिंग प्रोसेसिंग लैंग्वेज

एक स्ट्रिंग (कंप्यूटर साइंस) एक कंप्यूटर भाषा है जो संख्याओं के बजाय प्रसंस्करण स्ट्रिंग्स पर केंद्रित है। दशकों से शैल (कंप्यूटिंग) , प्रोग्रामन टूल, सामान्य-उद्देश्य मैक्रो प्रोसेसर और स्क्रिप्टिंग भाषा के रूप में स्ट्रिंग प्रोसेसिंग लैंग्वेज हैं।[17] एक उपयुक्त सार मशीन का उपयोग करने के दो लाभ हैं: निष्पादन में वृद्धि (कंप्यूटिंग) और बढ़ी हुई पोर्टेबिलिटी। SNOBOL और ML/I प्रारंभिक स्ट्रिंग प्रसंस्करण भाषाओं के दो उल्लेखनीय उदाहरण हैं जो मशीन स्वतंत्रता प्राप्त करने के लिए एक अमूर्त मशीन का उपयोग करते हैं।[3]


कार्यात्मक प्रोग्रामन भाषाएं

मशीन घटता है का सचित्र प्रतिनिधित्व।

SECD मशीन (1964) और कार्डेली की कार्यात्मक सार मशीन (1983) सहित कार्यात्मक प्रोग्रामन के लिए प्रारंभिक अमूर्त मशीनें, कठोर मूल्यांकन को परिभाषित करती हैं, जिसे मूल्यांकन रणनीति के रूप में भी जाना जाता है। उत्सुक या कॉल-बाय-वैल्यू मूल्यांकन,[3]जिसमें फलन तर्कों का मूल्यांकन कॉल से पहले और ठीक एक बार किया जाता है। हाल के वर्षों में, अधिकांश शोध आलसी मूल्यांकन | आलसी (या कॉल-बाय-नीड) मूल्यांकन पर किया गया है,[18] जैसे कि जी-मशीन (1984), क्रिवाइन मशीन (1985), और थ्री इंस्ट्रक्शन मशीन (1986), जिसमें फलन तर्कों का मूल्यांकन मात्र आवश्यक होने पर और अधिक से अधिक एक बार किया जाता है। एक कारण यह है कि सख्त मूल्यांकन का प्रभावी कार्यान्वयन अब ठीक तरह से समझा जा चुका है, इसलिए अमूर्त मशीन की आवश्यकता कम हो गई है।[3]


तार्किक भाषाएं

प्रथम-क्रम तर्क | विधेय कलन (प्रथम क्रम तर्क) तर्क प्रोग्रामन की नींव है। सबसे प्रसिद्ध तर्क प्रोग्रामन लैंग्वेज प्रोलॉग है। प्रोलॉग में नियमों को एक समान प्रारूप में लिखा जाता है जिसे सार्वभौमिक रूप से परिमाणित 'हॉर्न क्लॉज' के रूप में जाना जाता है, जिसका अर्थ है गणना प्रारम्भ करना जो उद्देश्य के प्रमाण की खोज करने का प्रयास करता है। द वॉरेन सार मशीन (1983),[3]जो प्रोलॉग प्रोग्राम संकलन में वास्तविक मानक बन गया है, अधिकांश अध्ययनों का फोकस रहा है। यह बैकट्रैकिंग (खोज एल्गोरिदम) का समर्थन करने के लिए डेटा एकीकरण निर्देश और नियंत्रण प्रवाह निर्देश जैसे विशेष उद्देश्य निर्देश प्रदान करता है।[19]


संरचना

एक सामान्य सार मशीन एक मेमोरी सेल (कंप्यूटिंग) और एक इंटरप्रेटर (कंप्यूटिंग) से बनी होती है। मेमोरी का उपयोग डेटा और प्रोग्राम को स्टोर करने के लिए किया जाता है, जबकि दुभाषिया वह घटक है जो प्रोग्राम में सम्मिलित निर्देशों को निष्पादित करता है।[9]

एक अमूर्त मशीन की संरचना

दुभाषिया को उन कार्यों को करना चाहिए जो उस प्रोग्रामन भाषा के लिए अद्वितीय हैं जो वह व्याख्या कर रहा है। यद्यपि, भाषाओं की विविधता को देखते हुए, सभी दुभाषियों द्वारा साझा किए गए संचालन की श्रेणियों और एक निष्पादन (कंप्यूटिंग) की पहचान करना संभव है। दुभाषिया के संचालन और संबंधित डेटा संरचनाओं को निम्नलिखित श्रेणियों में विभाजित किया गया है:[9][20]

  1. आदिम डेटा प्रकार के प्रसंस्करण के लिए संचालन:
  2. निष्पादन (कंप्यूटिंग) के अनुक्रम को नियंत्रित करने के लिए संचालन और डेटा संरचनाएं;
  3. डेटा संचार को नियंत्रित करने के लिए संचालन और डेटा संरचना;
  4. मेमोरी प्रबंधन के लिए संचालन और डेटा संरचनाएं।

प्रारंभिक डेटा प्रसंस्करण

एक सार मशीन में आदिम डेटा प्रकारों जैसे कि तार और पूर्णांक में हेरफेर करने के लिए संचालन होना चाहिए।[9]उदाहरण के लिए, पूर्णांकों को लगभग सार्वभौमिक रूप से भौतिक अमूर्त मशीनों और कई प्रोग्रामन भाषाओं द्वारा उपयोग की जाने वाली सार मशीनों दोनों के लिए एक आधारभूत डेटा प्रकार माना जाता है। मशीन अंकगणित आवश्यक करती है, जैसे जोड़ और गुणा, एक ही समय के भीतर।[21]


अनुक्रम नियंत्रण

अनुक्रम नियंत्रण के लिए संचालन और संरचनाएं प्रोग्राम निर्देशों के निष्पादन (कंप्यूटिंग) को नियंत्रित करने की अनुमति देती हैं। जब कुछ सशर्त (कंप्यूटर प्रोग्रामन) मिलते हैं, तो प्रोग्राम के सामान्य अनुक्रमिक निष्पादन को बदलना आवश्यक होता है।[9]इसलिए, दुभाषिया (कंप्यूटिंग) डेटा संरचनाओं को नियोजित करता है (जैसे कि निष्पादन के लिए अगले निर्देश की पता प्रोग्रामन भाषा को संग्रहीत करने के लिए उपयोग किया जाता है) जो डेटा हेरफेर के लिए उपयोग किए जाने वाले संचालन से अलग होते हैं (उदाहरण के लिए, पते को अपडेट करने के लिए संचालन) निष्पादित करने के लिए अगला निर्देश)।[22]


डेटा ट्रांसफर को नियंत्रित करना

डेटा ट्रांसफर ऑपरेशंस का उपयोग यह नियंत्रित करने के लिए किया जाता है कि मेमोरी सेल (कंप्यूटिंग) से दुभाषिया और इसके विपरीत कैसे ऑपरेंड और डेटा ले जाया जाता है। ये ऑपरेशन स्टोर-प्रोग्राम कंप्यूटर और स्टोर से ऑपरेंड के पुनर्प्राप्ति क्रम से संबंधित हैं।[9]


स्मृति प्रबंधन

मेमोरी प्रबंधन डेटा और एप्लिकेशन आवंटित करने के लिए मेमोरी में किए गए संचालन से संबंधित है। अमूर्त मशीन में, डेटा और प्रोग्राम को अनिश्चित काल तक रखा जा सकता है, या प्रोग्रामन भाषाओं की स्थिति में, मेमोरी को अधिक जटिल तंत्र का उपयोग करके आबंटित या हटाया जा सकता है।[9]


पदानुक्रम

अमूर्त मशीनों का एक पदानुक्रम

सार मशीन पदानुक्रम प्रायः नियोजित होते हैं, जिसमें प्रत्येक मशीन तुरंत नीचे के स्तर की कार्यक्षमता का उपयोग करती है और तुरंत ऊपर के स्तर को पूरा करने के लिए अपनी अतिरिक्त कार्यक्षमता जोड़ती है। एक कंप्यूटर हार्डवेयर, भौतिक इलेक्ट्रॉनिक उपकरणों के साथ निर्मित, सबसे आधारभूत स्तर पर जोड़ा जा सकता है। इस स्तर से ऊपर, सार माइक्रोकोड पेश किया जा सकता है। ऑपरेटिंग प्रणाली द्वारा प्रदान की गई अमूर्त मशीन, जिसे मशीन कोड में लिखे प्रोग्राम द्वारा कार्यान्वित किया जाता है, तुरंत ऊपर स्थित है (या फर्मवेयर स्तर नहीं होने पर सीधे कंप्यूटर हार्डवेयर के ऊपर)। एक ओर, ऑपरेटिंग प्रणाली भौतिक मशीन पर उपलब्ध नहीं होने वाले उच्च-स्तरीय प्रिमिटिव प्रदान करके भौतिक मशीन की क्षमता का विस्तार करता है (उदाहरण के लिए, प्रिमिटिव जो फाइलों पर कार्य करता है)। सूत्र ऑपरेटिंग प्रणाली द्वारा दी गई अमूर्त मशीन द्वारा बनाया गया है, जिस पर एक वर्चुअल मशीन, जैसे कि जावा वर्चुअल मशीन और इसकी बायटेकोड भाषा का उपयोग करके एक उच्च-स्तरीय प्रोग्रामन भाषा लागू की जाती है। उच्च-स्तरीय प्रोग्रामन भाषा | उच्च-स्तरीय भाषा (उदाहरण के लिए, जावा) के लिए अमूर्त मशीन द्वारा दिया गया स्तर सामान्यतः पदानुक्रम का अंतिम स्तर नहीं होता है। इस बिंदु पर, एक या अधिक एप्लिकेशन जो एक साथ अतिरिक्त सेवाएं प्रदान करते हैं, पेश किए जा सकते हैं। एक वेब मशीन स्तर, उदाहरण के लिए, वेब संचार (संचार प्रोटोकॉल या HTML) को संभालने के लिए आवश्यक कार्यात्मकताओं को लागू करने के लिए जोड़ा जा सकता है। वेब सेवा स्तर इसके ऊपर स्थित है, और यह इंटरेक्शन प्रोटोकॉल और सम्मिलित प्रक्रियाओं के व्यवहार दोनों के संदर्भ में वेब सेवाओं को संचार करने के लिए आवश्यक कार्यात्मकता प्रदान करता है। इस स्तर पर, वेब सेवाओं पर आधारित तथाकथित व्यावसायिक प्रक्रियाओं के व्यवहार को निर्दिष्ट करने वाली पूरी तरह से नई भाषाएँ विकसित की जा सकती हैं (उदाहरण व्यवसाय प्रक्रिया निष्पादन भाषा है)। अंत में, एक विशेष एप्लिकेशन उच्चतम स्तर पर पाया जा सकता है (उदाहरण के लिए, ई-कॉमर्स) जिसकी बहुत विशिष्ट और सीमित कार्यक्षमता है।[9]


यह भी देखें

संदर्भ

  1. Weisstein, Eric W. "सार मशीन". mathworld.wolfram.com (in English). Retrieved 2022-05-16.
  2. 2.0 2.1 2.2 2.3 2.4 2.5 "What is an Abstract Machine?". EasyTechJunkie (in English). Retrieved 2022-05-16.
  3. 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 Diehl, Stephan; Hartel, Pieter; Sestoft, Peter (May 2000). "प्रोग्रामिंग भाषा कार्यान्वयन के लिए सार मशीनें". Future Generation Computer Systems (in English). 16 (7): 739–751. doi:10.1016/S0167-739X(99)00088-6.
  4. "9.1.1: Finite-State Machine Overview". Engineering LibreTexts (in English). 2021-04-29. Retrieved 2022-05-31.
  5. "What is Deterministic System? - Definition from Techopedia". Techopedia.com (in English). Retrieved 2022-05-30.
  6. Stearns, Richard E. (January 2003). "नियतात्मक बनाम गैर-नियतात्मक समय और निचली सीमा की समस्याएं". Journal of the ACM. 50 (1): 91–95. doi:10.1145/602382.602409. ISSN 0004-5411. S2CID 2194820.
  7. Armoni, Michal; Gal-Ezer, Judith (December 2007). "Non-determinism: An abstract concept in computer science studies". Computer Science Education. 17 (4): 243–262. Bibcode:2007CSEd...17..243A. doi:10.1080/08993400701442885. ISSN 0899-3408. S2CID 41928460.
  8. Gill, John (December 1977). "संभाव्य ट्यूरिंग मशीनों की कम्प्यूटेशनल जटिलता". SIAM Journal on Computing (in English). 6 (4): 675–695. doi:10.1137/0206049. ISSN 0097-5397.
  9. 9.00 9.01 9.02 9.03 9.04 9.05 9.06 9.07 9.08 9.09 9.10 9.11 9.12 Gabbrielli, Maurizio; Martini, Simone (2010), "Abstract Machines", Programming Languages: Principles and Paradigms, London: Springer London, pp. 1–25, doi:10.1007/978-1-84882-914-5_1, ISBN 978-1-84882-913-8, retrieved 2022-05-16
  10. Bair, Ray; Chien, Andrew; Cook, Jeanine; Donofrio, Dave; Grider, Gary; Kuehn, Jeff; Moore, Shirley; Shalf, John; Vetter, Jeff (2018-02-01). "Hardware Evaluation: Abstract Machine Models and Proxy Architectures for Exascale Computing". doi:10.2172/1733300. OSTI 1733300. {{cite journal}}: Cite journal requires |journal= (help)
  11. "FOLDOC से अमूर्त मशीन". foldoc.org. Retrieved 2021-08-07.
  12. Gee, J.; Melvin, S. W.; Patt, Y. N. (1986). "The implementation of Prolog via VAX 8600 microcode". Proceedings of the 19th Annual Workshop on Microprogramming - MICRO 19. New York, New York, USA: ACM Press: 68–74. doi:10.1145/19551.19538. ISBN 081860736X. S2CID 3846072.
  13. "अमूर्त मशीन". Oxford Reference (in English). Retrieved 2022-05-16.
  14. García-Martín, Julio Manuel; Sutil-Martin, Miguel (1999-08-15). "सार मशीनों को डिजाइन करने के लिए एक पैटर्न". doi:10.13140/RG.2.1.3680.5203. {{cite journal}}: Cite journal requires |journal= (help)
  15. upscfever.com (2017-01-25). "कंप्यूटर संगठन और वास्तुकला (स्टैक संगठन) - यूपीएससी फीवर". upscfever.com (in English). Retrieved 2022-05-31.
  16. "What is Object-Oriented Programming (OOP)?". SearchAppArchitecture (in English). Retrieved 2022-05-31.
  17. "Design considerations for string processing languages", A Study in String Processing Languages, Lecture Notes in Computer Science, Berlin, Heidelberg: Springer Berlin Heidelberg, vol. 205, pp. 17–37, 1985, doi:10.1007/3-540-16041-8_2, ISBN 978-3-540-16041-0, retrieved 2022-05-31
  18. Hackett, Jennifer; Hutton, Graham (2019-07-26). "कॉल-बाय-नीड क्लैरवॉयंट कॉल-बाय-वैल्यू है". Proceedings of the ACM on Programming Languages. 3 (ICFP): 1–23. doi:10.1145/3341718. ISSN 2475-1421. S2CID 195782686.
  19. "Prolog | An Introduction". GeeksforGeeks (in English). 2018-05-26. Retrieved 2022-05-31.
  20. Accattoli, Beniamino; Barenbaum, Pablo; Mazza, Damiano (2014-11-26). "आसवन सार मशीनें". ACM SIGPLAN Notices (in English). 49 (9): 363–376. doi:10.1145/2692915.2628154. ISSN 0362-1340. S2CID 234775413.
  21. baeldung (2018-01-11). "Introduction to Java Primitives | Baeldung". www.baeldung.com (in English). Retrieved 2022-05-31.
  22. "Interpreter", Software Architecture Design Patterns in Java, Auerbach Publications, 2004-04-27, doi:10.1201/9780203496213.ch34, ISBN 978-0-8493-2142-9, retrieved 2022-05-31
  23. D. B. Skillicorn (2005). समानांतर प्रोग्रामिंग की नींव. Cambridge University Press. p. 18. ISBN 978-0-521-01856-2.


अग्रिम पठन

  • Peter van Emde Boas, Machine Models and Simulations pp. 3–66, appearing in:
Jan van Leeuwen, ed. "Handbook of Theoretical Computer Science. Volume A: Algorithms and Complexity, The MIT PRESS/Elsevier, 1990. ISBN 0-444-88071-2 (volume A). QA 76.H279 1990