Compiler क्या है? फायदे, नुकसान और प्रकार

Compiler Kya Hai – कम्पाइलर क्या है

What is Compiler in Hindi – कम्पाइलर क्या है हिंदी में

एक कंपाइलर एक विशेष प्रोग्राम है जो एक विशेष प्रोग्रामिंग लैंग्वेज में लिखे गए स्टेटमेंट्स को प्रोसेस करता है और उन्हें मशीनी लैंग्वेज या “कोड” में बदल देता है जिसका उपयोग कंप्यूटर का प्रोसेसर करता है।

आम तौर पर, एक प्रोग्रामर एक एडिटर का उपयोग करके एक समय में Pascal या C जैसी लैंग्वेज में लैंग्वेज स्टेटमेंट्स लिखता है। जो फाइल बनाई जाती है उसमें सोर्स स्टेटमेंट होता हैं। प्रोग्रामर तब उपयुक्त लैंग्वेज कम्पाइलर रन करता है, फ़ाइल का नाम निर्दिष्ट करता है जिसमें सोर्स स्‍टेटमेंट होते हैं।

एक्सेक्यूट करते समय (रन होते समय), कम्पाइलर पहले सभी लैंग्वेज स्टेटमेंट्स को एक के बाद एक वाक्यात्मक रूप से पार्स (या विश्लेषण) करता है और फिर, एक या अधिक क्रमिक चरणों या “passes” में, आउटपुट कोड बनाता है, यह सुनिश्चित करता है कि स्टेटमेंट्स जो संदर्भित करते हैं अन्य स्टेटमेंट्स को अंतिम कोड में सही ढंग से संदर्भित किया जाता है।

परंपरागत रूप से, कंपाइलेशन के आउटपुट को ऑब्जेक्ट कोड या कभी-कभी ऑब्जेक्ट मॉड्यूल कहा जाता है। (ध्यान दें कि यहां “ऑब्जेक्ट” शब्द ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग से संबंधित नहीं है।) ऑब्जेक्ट कोड मशीन कोड है जिसे प्रोसेसर एक समय में एक इंस्ट्रक्शन एक्सेक्यूट कर सकता है।

What is Compiler in Hindi- कम्पाइलर क्या है?

What is Compiler in Hindi - Compiler Kya Hai

Compiler Kya Hai? कंपाइलर क्या है?

एक कंपाइलर एक प्रोग्राम है जो कुछ हाई लेवल प्रोग्रामिंग लैंग्वेज (जैसे Java) में लिखे गए सोर्स प्रोग्राम को कुछ कंप्यूटर आर्किटेक्चर (जैसे इंटेल पेंटियम आर्किटेक्चर) के लिए मशीन कोड में ट्रांसलेटं करता है।

What is Compiler in Hindi - Compiler Kya Hai

जनरेट किए गए मशीन कोड को बाद में हर बार अलग-अलग डेटा के खिलाफ कई बार एक्सेक्यूट किया जा सकता है।

एक इंटरप्रेटर एक हाई-लेवल प्रोग्रामिंग लैंग्वेज में लिखे गए एक एक्सेक्यूटेबल सोर्स प्रोग्राम के साथ-साथ इस प्रोग्राम के लिए डेटा पढ़ता है, और यह कुछ परिणाम उत्पन्न करने के लिए डेटा के विरुद्ध प्रोग्राम चलाता है। एक उदाहरण यूनिक्स शेल इंटरप्रेटर है, जो ऑपरेटिंग सिस्टम कमांड को अंतःक्रियात्मक रूप से चलाता है।

ध्यान दें कि इंटरप्रेटर और कंपाइलर दोनों (किसी भी अन्य प्रोग्राम की तरह) कुछ हाई-लेवल प्रोग्रामिंग लैंग्वेज में लिखे गए हैं (जो उनके द्वारा स्वीकार की जाने वाली लैंग्वेज से भिन्न हो सकते हैं) और उनका मशीन कोड में ट्रांसलेटं किया जाता है। उदाहरण के लिए, एक जावा इंटरप्रेटर पूरी तरह से C, या Java में भी लिखा जा सकता है।

