कंपाइलर डिज़ाइन क्या है? प्रकार, निर्माण उपकरण, उदाहरण

कम्पाइलर क्या है?

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

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

संकलक

कम्पाइलर्स की विशेषताएं

  • यथार्थता
  • संकलन की गति
  • कोड का सही अर्थ सुरक्षित रखें
  • लक्ष्य कोड की गति
  • वैध और अवैध कार्यक्रम संरचनाओं को पहचानें
  • अच्छी त्रुटि रिपोर्टिंग/हैंडलिंग
  • कोड डिबगिंग सहायता

कम्पाइलर के प्रकार

कंपाइलर के विभिन्न प्रकार निम्नलिखित हैं:

  • सिंगल पास कम्पाइलर
  • दो पास कम्पाइलर
  • मल्टीपास कम्पाइलर

सिंगल पास कंपाइलर

सिंगल पास कंपाइलर
सिंगल पास कंपाइलर

सिंगल पास में कम्पाइलर सोर्स कोड को सीधे मशीन कोड में बदल देता है। उदाहरण के लिए, पास्कल भाषा।

दो पास कम्पाइलर

दो पास कम्पाइलर
दो पास कम्पाइलर

दो पास कंपाइलर को दो खंडों में विभाजित किया गया है, अर्थात।

  1. फ़्रंट एंड: यह विधिक कोड को मध्यवर्ती प्रतिनिधित्व (आई.आर.) में मैप करता है।
  2. पिछला भाग: यह IR को लक्ष्य मशीन पर मैप करता है

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

मल्टीपास कम्पाइलर

मल्टीपास कम्पाइलर
मल्टीपास कम्पाइलर

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

कंपाइलर के कार्य

कंपाइलर द्वारा निष्पादित मुख्य कार्य निम्नलिखित हैं:

  • स्रोत प्रोग्राम को टुकड़ों में तोड़ देता है और उन पर व्याकरणिक संरचना लागू करता है
  • आपको मध्यवर्ती प्रतिनिधित्व से वांछित लक्ष्य कार्यक्रम का निर्माण करने और प्रतीक तालिका बनाने की अनुमति देता है
  • स्रोत कोड संकलित करता है और उसमें त्रुटियों का पता लगाता है
  • सभी चरों और कोडों का भंडारण प्रबंधित करें.
  • पृथक संकलन के लिए समर्थन
  • संपूर्ण कार्यक्रम को पढ़ें, उसका विश्लेषण करें, तथा शब्दार्थिक रूप से समतुल्य अनुवाद करें
  • मशीन के प्रकार के आधार पर स्रोत कोड को ऑब्जेक्ट कोड में अनुवाद करना

कंपाइलर का इतिहास

कंपाइलर के इतिहास के महत्वपूर्ण मील के पत्थर इस प्रकार हैं:

  • "कंपाइलर" शब्द का पहली बार प्रयोग 1950 के दशक के प्रारंभ में ग्रेस मरे हूपर द्वारा किया गया था।
  • पहला कंपाइलर जॉन बैकम और उनके समूह द्वारा 1954 और 1957 के बीच बनाया गया था IBM.
  • कोबोल पहला था प्रोग्रामिंग भाषा जिसे 1960 में कई प्लेटफार्मों पर संकलित किया गया था
  • स्कैनिंग और पार्सिंग मुद्दों का पूर्ण समाधान प्रदान करने के लिए 1960 और 1970 के दशक में अध्ययन किया गया।

भाषा प्रसंस्करण प्रणालियों के लिए चरण

कम्पाइलर की अवधारणा के बारे में जानने से पहले, आपको कुछ अन्य टूल्स को समझना होगा जो कम्पाइलर के साथ काम करते हैं।

भाषा प्रसंस्करण प्रणालियों के लिए चरण
भाषा प्रसंस्करण प्रणालियों के लिए चरण
  • प्रीप्रोसेसरप्रीप्रोसेसर को कंपाइलर का एक हिस्सा माना जाता है। यह एक ऐसा उपकरण है जो कंपाइलर के लिए इनपुट तैयार करता है। यह मैक्रो प्रोसेसिंग, ऑग्मेंटेशन, लैंग्वेज एक्सटेंशन आदि से संबंधित है।
  • दुभाषिया: इंटरप्रेटर कंपाइलर की तरह होता है जो उच्च-स्तरीय भाषा को निम्न-स्तरीय मशीन भाषा में अनुवाद करता है। दोनों के बीच मुख्य अंतर यह है कि इंटरप्रेटर कोड को लाइन दर लाइन पढ़ता और बदलता है। कंपाइलर एक बार में पूरा कोड पढ़ता है और मशीन कोड बनाता है।
  • कोडांतरक: यह असेंबली भाषा कोड को मशीन की समझ में आने वाली भाषा में अनुवाद करता है। असेंबलर का आउटपुट परिणाम एक ऑब्जेक्ट फ़ाइल के रूप में जाना जाता है जो मशीन निर्देश के साथ-साथ इन निर्देशों को मेमोरी में संग्रहीत करने के लिए आवश्यक डेटा का एक संयोजन है।
  • संयोजकलिंकर आपको विभिन्न ऑब्जेक्ट फ़ाइलों को लिंक करने और मर्ज करने में मदद करता है ताकि एक निष्पादन योग्य फ़ाइल बनाई जा सके। ये सभी फ़ाइलें अलग-अलग असेंबलर के साथ संकलित की गई होंगी। लिंकर का मुख्य कार्य प्रोग्राम में कॉल किए गए मॉड्यूल की खोज करना और मेमोरी लोकेशन का पता लगाना है जहाँ सभी मॉड्यूल संग्रहीत हैं।
  • लोडरलोडर ऑपरेटिंग सिस्टम का एक हिस्सा है, जो निष्पादन योग्य फ़ाइलों को मेमोरी में लोड करने और उन्हें चलाने का कार्य करता है। यह प्रोग्राम के आकार की गणना भी करता है जिससे अतिरिक्त मेमोरी स्पेस बनता है।
  • पार संकलककंपाइलर डिजाइन में क्रॉस कंपाइलर एक प्लेटफॉर्म है जो आपको निष्पादन योग्य कोड उत्पन्न करने में मदद करता है।
  • स्रोत-से-स्रोत संकलकसोर्स टू सोर्स कंपाइलर एक शब्द है जिसका उपयोग तब किया जाता है जब एक प्रोग्रामिंग भाषा के स्रोत कोड को किसी अन्य भाषा के स्रोत कोड में अनुवादित किया जाता है।

