प्रोग्रामिंग भाषा कार्यान्वयन: Difference between revisions
(Created page with "{{short description|System for executing computer programs}} [[कंप्यूटर प्रोग्रामिंग]] में, प्रोग्रामि...") |
No edit summary |
||
Line 1: | Line 1: | ||
{{short description|System for executing computer programs}} | {{short description|System for executing computer programs}} | ||
[[कंप्यूटर प्रोग्राम|कंप्यूटर प्रोग्रामिंग]] में,प्रोग्रामिंग भाषा कार्यान्वयन कंप्यूटर प्रोग्राम निष्पादित करने की एक प्रणाली है। प्रोग्रामिंग भाषा कार्यान्वयन के लिए दो सामान्य दृष्टिकोण हैं:<ref name="RantaBook">{{cite book |last1=Ranta |first1=Aarne |title=प्रोग्रामिंग भाषाओं को कार्यान्वित करना|date=9 May 2012 |publisher=College Publications |isbn=9781848900646 |pages=16–18 |url=http://www.cse.chalmers.se/edu/year/2012/course/DAT150/lectures/plt-book.pdf#page=16 |access-date=22 March 2020}}</ref> | |||
*[[ दुभाषिया (कंप्यूटिंग) ]]: प्रोग्राम को इंटरप्रेटर द्वारा इनपुट के रूप में पढ़ा जाता है, जो प्रोग्राम में लिखी गई क्रियाओं को निष्पादित करता है।<ref name="LanguageGreg">{{cite web |last1=Baker |first1=Greg |title=भाषा कार्यान्वयन|url=https://www2.cs.sfu.ca/~ggbaker/prog-langs/content/lang-implement.html |website=Computing Science - Simon Fraser University |access-date=22 March 2020}}</ref> | *[[ दुभाषिया (कंप्यूटिंग) | स्पष्टीकरण]]:प्रोग्राम को एक इंटरप्रेटर द्वारा इनपुट के रूप में पढ़ा जाता है, जो प्रोग्राम में लिखी गई क्रियाओं को निष्पादित करता है।<ref name="LanguageGreg">{{cite web |last1=Baker |first1=Greg |title=भाषा कार्यान्वयन|url=https://www2.cs.sfu.ca/~ggbaker/prog-langs/content/lang-implement.html |website=Computing Science - Simon Fraser University |access-date=22 March 2020}}</ref> | ||
*[[ संकलक ]]: प्रोग्राम को कंपाइलर द्वारा पढ़ा जाता है, जो इसे किसी अन्य भाषा, जैसे [[ बाईटकोड ]] या [[मशीन कोड]] में | *[[ संकलक ]]: प्रोग्राम को एक कंपाइलर द्वारा पढ़ा जाता है, जो इसे किसी अन्य भाषा, जैसे [[ बाईटकोड |बाईटकोड]] या [[मशीन कोड]] में अनुवादित करता है। अनुवादित कोड या तो सीधे हार्डवेयर द्वारा [[निष्पादन (कंप्यूटिंग)|निष्पादित]] किया जा सकता है, या किसी अन्य इंटरप्रेटर या किसी अन्य कंपाइलर के लिए इनपुट के रूप में कार्य कर सकता है।<ref name="LanguageGreg" /> | ||
== | ==इंटरप्रेटर== | ||
{{Main| | {{Main|अनुवादक (कंप्यूटिंग)}} | ||
एक इंटरप्रेटर (कंप्यूटिंग) दो भागों से बना होता है: एक [[पार्सर]] और एक [[मूल्यांकनकर्ता]] उपयोग होता है। किसी प्रोग्राम को इंटरप्रेटर द्वारा इनपुट के रूप में पढ़ने के बाद, इसे पार्सर द्वारा संसाधित किया जाता है। पार्सर एक [[पार्स वृक्ष|पार्स ट्री]] बनाने के लिए प्रोग्राम को भाषा घटकों में तोड़ता है। फिर मूल्यांकनकर्ता प्रोग्राम को निष्पादित करने के लिए पार्स ट्री का उपयोग करता है।<ref name="IntroToComputing">{{cite book |last1=Evans |first1=David |title=कंप्यूटिंग का परिचय|date=19 August 2011 |location=University of Virginia |page=211 |url=https://computingbook.org/FullText.pdf#page=221 |access-date=22 March 2020}}</ref> | |||
===[[ आभासी मशीन ]]=== | ===[[ आभासी मशीन | वर्चुअल मशीन]]=== | ||
वर्चुअल मशीन एक विशेष प्रकार का | वर्चुअल मशीन एक विशेष प्रकार का इंटरप्रेटर है जो बाइटकोड की व्याख्या करता है।<ref name="LanguageGreg" />बाइटकोड मशीन कोड के समान एक [[क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर|पोर्टेबल]] निम्न-स्तरीय कोड है, हालांकि इसे आम तौर पर भौतिक मशीन के बजाय वर्चुअल मशीन पर निष्पादित किया जाता है।<ref name="MakeUseOfVM">{{cite web |last1=Sridhar |first1=Jay |title=क्यों जावा वर्चुअल मशीन आपके कोड को बेहतर ढंग से चलाने में मदद करती है|url=https://www.makeuseof.com/tag/why-java-virtual-machine-code-run-better/ |website=MakeUseOf |access-date=22 March 2020}}</ref> अपनी दक्षता में सुधार करने के लिए, कई प्रोग्रामिंग भाषाएँ जैसे [[जावा (प्रोग्रामिंग भाषा)]],<ref name="MakeUseOfVM" />[[पायथन (प्रोग्रामिंग भाषा)]],<ref name="PythonBytecode">{{cite web |last1=Bennett |first1=James |title=पायथन बाइटकोड का परिचय|url=https://opensource.com/article/18/4/introduction-python-bytecode |website=Opensource.com |access-date=22 March 2020}}</ref> और सी शार्प (प्रोग्रामिंग भाषा)<ref name="CLR">{{cite web |last1=Ali |first1=Mirza Farrukh |title=सामान्य भाषा रनटाइम (सीएलआर) डॉटनेट|url=https://medium.com/@mirzafarrukh13/common-language-runtime-dotnet-83e0218edcae |website=Medium |access-date=22 March 2020}}</ref> व्याख्या किए जाने से पहले बाइटकोड में संकलित किया जाता है। | ||
===[[सही समय पर संकलन]]=== | ===[[सही समय पर संकलन|जस्ट-इन-टाइम कंपाइलर]]=== | ||
कुछ वर्चुअल मशीनों में बाइटकोड निष्पादन की दक्षता में सुधार करने के लिए | कुछ वर्चुअल मशीनों में बाइटकोड निष्पादन की दक्षता में सुधार करने के लिए जस्ट-इन-टाइम (जेआईटी) कंपाइलर शामिल होता है। जबकि बाइटकोड को वर्चुअल मशीन द्वारा निष्पादित किया जा रहा है, यदि जेआईटी कंपाइलर यह निर्धारित करता है कि बाइटकोड के एक हिस्से का बार-बार उपयोग किया जाएगा, तो यह उस विशेष हिस्से को मशीन कोड में संकलित करता है। JIT जेआईटी कंपाइलर फिर मशीन कोड को [[ रैंडम एक्सेस मेमोरी ]] में संग्रहीत करता है ताकि इसका उपयोग वर्चुअल मशीन द्वारा किया जा सके। जेआईटी कंपाइलर लंबे संकलन समय और तेज़ निष्पादन समय के बीच संतुलन बनाने का प्रयास करते हैं।<ref name="LanguageGreg" /> | ||
== | ==कम्पाइलर== | ||
{{Main| | {{Main|कम्पाइलर}} | ||
कंपाइलर एक भाषा में लिखे प्रोग्राम को दूसरी भाषा में अनुवाद करता है। अधिकांश कंपाइलर तीन चरणों में व्यवस्थित होते हैं: एक कंपाइलर | |||
यदि किसी दी गई [[उच्च स्तरीय भाषा]] का कंपाइलर किसी अन्य उच्च स्तरीय भाषा का निर्माण करता है, तो इसे [[स्रोत-से-स्रोत संकलक]] कहा जाता है। ट्रांसपिलर का उपयोग मौजूदा भाषाओं का विस्तार करने या | कंपाइलर एक भाषा में लिखे प्रोग्राम को दूसरी भाषा में अनुवाद करता है। अधिकांश कंपाइलर तीन चरणों में व्यवस्थित होते हैं: एक कंपाइलर फ्रंट एंड, एक ऑप्टिमाइज़र और एक बैक एंड पर व्यवस्थित होते हैं। कार्यक्रम को समझने के लिए फ्रंट एंड जिम्मेदार है। यह सुनिश्चित करता है कि प्रोग्राम वैध है और इसे एक [[मध्यवर्ती प्रतिनिधित्व]] में बदल देता है, प्रोग्राम का प्रतिनिधित्व करने के लिए कंपाइलर द्वारा उपयोग की जाने वाली डेटा संरचना का उपयोग किया जाता है। ऑप्टिमाइज़र गति बढ़ाने या [[निष्पादन]] योग्य के आकार को कम करने के लिए मध्यवर्ती प्रतिनिधित्व में सुधार करता है जो अंततः कंपाइलर द्वारा उत्पादित होता है। बैक एंड अनुकूलित मध्यवर्ती प्रतिनिधित्व को कंपाइलर की आउटपुट भाषा में परिवर्तित करता है।<ref name="EngineeringCompiler">{{cite book |last1=Cooper |first1=Keith |last2=Torczon |first2=Linda |title=एक कंपाइलर इंजीनियरिंग|url=https://archive.org/details/engineeringcompi00coop_143 |url-access=limited |date=7 February 2011 |publisher=Morgan Kaufmann |isbn=9780120884780 |pages=[https://archive.org/details/engineeringcompi00coop_143/page/n238 6]-9 |edition=2nd}}</ref> | ||
यदि किसी दी गई [[उच्च स्तरीय भाषा]] का कंपाइलर किसी अन्य उच्च स्तरीय भाषा का निर्माण करता है, तो इसे [[स्रोत-से-स्रोत संकलक|ट्रांसपिलर]] कहा जाता है। ट्रांसपिलर का उपयोग मौजूदा भाषाओं का विस्तार करने या अन्य भाषाओं जैसे [[सी (प्रोग्रामिंग भाषा)]]) के [[सॉफ्टवेयर पोर्टेबिलिटी|पोर्टेबल]] और अच्छी तरह से अनुकूलित कार्यान्वयन का फायदा उठाकर कंपाइलर विकास को सरल बनाने के लिए किया जा सकता है।<ref name="LanguageGreg" /> | |||
व्याख्या और संकलन के कई संयोजन संभव हैं, और कई आधुनिक प्रोग्रामिंग भाषा कार्यान्वयन में दोनों के तत्व शामिल हैं। उदाहरण के लिए, स्मॉलटॉक प्रोग्रामिंग भाषा को पारंपरिक रूप से बायटेकोड में संकलित करके कार्यान्वित किया जाता है, जिसे बाद में वर्चुअल मशीन द्वारा व्याख्या या संकलित किया जाता है। चूँकि स्मॉलटॉक बाइटकोड एक वर्चुअल मशीन पर चलता है, यह विभिन्न हार्डवेयर प्लेटफ़ॉर्म पर पोर्टेबल है।<ref name="SmalltalkBook">{{cite book |last1=Lewis |first1=Simon |title=स्मॉलटॉक की कला और विज्ञान|date=May 11, 1995 |publisher=Prentice Hall |isbn=9780133713459 |pages=20–21 |url=http://sdmeta.gforge.inria.fr/FreeBooks/Art/artAdded174186187Final.pdf#page=32 |access-date=23 March 2020}}</ref> | व्याख्या और संकलन के कई संयोजन संभव हैं, और कई आधुनिक प्रोग्रामिंग भाषा कार्यान्वयन में दोनों के तत्व शामिल हैं। उदाहरण के लिए, स्मॉलटॉक प्रोग्रामिंग भाषा को पारंपरिक रूप से बायटेकोड में संकलित करके कार्यान्वित किया जाता है, जिसे बाद में वर्चुअल मशीन द्वारा व्याख्या या संकलित किया जाता है। चूँकि स्मॉलटॉक बाइटकोड एक वर्चुअल मशीन पर चलता है, यह विभिन्न हार्डवेयर प्लेटफ़ॉर्म पर पोर्टेबल है।<ref name="SmalltalkBook">{{cite book |last1=Lewis |first1=Simon |title=स्मॉलटॉक की कला और विज्ञान|date=May 11, 1995 |publisher=Prentice Hall |isbn=9780133713459 |pages=20–21 |url=http://sdmeta.gforge.inria.fr/FreeBooks/Art/artAdded174186187Final.pdf#page=32 |access-date=23 March 2020}}</ref> | ||
Line 27: | Line 29: | ||
==एकाधिक कार्यान्वयन== | ==एकाधिक कार्यान्वयन== | ||
प्रोग्रामिंग भाषाओं में एकाधिक कार्यान्वयन हो सकते हैं। अलग-अलग कार्यान्वयन अलग-अलग भाषाओं में लिखे जा सकते हैं और कोड को संकलित या व्याख्या करने के लिए विभिन्न तरीकों का उपयोग कर सकते हैं। उदाहरण के लिए, पायथन (प्रोग्रामिंग भाषा) के कार्यान्वयन में शामिल हैं: | प्रोग्रामिंग भाषाओं में एकाधिक कार्यान्वयन हो सकते हैं। अलग-अलग कार्यान्वयन अलग-अलग भाषाओं में लिखे जा सकते हैं और कोड को संकलित या व्याख्या करने के लिए विभिन्न तरीकों का उपयोग कर सकते हैं। उदाहरण के लिए, पायथन (प्रोग्रामिंग भाषा) के कार्यान्वयन में शामिल हैं:<ref name="AltPython">{{cite web |title=वैकल्पिक पायथन कार्यान्वयन|url=https://www.python.org/download/alternatives/ |website=Python.org |access-date=23 March 2020}}</ref> | ||
* [[सीपीथॉन]], पायथन का [[संदर्भ कार्यान्वयन]] | * [[सीपीथॉन]], पायथन का [[संदर्भ कार्यान्वयन]] है। | ||
* [[आयरनपाइथॉन]], . | * [[आयरनपाइथॉन]], .नेट फ्रेमवर्क को लक्षित करने वाला एक कार्यान्वयन (सी प्रोग्रामिंग भाषा में लिखा गया) है। | ||
* ज्योथॉन, [[जावा वर्चुअल मशीन]] को लक्षित करने वाला एक कार्यान्वयन | * ज्योथॉन, [[जावा वर्चुअल मशीन]] को लक्षित करने वाला एक कार्यान्वयन है। | ||
* [[PyPy]], गति के लिए डिज़ाइन किया गया एक कार्यान्वयन ( | * [[PyPy|पीवाईपीवाई]] , गति के लिए डिज़ाइन किया गया एक कार्यान्वयन (आरपाइथन में लिखा गया) है। | ||
==संदर्भ== | ==संदर्भ== |
Revision as of 20:37, 2 August 2023
कंप्यूटर प्रोग्रामिंग में,प्रोग्रामिंग भाषा कार्यान्वयन कंप्यूटर प्रोग्राम निष्पादित करने की एक प्रणाली है। प्रोग्रामिंग भाषा कार्यान्वयन के लिए दो सामान्य दृष्टिकोण हैं:[1]
- स्पष्टीकरण:प्रोग्राम को एक इंटरप्रेटर द्वारा इनपुट के रूप में पढ़ा जाता है, जो प्रोग्राम में लिखी गई क्रियाओं को निष्पादित करता है।[2]
- संकलक : प्रोग्राम को एक कंपाइलर द्वारा पढ़ा जाता है, जो इसे किसी अन्य भाषा, जैसे बाईटकोड या मशीन कोड में अनुवादित करता है। अनुवादित कोड या तो सीधे हार्डवेयर द्वारा निष्पादित किया जा सकता है, या किसी अन्य इंटरप्रेटर या किसी अन्य कंपाइलर के लिए इनपुट के रूप में कार्य कर सकता है।[2]
इंटरप्रेटर
एक इंटरप्रेटर (कंप्यूटिंग) दो भागों से बना होता है: एक पार्सर और एक मूल्यांकनकर्ता उपयोग होता है। किसी प्रोग्राम को इंटरप्रेटर द्वारा इनपुट के रूप में पढ़ने के बाद, इसे पार्सर द्वारा संसाधित किया जाता है। पार्सर एक पार्स ट्री बनाने के लिए प्रोग्राम को भाषा घटकों में तोड़ता है। फिर मूल्यांकनकर्ता प्रोग्राम को निष्पादित करने के लिए पार्स ट्री का उपयोग करता है।[3]
वर्चुअल मशीन
वर्चुअल मशीन एक विशेष प्रकार का इंटरप्रेटर है जो बाइटकोड की व्याख्या करता है।[2]बाइटकोड मशीन कोड के समान एक पोर्टेबल निम्न-स्तरीय कोड है, हालांकि इसे आम तौर पर भौतिक मशीन के बजाय वर्चुअल मशीन पर निष्पादित किया जाता है।[4] अपनी दक्षता में सुधार करने के लिए, कई प्रोग्रामिंग भाषाएँ जैसे जावा (प्रोग्रामिंग भाषा),[4]पायथन (प्रोग्रामिंग भाषा),[5] और सी शार्प (प्रोग्रामिंग भाषा)[6] व्याख्या किए जाने से पहले बाइटकोड में संकलित किया जाता है।
जस्ट-इन-टाइम कंपाइलर
कुछ वर्चुअल मशीनों में बाइटकोड निष्पादन की दक्षता में सुधार करने के लिए जस्ट-इन-टाइम (जेआईटी) कंपाइलर शामिल होता है। जबकि बाइटकोड को वर्चुअल मशीन द्वारा निष्पादित किया जा रहा है, यदि जेआईटी कंपाइलर यह निर्धारित करता है कि बाइटकोड के एक हिस्से का बार-बार उपयोग किया जाएगा, तो यह उस विशेष हिस्से को मशीन कोड में संकलित करता है। JIT जेआईटी कंपाइलर फिर मशीन कोड को रैंडम एक्सेस मेमोरी में संग्रहीत करता है ताकि इसका उपयोग वर्चुअल मशीन द्वारा किया जा सके। जेआईटी कंपाइलर लंबे संकलन समय और तेज़ निष्पादन समय के बीच संतुलन बनाने का प्रयास करते हैं।[2]
कम्पाइलर
कंपाइलर एक भाषा में लिखे प्रोग्राम को दूसरी भाषा में अनुवाद करता है। अधिकांश कंपाइलर तीन चरणों में व्यवस्थित होते हैं: एक कंपाइलर फ्रंट एंड, एक ऑप्टिमाइज़र और एक बैक एंड पर व्यवस्थित होते हैं। कार्यक्रम को समझने के लिए फ्रंट एंड जिम्मेदार है। यह सुनिश्चित करता है कि प्रोग्राम वैध है और इसे एक मध्यवर्ती प्रतिनिधित्व में बदल देता है, प्रोग्राम का प्रतिनिधित्व करने के लिए कंपाइलर द्वारा उपयोग की जाने वाली डेटा संरचना का उपयोग किया जाता है। ऑप्टिमाइज़र गति बढ़ाने या निष्पादन योग्य के आकार को कम करने के लिए मध्यवर्ती प्रतिनिधित्व में सुधार करता है जो अंततः कंपाइलर द्वारा उत्पादित होता है। बैक एंड अनुकूलित मध्यवर्ती प्रतिनिधित्व को कंपाइलर की आउटपुट भाषा में परिवर्तित करता है।[7]
यदि किसी दी गई उच्च स्तरीय भाषा का कंपाइलर किसी अन्य उच्च स्तरीय भाषा का निर्माण करता है, तो इसे ट्रांसपिलर कहा जाता है। ट्रांसपिलर का उपयोग मौजूदा भाषाओं का विस्तार करने या अन्य भाषाओं जैसे सी (प्रोग्रामिंग भाषा)) के पोर्टेबल और अच्छी तरह से अनुकूलित कार्यान्वयन का फायदा उठाकर कंपाइलर विकास को सरल बनाने के लिए किया जा सकता है।[2]
व्याख्या और संकलन के कई संयोजन संभव हैं, और कई आधुनिक प्रोग्रामिंग भाषा कार्यान्वयन में दोनों के तत्व शामिल हैं। उदाहरण के लिए, स्मॉलटॉक प्रोग्रामिंग भाषा को पारंपरिक रूप से बायटेकोड में संकलित करके कार्यान्वित किया जाता है, जिसे बाद में वर्चुअल मशीन द्वारा व्याख्या या संकलित किया जाता है। चूँकि स्मॉलटॉक बाइटकोड एक वर्चुअल मशीन पर चलता है, यह विभिन्न हार्डवेयर प्लेटफ़ॉर्म पर पोर्टेबल है।[8]
एकाधिक कार्यान्वयन
प्रोग्रामिंग भाषाओं में एकाधिक कार्यान्वयन हो सकते हैं। अलग-अलग कार्यान्वयन अलग-अलग भाषाओं में लिखे जा सकते हैं और कोड को संकलित या व्याख्या करने के लिए विभिन्न तरीकों का उपयोग कर सकते हैं। उदाहरण के लिए, पायथन (प्रोग्रामिंग भाषा) के कार्यान्वयन में शामिल हैं:[9]
- सीपीथॉन, पायथन का संदर्भ कार्यान्वयन है।
- आयरनपाइथॉन, .नेट फ्रेमवर्क को लक्षित करने वाला एक कार्यान्वयन (सी प्रोग्रामिंग भाषा में लिखा गया) है।
- ज्योथॉन, जावा वर्चुअल मशीन को लक्षित करने वाला एक कार्यान्वयन है।
- पीवाईपीवाई , गति के लिए डिज़ाइन किया गया एक कार्यान्वयन (आरपाइथन में लिखा गया) है।
संदर्भ
- ↑ Ranta, Aarne (9 May 2012). प्रोग्रामिंग भाषाओं को कार्यान्वित करना (PDF). College Publications. pp. 16–18. ISBN 9781848900646. Retrieved 22 March 2020.
- ↑ 2.0 2.1 2.2 2.3 2.4 Baker, Greg. "भाषा कार्यान्वयन". Computing Science - Simon Fraser University. Retrieved 22 March 2020.
- ↑ Evans, David (19 August 2011). कंप्यूटिंग का परिचय (PDF). University of Virginia. p. 211. Retrieved 22 March 2020.
{{cite book}}
: CS1 maint: location missing publisher (link) - ↑ 4.0 4.1 Sridhar, Jay. "क्यों जावा वर्चुअल मशीन आपके कोड को बेहतर ढंग से चलाने में मदद करती है". MakeUseOf. Retrieved 22 March 2020.
- ↑ Bennett, James. "पायथन बाइटकोड का परिचय". Opensource.com. Retrieved 22 March 2020.
- ↑ Ali, Mirza Farrukh. "सामान्य भाषा रनटाइम (सीएलआर) डॉटनेट". Medium. Retrieved 22 March 2020.
- ↑ Cooper, Keith; Torczon, Linda (7 February 2011). एक कंपाइलर इंजीनियरिंग (2nd ed.). Morgan Kaufmann. pp. 6-9. ISBN 9780120884780.
- ↑ Lewis, Simon (May 11, 1995). स्मॉलटॉक की कला और विज्ञान (PDF). Prentice Hall. pp. 20–21. ISBN 9780133713459. Retrieved 23 March 2020.
- ↑ "वैकल्पिक पायथन कार्यान्वयन". Python.org. Retrieved 23 March 2020.
बाहरी संबंध
- Media related to Compiling and linking at Wikimedia Commons