इंटरप्रेटर सोर्स प्रोग्राम मशीन इंडिपेंडेंट है क्योंकि यह मशीन कोड उत्पन्न नहीं करता है। (मशीन कोड में उत्पन्न और ट्रांसलेटं के बीच अंतर पर ध्यान दें।)

एक इंटरप्रेटर आमतौर पर एक कम्पाइलर की तुलना में धीमा होता है क्योंकि यह एक प्रोग्राम प्रोग्राम में प्रत्येक स्टेटमेंट्स को इस स्टेटमेंट्स के मूल्यांकन की संख्या के रूप में कई बार प्रोसेस और इंटरप्रेटस करता है।

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

हम Compilers का उपयोग क्यों करते हैं?

प्रोग्रामर हाई लेवल प्रोग्रामिंग लैंग्वेजेज को मशीन कोड में ट्रांसलेट करने के लिए कंपाइलर्स का उपयोग करते हैं जो कंप्यूटर समझ और एक्सेक्यूट कर सकते हैं।

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

कंपाइलर की विशेषताएं (Features of a Compiler in Hindi)

विशेषताएं इस प्रकार हैं:

  • कंपाइलेशन स्‍पीड।
  • मशीन कोड की शुद्धता।
  • कोड का अर्थ नहीं बदलना चाहिए।
  • मशीन कोड की स्‍पीड।
  • अच्छे एरर का पता लगाना।
  • व्याकरण के अनुसार कोड को सही ढंग से जांचना।

Compilers के उपयोग/एप्लिकेशन

  • कोड को प्लेटफॉर्म के लिए इंडिपेंडेंट बनाने में मदद करता है।
  • कोड को सिंटैक्स और सिमेंटिक एरर से मुक्त बनाता है।
  • कोड की एक्सेक्यूटेबल फ़ाइलें बनाता हैं।
  • एक लैंग्वेज से दूसरी लैंग्वेज में कोड का ट्रांसलेटं करता है।

कम्पाइलर के लाभ (Advantages of Compiler in Hindi)

कंपाइलर के कई फायदे हैं जो इस प्रकार हैं –

  • एक कंपाइलर एक बार में एक कोड का ट्रांसलेटं करता है।
  • इसमें समय कम लगता है।
  • CPU उपयोग अधिक है।
  • Syntactic और Semantic दोनों एरर्स को समवर्ती रूप से जाँचा जा सकता है।
  • यह कई हाई-लेवल लैंग्वेजेज जैसे C, C++, JAVA, आदि द्वारा आसानी से सपोर्टेड है।

कंपाइलर के नुकसान (Disadvantages of Compiler in Hindi)

कंपाइलर के कई नुकसान हैं जो इस प्रकार हैं –

  • यह लचीला नहीं है।
  • यह अधिक जगह की खपत करता है।
  • एरर लोकलाइजेशन मुश्किल है।
  • सोर्स प्रोग्राम को प्रत्येक मॉडिफिकेशन के लिए कंपाइल्‍ड किया जाना है।
  • इसे सही मशीन कोड उत्पन्न करना चाहिए जो तेजी से चलना चाहिए।
  • यह पोर्टेबल होना चाहिए।
  • इसे नैदानिक ​​और एरर मैसेज देना चाहिए।
  • इसमें लगातार ऑप्टिमाइजेशन होना चाहिए।

कंप्यूटर में कंपाइलर क्या है? (What is a Compiler in a Computer)

कंप्यूटर में एक कंपाइलर बस एक प्रोग्राम को उसकी सोर्स लैंग्वेज से टार्गेट लैंग्वेज में बदल देता है। किसी प्रोग्राम को उसकी सोर्स लैंग्वेज से टार्गेट लैंग्वेज में ट्रांसफॉर्म करते समय यह सोर्स प्रोग्राम का अर्थ नहीं बदलता है और सोर्स और टार्गेट प्रोग्राम दोनों समान होते हैं।

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

हालाँकि, सोर्स लैंग्वेजेज और टार्गेट लैंग्वेजेज की एक विस्तृत विविधता है। सोर्स लैंग्वेज पारंपरिक प्रोग्रामिंग लैंग्वेजेज जैसे Java, C#, Perl, Visual Basic से लेकर कुछ विशेष लैंग्वेजेज तक है जो कंप्यूटर एप्लिकेशन के लगभग हर क्षेत्र जैसे Ruby, Python में विकसित हुई हैं।

टार्गेट लैंग्वेज एक प्रोग्रामिंग लैंग्वेज भी हो सकती है या यह एक निश्चित कंप्यूटर की मशीनी लैंग्वेज हो सकती है जो माइक्रोप्रोसेसर और सुपर कंप्यूटर के बीच होती है।

कंपाइलर की संरचना या उसके उद्देश्य के आधार पर हम कंपाइलर्स को सिंगल-पास, टू-पास और मल्टी-पास के रूप में वर्गीकृत कर सकते हैं, हम आगे के सेक्शन में इन प्रकारों पर चर्चा करेंगे।

एक कंपाइलर के चरण (Phases of a Compiler in Hindi)

What is Compiler in Hindi - Compiler Kya Hai

कंप्यूटर में कंपाइलर सिर्फ एक सोर्स प्रोग्राम को इंटेक नहीं करता है और सीधे एक समान टारगेट प्रोग्राम जेनरेट करता है। इसके बजाय, यह चरणों में संचालित होता है। प्रत्येक चरण में, कम्पाइलर एक टारगेट प्रोग्राम बनाने की प्रक्रिया में सोर्स प्रोग्राम को विघटित करता है।

1. Lexical Analysis

सोर्स प्रोग्राम के एनालिसिस में lexical analysis प्रारंभिक चरण है। Lexical एनालिसिस को लिनियर एनालिसिस भी कहा जाता है। ऐसा इसलिए है क्योंकि सोर्स प्रोग्राम वर्णों की एक धारा से बना है। कैरेक्‍टर की इन स्ट्रिम को कैरेक्‍टर द्वारा बाएं से दाएं पढ़ा जाता है। कुछ अर्थ रखने वाले वर्णों के अनुक्रम को टोकन में बांटा गया है।

2. Syntax Analysis

Syntax Analysis चरण को hierarchical एनालिसिस या पार्सिंग के रूप में भी जाना जाता है। इस चरण में, लिनियर एनालिसिस चरण के दौरान बने टोकन को grammatical phrases में समूहीकृत किया जाता है जिसे parse tree की मदद से दर्शाया जाता है।

तो, ऊपर के उदाहरण में बने टोकन को व्याकरणिक वाक्यांशों में बांटा गया है।

3. Semantics Analysis

उपरोक्त दो चरणों में, हमने सोर्स प्रोग्राम को टोकन में विभाजित किया है और उन्हें पदानुक्रम में व्यवस्थित किया है जैसा कि ऊपर के पार्स ट्री में दर्शाया गया है। सिमेंटिक एनालिसिस में, प्रोग्राम के घटकों पर कुछ जाँच की जाती है ताकि यह पता लगाया जा सके कि ये घटक सामूहिक रूप से अर्थ बनाते हैं या नहीं।

सिमेंटिक एनालिसिस का सबसे महत्वपूर्ण कारक ‘टाइप चेकिंग’ है। कम्पाइलर सुनिश्चित करता है कि प्रत्येक ऑपरेटर के लिए सोर्स लैंग्वेज द्वारा अनुमत ऑपरेंड हैं।

4. Symbol Table Management

एक प्रोग्राम में सभी इकाइओं के रिकॉर्ड को बनाए रखने के लिए कंपाइलर एक डेटा संरचना बनाता है और बनाए रखता है जिसे हम एक सिंबल  टेबल के रूप में संदर्भित करते हैं।