कंपाइलर निर्माण उपकरण

कंप्यूटर से जुड़ी तकनीकें दुनिया भर में फैलने के साथ ही कंपाइलर निर्माण उपकरण भी शुरू किए गए। इन्हें कंपाइलर-कंपाइलर, कंपाइलर-जेनरेटर या ट्रांसलेटर के नाम से भी जाना जाता है।

ये उपकरण कंपाइलर के घटक को निर्दिष्ट करने और कार्यान्वित करने के लिए विशिष्ट भाषा या एल्गोरिदम का उपयोग करते हैं। कंपाइलर निर्माण उपकरण के उदाहरण निम्नलिखित हैं।

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

कम्पाइलर का उपयोग क्यों करें?

  • कंपाइलर सम्पूर्ण प्रोग्राम का सत्यापन करता है, इसलिए कोई वाक्यविन्यास या अर्थगत त्रुटियाँ नहीं होतीं।
  • निष्पादन योग्य फ़ाइल को कंपाइलर द्वारा अनुकूलित किया जाता है, इसलिए यह तेजी से निष्पादित होती है।
  • आपको मेमोरी में आंतरिक संरचना बनाने की अनुमति देता है।
  • प्रोग्राम को उसी मशीन पर निष्पादित करने की कोई आवश्यकता नहीं है जिस पर इसे बनाया गया था।
  • संपूर्ण कार्यक्रम का अन्य भाषा में अनुवाद करें.
  • डिस्क पर फ़ाइलें उत्पन्न करें.
  • फ़ाइलों को निष्पादन योग्य प्रारूप में लिंक करें.
  • वाक्यविन्यास त्रुटियों और डेटा प्रकारों की जाँच करें.
  • यह आपको भाषा के अर्थ विज्ञान की समझ बढ़ाने में मदद करता है।
  • भाषा प्रदर्शन संबंधी समस्याओं को संभालने में सहायता करता है।
  • एक गैर-तुच्छ प्रोग्रामिंग परियोजना के लिए अवसर.
  • कंपाइलर के निर्माण के लिए प्रयुक्त तकनीकें अन्य प्रयोजनों के लिए भी उपयोगी हो सकती हैं।

कम्पाइलर्स का अनुप्रयोग

  • कंपाइलर डिज़ाइन उच्च स्तरीय प्रोग्रामिंग भाषाओं के पूर्ण कार्यान्वयन में मदद करता है।
  • कंप्यूटर के लिए समर्थन अनुकूलन Archiटेक्चर समानांतरवाद.
  • मशीनों के नए मेमोरी पदानुक्रम का डिज़ाइन।
  • अनुवाद कार्यक्रमों के लिए व्यापक रूप से उपयोग किया जाता है।
  • अन्य सॉफ्टवेयर उत्पादकता उपकरणों के साथ उपयोग किया जाता है।

सारांश

  • कंपाइलर एक कंप्यूटर प्रोग्राम है जो उच्च-स्तरीय भाषा में लिखे गए स्रोत कोड को निम्न-स्तरीय मशीन भाषा में बदलने में आपकी सहायता करता है।
  • शुद्धता, संकलन की गति, कोड का सही अर्थ संरक्षित रखना कंपाइलर डिजाइन की कुछ महत्वपूर्ण विशेषताएं हैं।
  • कंपाइलर तीन भागों में विभाजित हैं 1) सिंगल पास कंपाइलर 2) टू पास कंपाइलर, और 3) मल्टीपास कंपाइलर।
  • "कंपाइलर" शब्द का पहली बार प्रयोग 1950 के दशक के आरम्भ में ग्रेस मरे हूपर द्वारा किया गया था।
  • भाषा प्रसंस्करण प्रणाली के चरण हैं: प्रीप्रोसेसर, इंटरप्रेटर, असेंबलर, लिंकर/लोडर।
  • महत्वपूर्ण कंपाइलर निर्माण उपकरण हैं 1) स्कैनर जनरेटर, 2) सिंटेक्स - 3) निर्देशित अनुवाद इंजन, 4) पार्सर जनरेटर, 5) स्वचालित कोड जनरेटर।
  • कंपाइलर का मुख्य कार्य संपूर्ण प्रोग्राम को सत्यापित करना है, ताकि कोई वाक्यविन्यास या अर्थ संबंधी त्रुटियाँ न हों।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: