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

कम्पाइलर क्या है?
कंपाइलर एक कंप्यूटर प्रोग्राम है जो उच्च स्तरीय प्रोग्रामिंग भाषा में लिखे गए कोड को मशीन कोड में बदलता है। यह एक ऐसा प्रोग्राम है जो मानव-पठनीय कोड को कंप्यूटर प्रोसेसर द्वारा समझी जाने वाली भाषा (बाइनरी 1 और 0 बिट) में अनुवादित करता है। कंप्यूटर संबंधित कार्यों को करने के लिए मशीन कोड को प्रोसेस करता है।
A संकलक इसे उस प्रोग्रामिंग भाषा के सिंटैक्स नियम का पालन करना चाहिए जिसमें इसे लिखा गया है। हालाँकि, कंपाइलर केवल एक प्रोग्राम है और उस प्रोग्राम में पाई गई त्रुटियों को ठीक नहीं कर सकता है। इसलिए, यदि आप कोई गलती करते हैं, तो आपको अपने प्रोग्राम के सिंटैक्स में बदलाव करने की आवश्यकता है। अन्यथा, यह संकलित नहीं होगा।
दुभाषिया क्या है?
इंटरप्रेटर एक कंप्यूटर प्रोग्राम है, जो प्रत्येक उच्च-स्तरीय प्रोग्राम स्टेटमेंट को मशीन कोड में परिवर्तित करता है। इसमें सोर्स कोड, प्री-कंपाइल्ड कोड और स्क्रिप्ट शामिल हैं। कंपाइलर और इंटरप्रेटर दोनों एक ही काम करते हैं जो उच्च स्तरीय प्रोग्रामिंग भाषा को मशीन कोड में बदलना है। हालाँकि, एक कंपाइलर प्रोग्राम चलाने से पहले कोड को मशीन कोड में बदल देगा (एक exe बनाएँ)। प्रोग्राम चलाने पर इंटरप्रेटर कोड को मशीन कोड में बदल देते हैं।
कंपाइलर और इंटरप्रेटर के बीच अंतर
कंपाइलर और इंटरप्रेटर के बीच महत्वपूर्ण अंतर इस प्रकार हैं:
अंतर का आधार | संकलक | दुभाषिया |
---|---|---|
प्रोग्रामिंग चरण |
|
|
फायदा | प्रोग्राम कोड पहले से ही मशीन कोड में अनुवादित है। इसलिए, कोड निष्पादन समय कम है। | दुभाषियों का उपयोग करना आसान है, विशेषकर शुरुआती लोगों के लिए। |
हानि | आप स्रोत कोड पर वापस जाए बिना प्रोग्राम में परिवर्तन नहीं कर सकते। | व्याख्या किए गए प्रोग्राम उन कंप्यूटरों पर चलाए जा सकते हैं जिनमें संबंधित इंटरप्रेटर मौजूद हो। |
मशीन कोड | मशीन भाषा को डिस्क पर मशीन कोड के रूप में संग्रहीत करें | मशीन कोड को बिल्कुल भी सहेजना नहीं। |
कार्यकारी समय | संकलित कोड तेजी से चलता है | व्याख्या किया गया कोड धीमी गति से चलता है |
आदर्श | यह भाषा अनुवाद लिंकिंग-लोडिंग मॉडल पर आधारित है। | यह व्याख्या पद्धति पर आधारित है। |
कार्यक्रम निर्माण | आउटपुट प्रोग्राम (exe के रूप में) उत्पन्न करता है जिसे मूल प्रोग्राम से स्वतंत्र रूप से चलाया जा सकता है। | आउटपुट प्रोग्राम उत्पन्न न करें। इसलिए वे निष्पादन के दौरान हर समय स्रोत प्रोग्राम का मूल्यांकन करते हैं। |
निष्पादन | प्रोग्राम निष्पादन संकलन से अलग होता है। यह तभी किया जाता है जब संपूर्ण आउटपुट प्रोग्राम संकलित हो जाता है। | प्रोग्राम निष्पादन व्याख्या प्रक्रिया का एक हिस्सा है, इसलिए इसे लाइन दर लाइन निष्पादित किया जाता है। |
स्मृति आवश्यकता | Target प्रोग्राम स्वतंत्र रूप से निष्पादित होते हैं और उन्हें मेमोरी में कंपाइलर की आवश्यकता नहीं होती है। | अनुवाद के दौरान दुभाषिया स्मृति में मौजूद रहता है। |
के लिए सबसे उपयुक्त | विशिष्ट लक्ष्य मशीन तक सीमित है और पोर्ट नहीं किया जा सकता। सी और C++ एक सबसे लोकप्रिय प्रोग्रामिंग भाषा है जो संकलन मॉडल का उपयोग करती है। | वेब वातावरण के लिए, जहाँ लोड समय महत्वपूर्ण है। सभी विस्तृत विश्लेषण किए जाने के कारण, संकलन में अपेक्षाकृत अधिक समय लगता है, यहाँ तक कि छोटे कोड को भी संकलित करने में, जिसे कई बार नहीं चलाया जा सकता। ऐसे मामलों में, इंटरप्रेटर बेहतर होते हैं। |
कोड अनुकूलन | कंपाइलर पूरे कोड को पहले से ही देख लेता है। इसलिए, वे बहुत सारे ऑप्टिमाइज़ेशन करते हैं जिससे कोड तेज़ी से चलता है | इंटरप्रेटर कोड को लाइन दर लाइन देखते हैं, और इस प्रकार अनुकूलन कम्पाइलर जितना मजबूत नहीं होता |
गतिशील टाइपिंग | इसे क्रियान्वित करना कठिन है, क्योंकि कम्पाइलर यह अनुमान नहीं लगा सकते कि टर्न टाइम पर क्या होगा। | व्याख्या की गई भाषाएँ गतिशील टाइपिंग का समर्थन करती हैं |
प्रयोग | यह उत्पादन वातावरण के लिए सबसे उपयुक्त है | यह कार्यक्रम और विकास वातावरण के लिए सबसे उपयुक्त है। |
त्रुटि निष्पादन | कंपाइलर संकलन के समय सभी त्रुटियाँ और चेतावनी प्रदर्शित करता है। इसलिए, आप त्रुटियों को ठीक किए बिना प्रोग्राम नहीं चला सकते | इंटरप्रेटर एक ही कथन को पढ़ता है और यदि कोई त्रुटि है तो उसे दिखाता है। अगली पंक्ति की व्याख्या करने के लिए आपको त्रुटि को ठीक करना होगा। |
निवेश | इसमें एक संपूर्ण कार्यक्रम लगता है | इसमें कोड की एक ही पंक्ति लगती है। |
उत्पादन | कंप्लायर्स मध्यवर्ती मशीन कोड उत्पन्न करता है। | इंटरप्रेटर कभी भी कोई मध्यवर्ती मशीन कोड उत्पन्न नहीं करता। |
त्रुटियाँ | संकलन के बाद सभी त्रुटियों को एक ही समय पर प्रदर्शित करें। | प्रत्येक पंक्ति की सभी त्रुटियों को एक-एक करके प्रदर्शित करता है। |
संबंधित प्रोग्रामिंग भाषाएं | C, C++, सी#, स्काला, Java सभी कंपाइलर का उपयोग करें. | PHP, पर्ल, माणिक एक दुभाषिया का उपयोग करता है. |
कंपाइलर की भूमिका
- कंपाइलर स्रोत कोड को पढ़ता है, निष्पादन योग्य कोड आउटपुट करता है
- उच्च-स्तरीय भाषा में लिखे गए सॉफ़्टवेयर को ऐसे निर्देशों में अनुवादित करता है जिन्हें कंप्यूटर समझ सकता है। यह प्रोग्रामर द्वारा लिखे गए टेक्स्ट को ऐसे प्रारूप में परिवर्तित करता है जिसे CPU समझ सकता है।
- संकलन की प्रक्रिया अपेक्षाकृत जटिल है। इसमें प्रोग्राम का विश्लेषण और प्रसंस्करण करने में बहुत समय लगता है।
- निष्पादन योग्य परिणाम मशीन-विशिष्ट बाइनरी कोड का कुछ रूप होता है।
यह भी जांचें: - शुरुआती लोगों के लिए कंपाइलर डिज़ाइन ट्यूटोरियल
दुभाषिया की भूमिका
- इंटरप्रेटर RUN समय के दौरान स्रोत कोड को लाइन-दर-लाइन रूपांतरित करता है।
- इंटरप्रेट उच्च स्तरीय भाषा में लिखे गए प्रोग्राम को मशीन स्तरीय भाषा में पूर्णतः अनुवादित करता है।
- इंटरप्रेटर प्रोग्राम के क्रियान्वयन के दौरान उसके मूल्यांकन और संशोधन की अनुमति देता है।
- कार्यक्रम के विश्लेषण और प्रसंस्करण में अपेक्षाकृत कम समय व्यतीत होता है
- कंपाइलर की तुलना में प्रोग्राम का निष्पादन अपेक्षाकृत धीमा है
उच्च स्तरीय भाषाएँ
उच्च स्तरीय भाषाएँ, जैसे C, C++, जावा, आदि, अंग्रेजी के बहुत करीब हैं। यह प्रोग्रामिंग प्रक्रिया को आसान बनाता है। हालाँकि, इसे निष्पादन से पहले मशीन भाषा में अनुवादित किया जाना चाहिए। यह अनुवाद प्रक्रिया या तो कंपाइलर या इंटरप्रेटर द्वारा संचालित की जाती है। इसे सोर्स कोड के रूप में भी जाना जाता है।
मशीन कोड
मशीन भाषाएँ हार्डवेयर के बहुत करीब होती हैं। हर कंप्यूटर की अपनी मशीन भाषा होती है। मशीन भाषा के प्रोग्राम बाइनरी पैटर्न की श्रृंखला से बने होते हैं। (उदाहरण के लिए 110110) यह उन सरल ऑपरेशनों को दर्शाता है जिन्हें कंप्यूटर द्वारा निष्पादित किया जाना चाहिए। मशीन भाषा के प्रोग्राम निष्पादन योग्य होते हैं ताकि उन्हें सीधे चलाया जा सके।
वस्तु कोड
सोर्स कोड के संकलन पर, इंटेल, एएमडी और एआरएम जैसे विभिन्न प्रोसेसर के लिए उत्पन्न मशीन कोड अलग-अलग होता है। कोड को पोर्टेबल बनाने के लिए, सोर्स कोड को पहले ऑब्जेक्ट कोड में परिवर्तित किया जाता है। यह एक मध्यवर्ती कोड (मशीन कोड के समान) है जिसे कोई भी प्रोसेसर नहीं समझ पाएगा। रन टाइम पर, ऑब्जेक्ट कोड अंतर्निहित प्लेटफ़ॉर्म के मशीन कोड में परिवर्तित हो जाता है।
Java संकलित और व्याख्यायित दोनों है.
कम्पाइलर के सापेक्ष लाभों का फायदा उठाने के लिए कुछ प्रोग्रामिंग भाषा जैसे इंटरप्रेटर का उपयोग किया जाता है Java संकलित और व्याख्यायित दोनों हैं। Java कोड को ही ऑब्जेक्ट कोड में संकलित किया जाता है। रन टाइम पर, JVM ऑब्जेक्ट कोड को लक्ष्य कंप्यूटर के मशीन कोड में परिवर्तित करता है।
यह भी जांचें: - Java शुरुआती लोगों के लिए ट्यूटोरियल: कोर सीखें Java प्रोग्रामिंग