प्रोग्राम के भाग हो सकते हैं:

  • आइडेंटिफायर्स
  • प्रोग्राम में फंक्‍शन
  • फंक्‍शन में आर्गुमेंट की संख्या
  • आर्गुमेंट पारित करने की मेथड
  • आर्गुमेंट का प्रकार जो फ़ंक्शन द्वारा लौटाया जाएगा (यदि कोई हो)।
  • सिंबल टेबल प्रोग्राम में मौजूद प्रत्येक इकाई के स्थान को आसानी से और जल्दी से निर्धारित करने में मदद करती है।

5. Error Detection and Reporting

जैसे ही सोर्स प्रोग्राम कंपाइलर के चरणों से गुजरता है, कई एरर सामने आएंगी। अधिकांश एरर कम्पाइलर के सिंटैक्स और सिमेंटिक चरण के दौरान सामने आती हैं।

एरर डिटेक्शन एंड रिपोर्टिंग चरण में एरर का पता चलता है और कंपाइलर को आगे बढ़ता हैं और सोर्स प्रोग्राम में आगे के एरर का पता लगाता हैं।

6. Intermediate Code Generation

एक बार जब सोर्स कोड का Syntactically और Semantically एनालिसिस किया जाता है, तो अगला चरण सोर्स प्रोग्राम का इंटरमीडिएट कोड उत्पन्न करना होता है। इंटरमीडिएट कोड एक अमूर्त मशीन के लिए एक प्रोग्राम की तरह है।

इंटरमीडिएट कोड में कई गुण हैं जैसा कि नीचे चर्चा की गई है:

  • इसे उत्पन्न करना आसान होना चाहिए।
  • इसे टारगेट कोड में ट्रांसलेटं करना आसान होना चाहिए।
  • इंटरमीडिएट कोड के प्रत्येक इंस्ट्रक्शन में असाइनमेंट ऑपरेटर के अलावा अधिक से अधिक एक ऑपरेटर होना चाहिए। यह कम्पाइलर को उस क्रम को निर्धारित करने में मदद करता है जिसमें ऑपरेशन एक्सेक्यूट किया जाना चाहिए।
  • कंपाइलर को प्रत्येक इंस्ट्रक्शन पर गणना किए गए इंटरमीडिएट वैल्‍यूज को संग्रहीत करने के लिए अस्थायी वेरिएबल उत्पन्न करना होता है।
  • इंटरमीडिएट कोड में कुछ इंस्ट्रक्शन हो सकते हैं जिनमें तीन से कम ऑपरेंड होते हैं।

इस प्रकार, इंटरमीडिएट कोड पीढ़ी चरण सोर्स प्रोग्राम के इंटरमीडिएट प्रतिनिधित्व का उत्पादन करता है, प्रोग्राम के प्रवाह को संभालता है और प्रक्रिया कॉल को भी संभालता है।

7. Code Optimization

कोड ऑप्टिमाइजेशन चरण में, टारगेट कोड के निष्पादन को और भी तेज करने के लिए इंटरमीडिएट कोड को ऑप्टिमाइज किया जाता है। ऑप्टिमाइजेशन के दौरान, प्रोग्राम का अर्थ नहीं बदलता है। यद्यपि ऑप्टिमाइज किए गए कोड की मात्रा कंपाइलर से कंपाइलर में भिन्न होती है।

8. Code Generation

कोड जनरेशन चरण कंपाइलेशन का अंतिम चरण है। इस चरण में, एक स्थानांतरित करने योग्य मशीन कोड या एक असेंबली कोड उत्पन्न होता है जो सोर्स प्रोग्राम के बराबर होता है।

कोड जनरेशन चरण का सबसे महत्वपूर्ण हिस्सा मेमोरी लोकेशन यानी रजिस्टर्स का चयन करना है क्योंकि हमें उन्हें वेरिएबल असाइन करने की आवश्यकता होती है जो हम प्रोग्राम में उपयोग करते हैं।

यह भी पढ़े: क्लिपबोर्ड क्या है? परिभाषा, उपयोग, एप्लिकेशन

Compiler और Interpreter में क्या फर्क हैं?

Difference Between Compiler and Interpreter

पैरामीटर कंपाइलर इंटरप्रेटर

