सार मशीन: Difference between revisions
(Created page with "{{Short description|Theoretical computer used for defining a model of computation}} {{Distinguish|Virtual machine}} कंप्यूटर विज्ञान मे...") |
No edit summary |
||
| (5 intermediate revisions by 3 users not shown) | |||
| 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| | {{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 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|ट्यूरिंग मशीन | [[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" /> एक अमूर्त मशीन जिसे सॉफ्टवेयर अनुकार के रूप में लागू किया गया है, या जिसके लिए [[ दुभाषिया (कंप्यूटिंग) |दुभाषिया (संगणना]]) स्थित है, [[ आभासी मशीन |आभासी मशीन]] कहलाती है।<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>{{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 के दशक के अंत में, [[संगणक तंत्र संस्था]] | 1950 के दशक के अंत में, [[संगणक तंत्र संस्था]] (एसीएम) और अन्य संबद्ध संगठनों ने [[UNCOL|सार्वभौमिक कंप्यूटर उन्मुख भाषा]] (यूएनसीओएल) के लिए कई प्रस्ताव विकसित किए, जैसे कि कॉनवे की मशीन। यूएनसीओएल अवधारणा ठीक है, परन्तु उत्पन्न [[कोड]] के निकृष्ट निष्पादन के कारण इसका व्यापक रूप से उपयोग नहीं किया गया है। संगणना के कई क्षेत्रों में, 1990 के दशक के अंत में [[जावा वर्चुअल मशीन|जावा आभाषी मशीन]] के विकास के अतिरिक्त इसका निष्पादन निर्गम बना रहेगा। [[ALGOL|अल्गोल]] (1964), पी4-मशीन (1976), यूसीएसडी पी-मशीन (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>{{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|स्नोबोल]] और एमएल/आई प्रारंभिक स्ट्रिंग प्रसंस्करण भाषाओं के दो उल्लेखनीय उदाहरण हैं जो मशीन स्वतंत्रता प्राप्त करने के लिए एक अमूर्त मशीन का उपयोग करते हैं।<ref name=":1" /> | ||
=== कार्यात्मक | === कार्यात्मक प्रोग्रामन भाषाएं === | ||
[[File:Machine de Krivine.jpg|thumb|[[ मशीन घटता है ]] का सचित्र प्रतिनिधित्व।]] | [[File:Machine de Krivine.jpg|thumb|[[ मशीन घटता है | क्रिवाइन मशीन]] का सचित्र प्रतिनिधित्व।]]एसईसीडी मशीन (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> | |||
== संरचना == | == संरचना == | ||
सामान्य सार मशीन एक मेमोरी सेल (संगणना) और एक दुभाषिया (संगणना) से बनी होती है। मेमोरी का उपयोग डेटा और प्रोग्राम को संग्रहीत करने के लिए किया जाता है, जबकि दुभाषिया वह घटक है जो प्रोग्राम में सम्मिलित निर्देशों को निष्पादित करते है।<ref name=":3" /> | |||
[[File:The_structure_of_an_abstract_machine.png|thumb|एक अमूर्त मशीन की संरचना]]दुभाषिया को उन कार्यों को करना चाहिए जो उस | [[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> | ||
# [[आदिम डेटा प्रकार]] के प्रसंस्करण के लिए संचालन: | # [[आदिम डेटा प्रकार]] के प्रसंस्करण के लिए संचालन: | ||
# निष्पादन ( | # निष्पादन (संगणना) के अनुक्रम को नियंत्रित करने के लिए संचालन और डेटा संरचनाएं; | ||
# [[डेटा संचार]] को नियंत्रित करने के लिए संचालन और डेटा संरचना; | # [[डेटा संचार]] को नियंत्रित करने के लिए संचालन और डेटा संरचना; | ||
# मेमोरी प्रबंधन के लिए संचालन और डेटा संरचनाएं। | # मेमोरी प्रबंधन के लिए संचालन और डेटा संरचनाएं। | ||
=== प्रारंभिक डेटा प्रसंस्करण === | === प्रारंभिक डेटा प्रसंस्करण === | ||
सार मशीन में आदिम डेटा प्रकारों जैसे कि तार और पूर्णांक में क्रमभंग करने के लिए संचालन होना चाहिए।<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 name=":3" /> | ||
== पदानुक्रम == | == पदानुक्रम == | ||
[[File:A_hierarchy_of_abstract_machines.png|thumb|अमूर्त मशीनों का एक पदानुक्रम]]सार मशीन पदानुक्रम प्रायः नियोजित होते हैं, जिसमें प्रत्येक मशीन तुरंत नीचे के स्तर की कार्यक्षमता का उपयोग करती है और तुरंत ऊपर के स्तर को पूरा करने के लिए अपनी अतिरिक्त कार्यक्षमता जोड़ती है। [[कंप्यूटर हार्डवेयर]], भौतिक इलेक्ट्रॉनिक उपकरणों के साथ निर्मित, सबसे आधारभूत स्तर पर जोड़ा जा सकता है। इस स्तर से ऊपर, सार माइक्रोकोड प्रस्तुत किया जा सकता है। [[ऑपरेटिंग सिस्टम|ऑपरेटिंग प्रणाली]] द्वारा प्रदान की गई अमूर्त मशीन, जिसे मशीन कोड में लिखे प्रोग्राम द्वारा कार्यान्वित किया जाता है, तुरंत ऊपर स्थित है (या फर्मवेयर स्तर नहीं होने पर सीधे कंप्यूटर हार्डवेयर के ऊपर)। एक ओर, ऑपरेटिंग प्रणाली भौतिक मशीन पर उपलब्ध नहीं होने वाले उच्च-स्तरीय आदिम प्रदान करके भौतिक मशीन की क्षमता का विस्तार करती है (उदाहरण के लिए, आदिम जो फाइलों पर कार्य करते है)। [[ सूत्र |संचालक प्रोगाम]] ऑपरेटिंग प्रणाली द्वारा दी गई अमूर्त मशीन द्वारा बनाया गया है, जिस पर आभाषी मशीन, जैसे कि जावा आभाषी मशीन और इसकी बाईटकोड भाषा का उपयोग करके उच्च-स्तरीय प्रोग्रामन भाषा लागू की जाती है। उच्च-स्तरीय प्रोग्रामन भाषा (उदाहरण के लिए, जावा) के लिए अमूर्त मशीन द्वारा दिया गया स्तर सामान्यतः पदानुक्रम का अंतिम स्तर नहीं होता है। इस बिंदु पर, एक या अधिक एप्लिकेशन जो एक साथ अतिरिक्त सेवाएं प्रदान करते हैं, प्रस्तुत किए जा सकते हैं। वेब मशीन स्तर, उदाहरण के लिए, वेब संचार ([[संचार प्रोटोकॉल]] या [[HTML|एचटीएमएल]]) को संभालने के लिए आवश्यक कार्यात्मकताओं को लागू करने के लिए जोड़ा जा सकता है। [[वेब सेवा]] स्तर इसके ऊपर स्थित है, और यह अंतःक्रिया प्रोटोकॉल और सम्मिलित प्रक्रियाओं के व्यवहार दोनों के संदर्भ में वेब सेवाओं को संचार करने के लिए आवश्यक कार्यात्मकता प्रदान करते है। इस स्तर पर, वेब सेवाओं पर आधारित तथाकथित व्यावसायिक प्रक्रियाओं के व्यवहार को निर्दिष्ट करने वाली पूर्ण रूप से नवीन भाषाएँ विकसित की जा सकती हैं (उदाहरण [[व्यवसाय प्रक्रिया निष्पादन भाषा]] है)। अंत में, विशेष एप्लिकेशन उच्चतम स्तर पर पाया जा सकता है (उदाहरण के लिए, [[ई-कॉमर्स]]) जिसकी बहुत विशिष्ट और सीमित कार्यक्षमता है।<ref name=":3" /> | |||
[[File:A_hierarchy_of_abstract_machines.png|thumb|अमूर्त मशीनों का एक पदानुक्रम]]सार मशीन पदानुक्रम | |||
== यह भी देखें == | == यह भी देखें == | ||
* [[सार व्याख्या]] | * [[सार व्याख्या]] | ||
* [[थोक तुल्यकालिक समानांतर]] | * [[थोक तुल्यकालिक समानांतर|बल्क तुल्यकालिक समानांतर]] | ||
* [[खास समय]] | * [[खास समय|विवेचित समय]] | ||
* फ्लिन का वर्गीकरण | * फ्लिन का वर्गीकरण | ||
* | * कम्प्यूटेशन के साधारण मॉडल | ||
* [[गणना का मॉडल]] | * [[गणना का मॉडल]] | ||
* [[समानांतर रैंडम-एक्सेस मशीन]], वास्तविक मानक मॉडल।<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> | ||
* एसईसीडी मशीन | * एसईसीडी मशीन | ||
* [[राज्य अंतरिक्ष]] | * [[राज्य अंतरिक्ष|अवस्था समष्टि]] | ||
==संदर्भ== | ==संदर्भ== | ||
| Line 87: | Line 89: | ||
==अग्रिम पठन== | ==अग्रिम पठन== | ||
*Peter van Emde Boas, ''Machine Models and Simulations'' pp. 3–66, appearing in: | *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'' | ::[[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'' | ||
* Stephan Diehl, Pieter Hartel and Peter Sestoft, [http://www.inf.ed.ac.uk/teaching/courses/lsi/diehl_abstract_machines.pdf ''Abstract Machines for Programming Language Implementation''], Future Generation Computer Systems, Vol. 16(7), Elsevier, 2000. | * Stephan Diehl, Pieter Hartel and Peter Sestoft, [http://www.inf.ed.ac.uk/teaching/courses/lsi/diehl_abstract_machines.pdf ''Abstract Machines for Programming Language Implementation''], Future Generation Computer Systems, Vol. 16 (7), Elsevier, 2000. | ||
* {{cite book|author=Werner Kluge|title=Abstract Computing Machines: A Lambda Calculus Perspective|year=2006|publisher=Springer|isbn=978-3-540-27359-2}} | * {{cite book|author=Werner Kluge|title=Abstract Computing Machines: A Lambda Calculus Perspective|year=2006|publisher=Springer|isbn=978-3-540-27359-2}} | ||
{{DEFAULTSORT:Abstract Machine}} | |||
{{DEFAULTSORT:Abstract Machine}} | |||
[[Category: | [[Category:CS1 English-language sources (en)]] | ||
[[Category:Created On 07/05/2023]] | [[Category:CS1 errors]] | ||
[[Category:Created On 07/05/2023|Abstract Machine]] | |||
[[Category:Lua-based templates|Abstract Machine]] | |||
[[Category:Machine Translated Page|Abstract Machine]] | |||
[[Category:Pages with script errors|Abstract Machine]] | |||
[[Category:Templates Vigyan Ready|Abstract Machine]] | |||
[[Category:Templates that add a tracking category|Abstract Machine]] | |||
[[Category:Templates that generate short descriptions|Abstract Machine]] | |||
[[Category:Templates using TemplateData|Abstract Machine]] | |||
[[Category:ऑटोमेटा (गणना)|Abstract Machine]] | |||
[[Category:गणना के मॉडल|Abstract Machine]] | |||
[[Category:सार मशीनें| सार मशीनें ]] | |||
Latest revision as of 09:31, 17 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 के दशक के अंत में जावा आभाषी मशीन के विकास के अतिरिक्त इसका निष्पादन निर्गम बना रहेगा। अल्गोल (1964), पी4-मशीन (1976), यूसीएसडी पी-मशीन (1977), और फोर्थ (प्रोग्रामन भाषा) (1970) इस प्रकार की कुछ सफल अमूर्त मशीनें हैं।[3]
वस्तु-उन्मुख भाषाएँ
वस्तु-उन्मुख प्रोग्रामन भाषा के लिए सार मशीनें प्रायः स्टैक-आधारित मेमोरी आवंटन होती हैं और वस्तु (कंप्यूटर विज्ञान) और विधि (कंप्यूटर प्रोग्रामन) के लिए विशेष प्रवेश निर्देश होते हैं। इन मशीनों में, मेमोरी प्रबंधन प्रायः अपशिष्ट संग्रह (कंप्यूटर विज्ञान) (मेमोरी उगाही सुविधा प्रोग्रामन भाषाओं में निर्मित) द्वारा किया जाता है।[16] स्मॉलटॉक-80 (1980), सेल्फ (प्रोग्रामन भाषा) (1989), और जावा (प्रोग्रामन भाषा) (1994) इस कार्यान्वयन के उदाहरण हैं।[3]
स्ट्रिंग प्रसंस्करण भाषाएँ
एक स्ट्रिंग (कंप्यूटर विज्ञान) एक कंप्यूटर भाषा है जो संख्याओं के अतिरिक्त प्रसंस्करण स्ट्रिंग्स पर केंद्रित है। दशकों से शैल (संगणना), प्रोग्रामन टूल, सामान्य-उद्देश्य मैक्रो प्रोसेसर और स्क्रिप्टिंग भाषा के रूप में स्ट्रिंग प्रसंस्करण भाषा हैं।[17] उपयुक्त सार मशीन का उपयोग करने के दो लाभ हैं: निष्पादन की गति में वृद्धि और पोर्टेबिलिटी में वृद्धि। स्नोबोल और एमएल/आई प्रारंभिक स्ट्रिंग प्रसंस्करण भाषाओं के दो उल्लेखनीय उदाहरण हैं जो मशीन स्वतंत्रता प्राप्त करने के लिए एक अमूर्त मशीन का उपयोग करते हैं।[3]
कार्यात्मक प्रोग्रामन भाषाएं
एसईसीडी मशीन (1964) और कार्डेली की कार्यात्मक सार मशीन (1983) सहित कार्यात्मक प्रोग्रामन के लिए प्रारंभिक अमूर्त मशीनें, जटिल मूल्यांकन को परिभाषित करती हैं, जिसे मूल्यांकन कार्यनीति के रूप में भी जाना जाता है,[3] जिसमें फलन तर्कों का मूल्यांकन कॉल से पहले और ठीक एक बार किया जाता है। वर्तमान के वर्षों में, अधिकांश शोध अनुयोगी मूल्यांकन (या कॉल-बाय-नीड) मूल्यांकन पर किया गया है,[18] जैसे कि जी-मशीन (1984), क्रिवाइन मशीन (1985), और तीन निर्देश मशीन (1986), जिसमें फलन तर्कों का मूल्यांकन मात्र आवश्यक होने पर और अधिक से अधिक एक बार किया जाता है। एक कारण यह है कि यथार्थ मूल्यांकन का प्रभावी कार्यान्वयन अब ठीक रूप से समझा जा चुका है, इसलिए अमूर्त मशीन की आवश्यकता कम हो गई है।[3]
तार्किक भाषाएं
विधेय कलन (प्रथम क्रम तर्क) तर्क प्रोग्रामन की नींव है। सबसे प्रसिद्ध तर्क प्रोग्रामन भाषा प्रोलॉग है। प्रोलॉग में नियमों को समान प्रारूप में लिखा जाता है जिसे सार्वभौमिक रूप से परिमाणित 'हॉर्न क्लॉज' के रूप में जाना जाता है, जिसका अर्थ है गणना प्रारम्भ करना जो उद्देश्य के प्रमाण की खोज करने का प्रयास करते है। द वॉरेन सार मशीन (1983),[3] जो प्रोलॉग प्रोग्राम संकलन में वास्तविक मानक बन गया है, अधिकांश अध्ययनों का केंद्र रहा है। यह पश्च अनुमार्गी (खोज एल्गोरिदम) का समर्थन करने के लिए डेटा एकीकरण निर्देश और नियंत्रण प्रवाह निर्देश जैसे विशेष उद्देश्य निर्देश प्रदान करते है।[19]
संरचना
सामान्य सार मशीन एक मेमोरी सेल (संगणना) और एक दुभाषिया (संगणना) से बनी होती है। मेमोरी का उपयोग डेटा और प्रोग्राम को संग्रहीत करने के लिए किया जाता है, जबकि दुभाषिया वह घटक है जो प्रोग्राम में सम्मिलित निर्देशों को निष्पादित करते है।[9]
दुभाषिया को उन कार्यों को करना चाहिए जो उस प्रोग्रामन भाषा के लिए अद्वितीय हैं जो वह व्याख्या कर रहा है। यद्यपि, भाषाओं की विविधता को देखते हुए, सभी दुभाषियों द्वारा साझा किए गए संचालन की श्रेणियों और एक निष्पादन (संगणना) की पहचान करना संभव है। दुभाषिया के संचालन और संबंधित डेटा संरचनाओं को निम्नलिखित श्रेणियों में विभाजित किया गया है:[9][20]
- आदिम डेटा प्रकार के प्रसंस्करण के लिए संचालन:
- निष्पादन (संगणना) के अनुक्रम को नियंत्रित करने के लिए संचालन और डेटा संरचनाएं;
- डेटा संचार को नियंत्रित करने के लिए संचालन और डेटा संरचना;
- मेमोरी प्रबंधन के लिए संचालन और डेटा संरचनाएं।
प्रारंभिक डेटा प्रसंस्करण
सार मशीन में आदिम डेटा प्रकारों जैसे कि तार और पूर्णांक में क्रमभंग करने के लिए संचालन होना चाहिए।[9] उदाहरण के लिए, पूर्णांकों को लगभग सार्वभौमिक रूप से भौतिक अमूर्त मशीनों और कई प्रोग्रामन भाषाओं द्वारा उपयोग की जाने वाली सार मशीनों दोनों के लिए आधारभूत डेटा प्रकार माना जाता है। मशीन अंकगणित संचालन करती है, जैसे कि एक ही समय के भीतर, जोड़ और गुणा।[21]
अनुक्रम नियंत्रण
अनुक्रम नियंत्रण के लिए संचालन और संरचनाएं प्रोग्राम निर्देशों के निष्पादन (संगणना) को नियंत्रित करने की अनुमति देती हैं। जब कुछ सशर्त (कंप्यूटर प्रोग्रामन) मिलते हैं, तो प्रोग्राम के सामान्य अनुक्रमिक निष्पादन को बदलना आवश्यक होता है।[9] इसलिए, दुभाषिया (संगणना) डेटा संरचनाओं को नियोजित करते है (जैसे कि निष्पादन के लिए अगले निर्देश की एड्रेस प्रोग्रामन भाषा को संग्रहीत करने के लिए उपयोग किया जाता है) जो डेटा क्रमभंग के लिए उपयोग किए जाने वाले संचालन से अलग होते हैं (उदाहरण के लिए, संचालन अगले निर्देश के एड्रेसक ो अद्यतन करने के लिए निष्पादित करने के लिए)।[22]
डेटा स्थनान्तरण को नियंत्रित करना
डेटा स्थनान्तरण संचालन का उपयोग यह नियंत्रित करने के लिए किया जाता है कि मेमोरी सेल (संगणना) से दुभाषिया और इसके विपरीत कैसे संकार्य और डेटा ले जाया जाता है। ये संचालन संग्रहीत-प्रोग्राम कंप्यूटर और संग्रहीत से संकार्य के पुनर्प्राप्ति क्रम से संबंधित हैं।[9]
मेमोरी प्रबंधन
मेमोरी प्रबंधन डेटा और एप्लिकेशन आवंटित करने के लिए मेमोरी में किए गए संचालन से संबंधित है। अमूर्त मशीन में, डेटा और प्रोग्राम को अनिश्चित काल तक रखा जा सकता है, या प्रोग्रामन भाषाओं की स्थिति में, मेमोरी को अधिक जटिल तंत्र का उपयोग करके आबंटित या हटाया जा सकता है।[9]
पदानुक्रम
सार मशीन पदानुक्रम प्रायः नियोजित होते हैं, जिसमें प्रत्येक मशीन तुरंत नीचे के स्तर की कार्यक्षमता का उपयोग करती है और तुरंत ऊपर के स्तर को पूरा करने के लिए अपनी अतिरिक्त कार्यक्षमता जोड़ती है। कंप्यूटर हार्डवेयर, भौतिक इलेक्ट्रॉनिक उपकरणों के साथ निर्मित, सबसे आधारभूत स्तर पर जोड़ा जा सकता है। इस स्तर से ऊपर, सार माइक्रोकोड प्रस्तुत किया जा सकता है। ऑपरेटिंग प्रणाली द्वारा प्रदान की गई अमूर्त मशीन, जिसे मशीन कोड में लिखे प्रोग्राम द्वारा कार्यान्वित किया जाता है, तुरंत ऊपर स्थित है (या फर्मवेयर स्तर नहीं होने पर सीधे कंप्यूटर हार्डवेयर के ऊपर)। एक ओर, ऑपरेटिंग प्रणाली भौतिक मशीन पर उपलब्ध नहीं होने वाले उच्च-स्तरीय आदिम प्रदान करके भौतिक मशीन की क्षमता का विस्तार करती है (उदाहरण के लिए, आदिम जो फाइलों पर कार्य करते है)। संचालक प्रोगाम ऑपरेटिंग प्रणाली द्वारा दी गई अमूर्त मशीन द्वारा बनाया गया है, जिस पर आभाषी मशीन, जैसे कि जावा आभाषी मशीन और इसकी बाईटकोड भाषा का उपयोग करके उच्च-स्तरीय प्रोग्रामन भाषा लागू की जाती है। उच्च-स्तरीय प्रोग्रामन भाषा (उदाहरण के लिए, जावा) के लिए अमूर्त मशीन द्वारा दिया गया स्तर सामान्यतः पदानुक्रम का अंतिम स्तर नहीं होता है। इस बिंदु पर, एक या अधिक एप्लिकेशन जो एक साथ अतिरिक्त सेवाएं प्रदान करते हैं, प्रस्तुत किए जा सकते हैं। वेब मशीन स्तर, उदाहरण के लिए, वेब संचार (संचार प्रोटोकॉल या एचटीएमएल) को संभालने के लिए आवश्यक कार्यात्मकताओं को लागू करने के लिए जोड़ा जा सकता है। वेब सेवा स्तर इसके ऊपर स्थित है, और यह अंतःक्रिया प्रोटोकॉल और सम्मिलित प्रक्रियाओं के व्यवहार दोनों के संदर्भ में वेब सेवाओं को संचार करने के लिए आवश्यक कार्यात्मकता प्रदान करते है। इस स्तर पर, वेब सेवाओं पर आधारित तथाकथित व्यावसायिक प्रक्रियाओं के व्यवहार को निर्दिष्ट करने वाली पूर्ण रूप से नवीन भाषाएँ विकसित की जा सकती हैं (उदाहरण व्यवसाय प्रक्रिया निष्पादन भाषा है)। अंत में, विशेष एप्लिकेशन उच्चतम स्तर पर पाया जा सकता है (उदाहरण के लिए, ई-कॉमर्स) जिसकी बहुत विशिष्ट और सीमित कार्यक्षमता है।[9]
यह भी देखें
- सार व्याख्या
- बल्क तुल्यकालिक समानांतर
- विवेचित समय
- फ्लिन का वर्गीकरण
- कम्प्यूटेशन के साधारण मॉडल
- गणना का मॉडल
- समानांतर रैंडम-एक्सेस मशीन, वास्तविक मानक मॉडल।[23]
- एसईसीडी मशीन
- अवस्था समष्टि
संदर्भ
- ↑ Weisstein, Eric W. "सार मशीन". mathworld.wolfram.com (in English). Retrieved 2022-05-16.
- ↑ 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.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.
- ↑ "9.1.1: Finite-State Machine Overview". Engineering LibreTexts (in English). 2021-04-29. Retrieved 2022-05-31.
- ↑ "What is Deterministic System? - Definition from Techopedia". Techopedia.com (in English). Retrieved 2022-05-30.
- ↑ Stearns, Richard E. (January 2003). "नियतात्मक बनाम गैर-नियतात्मक समय और निचली सीमा की समस्याएं". Journal of the ACM. 50 (1): 91–95. doi:10.1145/602382.602409. ISSN 0004-5411. S2CID 2194820.
- ↑ 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.
- ↑ Gill, John (December 1977). "संभाव्य ट्यूरिंग मशीनों की कम्प्यूटेशनल जटिलता". SIAM Journal on Computing (in English). 6 (4): 675–695. doi:10.1137/0206049. ISSN 0097-5397.
- ↑ 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
- ↑ 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) - ↑ "FOLDOC से अमूर्त मशीन". foldoc.org. Retrieved 2021-08-07.
- ↑ 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.
- ↑ "अमूर्त मशीन". Oxford Reference (in English). Retrieved 2022-05-16.
- ↑ 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) - ↑ upscfever.com (2017-01-25). "कंप्यूटर संगठन और वास्तुकला (स्टैक संगठन) - यूपीएससी फीवर". upscfever.com (in English). Retrieved 2022-05-31.
- ↑ "What is Object-Oriented Programming (OOP)?". SearchAppArchitecture (in English). Retrieved 2022-05-31.
- ↑ "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
- ↑ 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.
- ↑ "Prolog | An Introduction". GeeksforGeeks (in English). 2018-05-26. Retrieved 2022-05-31.
- ↑ 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.
- ↑ baeldung (2018-01-11). "Introduction to Java Primitives | Baeldung". www.baeldung.com (in English). Retrieved 2022-05-31.
- ↑ "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
- ↑ 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
- Stephan Diehl, Pieter Hartel and Peter Sestoft, Abstract Machines for Programming Language Implementation, Future Generation Computer Systems, Vol. 16 (7), Elsevier, 2000.
- Werner Kluge (2006). Abstract Computing Machines: A Lambda Calculus Perspective. Springer. ISBN 978-3-540-27359-2.