What is Compiler in Hindi

What is Compiler

एक Compiler एक special program है जो एक special program Language में लिखे गए statements को process करता है और उन्हें machine language या “code ” में बदल देता है जिसका उपयोग Computer का Processor करता है।

आम तौर पर, एक programmer एक editor का उपयोग करके एक समय में पास्कल या सी एक लाइन जैसी लैंग्वेज में language statements लिखता है। जो file बनाई जाती है उसमें source statement होता हैं। programmer तब उपयुक्त language compile रन करता है, file का नाम निर्दिष्ट करता है जिसमें source statement होते हैं।

Execute करते समय (रन होते समय), compiler पहले सभी Language statements को एक के बाद एक syntactic रूप से पार्स (या विश्लेषण) करता है और फिर, एक या अधिक क्रमिक चरणों या “पास” में, output code बनाता है, यह सुनिश्चित करता है कि statements जो संदर्भित करते हैं अन्य statements को अंतिम कोड में सही ढंग से संदर्भित किया जाता है।

Traditional रूप से, compilation के Output को object कोड या कभी-कभी object module कहा जाता है। (ध्यान दें कि यहां “object ” शब्द object -ओरिएंटेड प्रोग्रामिंग से संबंधित नहीं है।) object कोड मशीन कोड है जिसे Processor एक समय में एक instruction execute कर सकता है।

What is Compiler in Hindi

एक Compiler एक program है जो कुछ High level programming language (जैसे Java) में लिखे गए सोर्स program को कुछ computer architecture (जैसे Intel Pentium Architecture) के लिए machine code में translate करता है। जेनरेट किए गए machine code को बाद में हर बार अलग-अलग डेटा के खिलाफ कई बार Execute किया जा सकता है।

एक interpreter एक high-level programming language में लिखे गए एक executable source program के साथ-साथ इस प्रोग्राम के लिए data पढ़ता है, और यह कुछ परिणाम उत्पन्न करने के लिए डेटा के विरुद्ध प्रोग्राम चलाता है। एक उदाहरण unix shell interpreter है, जो operating system commands को अंतःक्रियात्मक रूप से चलाता है।

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

interpreter source program machine independent है क्योंकि यह मशीन कोड उत्पन्न नहीं करता है। (मशीन कोड में generate और translate के बीच अंतर पर ध्यान दें।)

Features of a Compiler in Hindi

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

  • compilation speed.
  • Machine code accuracy.
  • The meaning of the code should not change.
  • Machine code speed.
  • Good error detection.
  • Checking the code correctly according to grammar.
  • Uses/Applications of Compilers
  • Helps to make the code platform independent.
  • Makes the code free from syntax and semantic errors.
  • Creates executable files of code.
  • Translates code from one language to another.

Advantages of Compiler in Hindi

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

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

Disadvantages of Compiler in Hindi

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

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

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

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

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

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

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

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

Phases of a Compiler in Hindi

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

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

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

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

What is Compiler in Hindi
What is Compiler in Hindi

6. Intermediate Code Generation

इंटरमीडिएट कोड जनरेशन

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

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

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

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

7. Code Optimization

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

8. Code Generation

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

हमे उम्मीद है की आज का हमरा पोस्ट (What is Compiler in Hindi ) आप सभी को पसंद आया होगा. अगर आपको इस पोस्ट (What is Compiler in Hindi) से related कोई भी related कोई भी doubt हो तो हमे नेचे जरुर comment करे.

Leave a Reply

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

eighteen − 15 =