CompilerInterpreter
प्रोग्रामिंग के चरण:प्रोग्रामिंग के चरण:
कंपाइलर सभी लैंग्वेज स्‍टेटमेंट का विश्लेषण करता है और जब उसे कुछ गलत मिलता है तो वह एरर फेंकता है।इसमें फाइलों को जोड़ने या मशीन कोड बनाने की आवश्यकता नहीं होती है।
यदि शून्य त्रुटि है, तो कंपाइलर स्रोत कोड को मशीन एक में बदल देता है।यह निष्पादन के दौरान सोर्स स्‍टेटमेंट पंक्ति दर पंक्ति निष्पादित करता है।
यह विभिन्न कोड फ़ाइलों को एक रननेबल प्रोग्राम (exe) में लिंक करता है।-
यह प्रोग्राम रन करता है।-
लाभ: कोड निष्पादन समय तुलनात्मक रूप से कम है क्योंकि प्रोग्राम कोड पहले ही मशीन कोड में अनुवादित हो जाता है।लाभ: वे एक शुरुआत के लिए भी उपयोग करने और निष्पादित करने में काफी आसान हैं।
नुकसान: स्रोत कोड पर वापस आए बिना कोई प्रोग्राम नहीं बदल सकता है।नुकसान:केवल संबंधित इंटरप्रेटर वाले कंप्यूटर व्याख्या किए गए प्रोग्राम चला सकते हैं।
यह मशीन लैंग्वेज को मशीन कोड के रूप में डिस्क पर सेव करता है।यह मशीनी लैंग्वेज को बिल्कुल भी सेव नहीं करता है।
रनिंग टाइम संकलित कोड तुलनात्मक रूप से तेजी से चलते हैं।व्याख्या किए गए कोड तुलनात्मक रूप से धीमे चलते हैं।
मॉडल यह लैंग्वेज-ट्रांसलेट लिंकिंग-लोडिंग मॉडल के आधार पर काम करता है।यह व्याख्या पद्धति के आधार पर कार्य करता है।
यह exe फॉर्मेट में एक आउटपुट प्रोग्राम उत्पन्न करता है। एक यूजर इसे मूल रूप से इच्छित प्रोग्राम से स्वतंत्र रूप से चला सकता है।यह एक आउटपुट प्रोग्राम उत्पन्न नहीं करता है। मतलब, यह व्यक्तिगत निष्पादन के दौरान हर बार सोर्स प्रोग्राम का मूल्यांकन करता है।
एक प्रोग्राम के निष्पादन को संकलन से अलग कर सकता है। इस प्रकार, आप इसे संपूर्ण आउटपुट के संकलन को पूरा करने के बाद ही कर सकते हैं।प्रोग्राम का निष्पादन इंटरप्रिटेशन प्रक्रिया के चरणों में से एक है। तो, आप इसे लाइन से लाइन कर सकते हैं।
लक्ष्य प्रोग्राम स्वतंत्र रूप से निष्पादित होते हैं। उन्हें मेमोरी में कंपाइलर की आवश्यकता नहीं होती है।इंटरप्रेटर मूल रूप से इंटरप्रिटेशन के समय मेमोरी में मौजूद होता है।
आपके लिए सर्वश्रेष्ठ फिटेड कंपाइलर को पोर्ट नहीं कर सकता क्योंकि यह विशिष्ट टार्गेट मशीन से बंधा रहता है। C और C++ जैसी प्रोग्रामिंग लैंग्वेजेज में संकलन मॉडल बहुत आम है।वे वेब वातावरण में सबसे अच्छा काम करते हैं- जहां लोड समय बहुत महत्वपूर्ण होता है। संकलन में अपेक्षाकृत लंबा समय लगता है, यहां तक कि छोटे कोड के साथ भी जो संपूर्ण विश्लेषण के कारण कई बार नहीं चल सकता है। ऐसे मामलों में इंटरप्रिटेशन बेहतर हैं।
एक कंपाइलर पूरे कोड को पहले से देखने में सक्षम है। इस प्रकार, यह बहुत सारे ऑप्टिमाइजेशन करके कोड को तेज़ी से चलाता है।एक इंटरप्रेटर एक कोड लाइन को लाइन से देखता है। इस प्रकार, कंपाइलर्स की तुलना में ऑप्टिमाइजेशन बहुत मजबूत नहीं है।
डायनामिक टाइपिंग कंपाइलर्स को लागू करना बहुत मुश्किल होता है क्योंकि वे टर्न टाइम के दौरान होने वाली किसी भी चीज़ का अनुमान नहीं लगा सकते हैं।इंटरप्रिटेशन की गई लैंग्वेज गतिशील टाइपिंग का समर्थन करती है।
उपयोग यह उत्पादन पर्यावरण के लिए सबसे अच्छा काम करता है।यह प्रोग्रामिंग और विकास पर्यावरण के लिए सबसे अच्छा काम करता है।
इनपुट: कंपाइलर एक प्रोग्राम को संपूर्ण रूप में लेता है।इनपुट:एक इंटरप्रेटर एक कोड की सिंगल लाइन लेता है।
आउटपुट: कंपाइलर मध्यवर्ती मशीन कोड उत्पन्न करते हैं।आउटपुट: इंटरप्रेटर कभी भी कोई मध्यवर्ती मशीन कोड उत्पन्न नहीं करते हैं।
यह ट्रांसलेटर कंपाइलेशन के बाद सभी त्रुटियों को एक ही समय में एक साथ प्रदर्शित करता है।यह प्रत्येक लाइन की त्रुटियों को एक-एक करके प्रदर्शित करता है।
प्रोग्रामिंग लैंग्वेज जावा, स्काला, सी #, सी, सी ++ कंपाइलर्स का उपयोग करते हैं।पर्ल, रूबी, PHP इंटरप्रेटर का उपयोग करते हैं।

कंपाइलर के प्रकार (Types of Compiler in Hindi)

यद्यपि कंप्यूटर में विभिन्न प्रकार के कंपाइलर होते हैं, हम इस संदर्भ में तीन प्रकार के कंपाइलरों पर चर्चा करेंगे।

1. सिंगल-पास कंपाइलर

जैसा कि हम सभी जानते हैं कि एक कंपाइलर के छह चरण होते हैं लेक्सिकल एनालिसिस फेज, सिंटैक्स एनालिसिस, सिमेंटिक एनालिसिस, इंटरमीडिएट कोड जनरेशन फेज, कोड ऑप्टिमाइजेशन और कोड जेनरेशन फेज। इसलिए, यदि इन सभी चरणों को एक सिंगल मॉड्यूल में लागू किया जाता है तो हम इसे सिंगल-पास कंपाइलर के रूप में संदर्भित करते हैं।

सिंगल-पास मुख्य मेमोरी की तरह अधिक स्थान लेता है क्योंकि इसके सभी चरण एक ही मॉड्यूल में कार्यान्वित किए जाते हैं।

चूंकि सभी चरणों को एक मॉड्यूल में कार्यान्वित किया जाता है, इसलिए सिंगल-पास कंपाइलर तेजी से कंपाइल होता है क्योंकि इसमें इंटरमीडिएट कोड उत्पन्न करने की आवश्यकता नहीं होती है।

उदाहरण: पास्कल कंपाइलर

2. टू-पास कंपाइलर

टू-पास कंपाइलर में, कंपाइलर के छह चरणों को दो मॉड्यूल में लागू किया जाता है।

एक समय में टू-पास कंपाइलर का केवल एक मॉड्यूल मुख्य मेमोरी में रखा जाता है और इस मॉड्यूल (प्रथम मॉड्यूल) के माध्यम से सोर्स प्रोग्राम को प्रोसेस किया जाता है।

पहले मॉड्यूल द्वारा उत्पन्न इंटरमीडिएट कोड संग्रहीत किया जाता है और पहले मॉड्यूल को मुख्य मेमोरी में कंपाइलर के बाद के दूसरे मॉड्यूल द्वारा प्रतिस्थापित किया जाता है।

अब पहले मॉड्यूल द्वारा उत्पन्न इंटरमीडिएट कोड दूसरे मॉड्यूल के इनपुट के रूप में प्रदान किया जाता है जो बदले में टारगेट प्रोग्राम उत्पन्न करता है।

तो, इस प्रकार टारगेट कोड दो पास में उत्पन्न होता है, इसीलिए इसे टू-पास कंपाइलर कहा जाता है।

3. मल्टी-पास कंपाइलर

मल्टी-पास कंपाइलर में, कंपाइलर के चरणों को कई मॉड्यूल के साथ लागू किया जाता है।

एक समय में केवल एक मॉड्यूल को मुख्य मेमोरी में रखा जाता है और उस मॉड्यूल द्वारा उत्पन्न इंटरमीडिएट कोड संग्रहीत किया जाता है और फिर मॉड्यूल को उसके बाद के मॉड्यूल से बदल दिया जाता है।

पिछले मॉड्यूल द्वारा उत्पन्न मध्यवर्ती कोड बाद के मॉड्यूल के इनपुट के रूप में प्रदान किया जाता है।

यह प्रक्रिया तब तक चलती है जब तक टारगेट प्रोग्राम तैयार नहीं हो जाता।

मल्टी-पास कंपाइलर सिंगल-पास की तुलना में धीमा है लेकिन यह मुख्य मेमोरी में कम जगह लेता है क्योंकि इसका केवल एक मॉड्यूल एक समय में मुख्य मेमोरी में रखा जाता है।

उदाहरण: जावा कंपाइलर

यह भी पढ़े: फेसबुक वीडियो डाउनलोड कैसे करें? डेस्‍कटॉप या मोबाइल पर

कम्पाइलर क्या है? पर अक्सर पूछे जाने वाले प्रश्न

FAQ on Compiler Kya Hai

✔️ क्या एक कंपाइलर कई प्रोग्रामिंग लैंग्वेज को हैंडल कर सकता है?

कुछ कंपाइलर कई प्रोग्रामिंग लैंग्वेजेज को संभालने के लिए डिज़ाइन किए गए हैं, जबकि अन्य किसी विशेष भाषा के लिए विशिष्ट हैं। एकाधिक लैंग्वेजेज को संभालने की क्षमता कंपाइलर के डिजाइन और क्षमताओं पर निर्भर करती है।

✔️ क्या कंपाइलर और इंटरप्रेटर एक ही हैं?

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

✔️ क्या ओपन-सोर्स कंपाइलर्स उपलब्ध हैं?

हां, विभिन्न प्रोग्रामिंग लैंग्वेजेज के लिए कई ओपन सोर्स कंपाइलर उपलब्ध हैं। उदाहरणों में C, C++ और अन्य लैंग्वेजेज के लिए GCC (GNU कंपाइलर कलेक्शन) और LLVM (लो-लेवल वर्चुअल मशीन) कंपाइलर इन्फ्रास्ट्रक्चर शामिल हैं, जो कई लैंग्वेजेज को सपोर्ट करता है।

✔️ कौन सा बेहतर है: कंपाइलर या इंटरप्रेटर?

डिबगिंग के मामले में इंटरप्रेटर उपयोगी है, लेकिन यह धीमा है और एक कंपाइलर पूर्ण कोड के लिए जाता है, त्रुटि समाधान चुनौतीपूर्ण हो जाता है। इसलिए, कौन सा बेहतर है, पूरी तरह से इस बात पर निर्भर करता है कि यूजर्स को कौन सा काम करना है।

✔️ कौन सा फास्‍ट है: इंटरप्रेटर या कंपाइलर?

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

✔️ एक Decompiler क्या है?

यह मशीन कोड को सोर्स कोड में बदल देता है। यह कंपाइलर का उल्टा है।

अन्य टिप्‍स जो आपके काम के हैं:

Interpreter in Hindi: एप्लीकेशन, प्रकार, फायदे और नुकसान

Kernel in Hindi: परिभाषा, प्रकार और कार्य

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top