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

यह उन लोगों के बीच परिचित है जो कंप्यूटर प्रोग्रामिंग के क्षेत्र से संबंधित हैं या जो प्रोग्रामिंग भाषा विकसित करते हैं।

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

अगर आप एक सॉफ्टवेयर डेवलपर बनना चाहते हैं या कंप्यूटर विज्ञान के बारे में ज्ञान प्राप्त करने में रुचि रखते हैं, तो आपको कंपाइलर्स के बारे में अच्छी तरह से जानना होगा।

तो, इस लेख में आप जान पाऐगे कि Compiler क्या है और कंपाइलर कितने प्रकार के होते हैं। कंपाइलर्स के क्या उपयोग हैं, वे कैसे काम करते हैं और उनके क्या फायदे हैं? तो आइये सबसे पहले विस्तार से जानलेते हैं कि कंपाइलर क्या है।

Compiler क्या है?

यह एक कंप्यूटर प्रोग्राम या सॉफ्टवेयर प्रोग्राम है जो source program को machine program में अनुवादित करता है।

इस प्रोग्राम का उपयोग मशीन कोड या कंप्यूटर भाषा को जेनरेट करने के लिए किया जाता है यानि high-level programming langue को low-level computer programming langue मे कन्वर्ट करता है। वे कंप्यूटर सिस्टम को पीछे से चलाए रखने का काम करता है।

इसका उपयोग source code को परिवर्तित करने के लिए किया जाता है जो कई अलग-अलग प्रोग्रामिंग भाषाओं, जैसे सी, सी++ और जावा स्क्रिप्ट में लिखा जाता है।

इसका उपयोग कोड को अनुकूलित करने और यह सुनिश्चित करने के लिए किया जाता है कि स्रोत कोड सही ढंग से निष्पादित हो और कंप्यूटर के लिए कोड को समझना आसान हो।

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

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

कंपाइलर्स का उपयोग

आज पुरा जमाना computer पर depend है क्योकि ये एक ऐसी intelligent machine है जिसने लोगो कि नमुमकिन काम को भी आसान बना दिया है।आज ऐसा कोई क्षेत्र नही जहा computer का इस्तेमाल न किया जाता हो।

लेकिन हम सभी जानते है कि एक computer को इतना ताकरवर बनाने के पिछे computer programming की बड़ी भुमिका होती है, क्योकि विना programming या computer language के ये एक बेजान मशिन के अलाबा ओर कुछ नही है।

क्योकि एक computer खुदसे कोई काम नही कर सकता जब तक न उसे कोई instructions न मिले। Programming ही है जो एक कंप्यूटर को निर्देश देता है कि उसे क्या करना है।

इतना तो हम सभी कोो पता है कि कंप्यूटर Human language को नही समझता। उसे किया करना है इस बात को समझाने के लिए उसीकि भाषा मे निर्देश देना होता है जिसे हम Machine language के तौरपर जानते है।

जैसेकि Java, C++, Python, यह सभी Machine language का उदाहरण है। ये सभी high-level machine language होते है जिन्है Highly skilled और Professional programmer द्बारा डेवलप किया जाता है। शाएद आपको पता न हो कि कंप्यूटर कभी-कभी इन जटिल भाषाओ को समझने मे नकाम हो जाते है क्योकि एक कंप्यूटर केवल bytecode को ही आसानी से समझ पाता है और वही से Compiler का भुमिका शुरु होता।

Compiler दरसल एक interpreter कि तरह काम करता है जो प्रोग्रामिंग भाषा को मशीनि भाषा में परिवर्तित करता है ताकि कंप्यूटर उन निर्देशो को ठिक से समझ सके कि उसे करना क्या है।

Read Also

System software क्या है? कैसे काम करता है और इसके प्रकार

Computer Network क्या है?कैसे काम करता है?नेटवर्क के प्रकार

कंपाइलर के विभिन्न प्रकार क्या हैं?

इसको मुख्य रूप से तीन प्रकारों में वर्गीकृत किया गया है, लेकिन डिज़ाइन और कार्यक्षमताओ के आधार पर वे विभिन्न प्रकार के होते है:

  • Single Pass Compilers
  • Two Pass Compilers
  • Multi pass Compilers

यहां इसकी कुछ सामान्य प्रकार के बारे मे दिया गया हैं ताकी आप इसे वेहरत तरिके से समझ सके:

1. Single Pass Compiler: ये एक ही बार में पुरी source code को मशीन कोड में translate करने का काम करता हैं। ये वाक्यविन्यास से लेकर, सिमेंटिक विश्लेषण, कोड जनरेशन जैसे काम तेज़ी से करते है।

लेकिन इसमे त्रुटियो के जाँच करने कि क्षमता तुलनात्वक कम होता हैं क्योकि इसमे source code का गहराई से analyze नही किया जाता।

How does a compiler works in hindi

2. Two Pass Compiler: इसमे analyze की प्रक्रिया दो चरणों में विभाजित होता है और हर एक चरण एक pass होता है। पहले पास में, यह source code का केवल प्राथमिक विश्लेषण किया जाता है, और डेटा संरचनाओं और प्रतीक तालिकाओं का निर्माण किया जाता है।

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

Two Pass Compiler

3. Multi-pass compiler: प्रोग्राम को कार्यात्मक बनाने के लिए source code को कई अलग अलग अनुक्रमों में व्याख्या किया जाता है। प्रत्येक व्याख्याओ का एक विशिष्ट कार्य होता है और आउटपुट रेजल्टस को अगली प्रक्रिया के लिए इनपुट डेटा के रूप में उपयोग करता है।

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

4. Cross Compiler: एक क्रॉस-कंपाइलर एक प्लेटफ़ॉर्म या आर्किटेक्चर पर चलता है लेकिन एक अलग प्लेटफ़ॉर्म या आर्किटेक्चर के लिए कोड जेनरट करता है।

इसका उपयोग आमतौर पर एम्बेडेड सिस्टम के लिए सॉफ़्टवेयर विकसित करने या किसी हार्डवेयर प्लेटफ़ॉर्म को टारगेट करने के लिए किया जाता है।

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

5. Just-In-Time Compilers(JIT):

JIT मे निष्पादित होने से ठीक पहले, यानि रन टाइम (Runtime) पर कोड का अनुवाद करता है। मतलब ये प्रोग्राम निष्पादन के दौरान आवश्यकतानुसार कोड को जेनरट करता है।

इसका उपयोग आमतौर पर वर्चुअल मशीनों जैसे, जावा वर्चुअल मशीन, .NET कॉमन लैंग्वेज रनटाइम के दौरान किया जाता है और अनुकूलन के माध्यम से प्रदर्शन में सुधार लाता है।

6. Ahead-of-Time (AOT) Compilers: एओटी कंपाइलर, प्रोग्राम निष्पादित होने से पहले कोड का अनुवाद करता हैं और पूरे प्रोग्राम को समय से पहले मशीन कोड में संकलित किया जाता है,

जिसके परिणामस्वरूप एक स्टैंडअलोन निष्पादन होता है। यह खासकर C और C++ जैसी भाषाओं के साथ होता है, और संकलित कोड का एक अलग प्लेटफ़ॉर्म होता है।

7. Source-to-Source Compilers: इसे ट्रांसपिलर कंपाइलर के रूप में भी जाना जाता है।ये एक प्रोग्रामिंग भाषा में लिखे गए स्रोत कोड को लेते हैं और दूसरी समकक्ष भाषा बाले कोड में अनुवाद करते हैं।

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

8. Optimizing Compilers: ये जेनरेट किए गए मशीन कोड की दक्षता में सुधार लाने का काम करता हैं। वे कोड के प्रदर्शन को वहतर करने के लिए विभिन्न अनुकूलन तकनीकों का का उपयोग करता हैं, जैसेकि लूप अनरोलिंग, इनलाइनिंग आदि ।

Read Also

Data क्या है? data meaning in hindi और डेटा के प्रकार

URL क्या है? कैसे काम करता है? और यूआरएल के प्रकार

Compiler कैसे काम करता है?

जैसाकि मेने आपसे पहले भी जिकर किया कि कंपाइलर एक प्रोग्राम है जो प्रोग्रामिंग भाषा में लिखे जाने बाले source code को मशीनी कोड में बदल देता है जिसे एक कंप्यूटर आसानी से पढ़ या समझ सकता है और उस हिसाब से वे आगे आपना काम कर सकता है।

संकलन कि यह प्रक्रिया कई अलग-अलग चरणो मे होता हैं, और इसमे अलग-अलग तरीके से source code का विश्लेषण किया जाता है और उन्है कंप्यूटर द्बारा समझे जाने बाले भाषाओ मे परिवर्तन किया जाता है। वे कैसै काम करता है निचे इसके बारे में संक्षेप में बताया गया है:

1. Lexical Analysis:

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

2. Syntax Analysis:

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

3. Semantic Analysis:

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

4. Intermediate Code Generation:

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

5. Optimization:

यह संकलन का पांचवा चरण है जहां वे अर्थहीन निर्देशों को हटा देते हैं। यह विश्लेषण के पिछले चरण में उत्पन्न मध्यवर्ती कोड के प्रदर्शन को बेहतर बनाने का प्रयास करता है।

6. Code Generation:

यह संकलन का अंतिम चरण है जहाँ वे उन मध्यवर्ती कोड को मशीन भाषा कोड में परिवर्तित करते हैं जिसके माध्यम से कंप्यूटर बेहतर प्रदर्शन करते हैं। ये आम तौर पर एक निम्न-स्तरीय कंप्यूटर भाषा होती है जिसे कंप्यूटर प्रोसेसर आसानी से समझ सकता है।

Read Also

Cloud Storage क्या है? और कितने प्रकार के होते है?

Internet क्या है?इंटरनेट कैसे काम करता है?इंटरनेट के प्रकार

Interpreter क्या है?

इंटरप्रेटर एक कोर कंप्यूटर प्रोग्राम है जो प्रोग्रामिंग भाषा में लिखे गए निर्देशों को सीधे निष्पादित करता है। इंटरप्रेटर को पहले मशीन भाषा प्रोग्राम में संकलित करने की आवश्यकता नहीं होती है। वे मूल रूप से उच्च-स्तरीय कंप्यूटर प्रोग्रामिंग भाषाओं को निष्पादित करने के लिए लागू होते हैं।

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

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

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

विशेषताकंपाइलरइंटरप्रेटर
अनुवाद दृष्टिकोणनिष्पादन से पहले संपूर्ण स्रोत कोड को मशीन कोड या मध्यवर्ती कोड में अनुवादित करता है।स्रोत कोड का लाइन दर लाइन अनुवाद करता है, रनटाइम के दौरान इसे तुरंत निष्पादित करता है।
निष्पादन की गतिआम तौर पर तेजी से निष्पादन होता है क्योंकि चलने से पहले पूरे कोड को अनुकूलित और अनुवादित किया जाता है।निष्पादन गति के मामले में धीमी हो सकती है क्योंकि निष्पादन के दौरान कोड का तुरंत अनुवाद किया जाता है।
आउटपुटएक स्टैंडअलोन निष्पादन योग्य फ़ाइल या मध्यवर्ती कोड उत्पन्न करता है।एक स्टैंडअलोन निष्पादन योग्य उत्पन्न नहीं करता; स्रोत कोड को सीधे निष्पादित करता है।
डिबगिंगविकास और निष्पादन चरणों के बीच अलगाव के कारण डिबग करना अधिक चुनौतीपूर्ण हो सकता है।आम तौर पर डिबगिंग के लिए बेहतर समर्थन प्रदान करता है क्योंकि त्रुटियों को वास्तविक समय में पहचाना और संबोधित किया जा सकता है।
पोर्टेबिलिटीसंकलित कोड प्लेटफ़ॉर्म-विशिष्ट हो सकता है, जिसके लिए विभिन्न प्लेटफ़ॉर्म के लिए पुनर्संकलन की आवश्यकता होती है।अधिक पोर्टेबल हो सकता है, क्योंकि interpreter स्वयं विभिन्न प्लेटफार्मों पर चलता है, जिससे समान स्रोत कोड को विभिन्न प्रणालियों पर निष्पादित किया जा सकता है।
मेमरीसंकलित प्रोग्रामों में अक्सर छोटी मेमोरी फ़ुटप्रिंट होती है क्योंकि अनुकूलन पहले से किया जाता है।वास्तविक समय में व्याख्या किए गए कोड और डेटा संरचनाओं पर नज़र रखने की आवश्यकता के कारण इसमें बड़ी मेमोरी फ़ुटप्रिंट हो सकती है।
भाषाओं के उदाहरणC, C++, Java (bytecode के संकलन के बाद), आदि।Python, JavaScript, Ruby, आदि।
अनुकूलनआम तौर पर इसमें वैश्विक अनुकूलन के अधिक अवसर होते हैं क्योंकि यह एक ही बार में संपूर्ण कोड को संसाधित करता है।वैश्विक अनुकूलन के संदर्भ में सीमित क्योंकि यह लाइन दर लाइन काम करता है और इसमें कोड का स्थानीय दृश्य होता है।
हाइब्रिड के उदाहरणजस्ट-इन-टाइम (जेआईटी) कंपाइलर अनुकूलन उद्देश्यों के लिए रनटाइम के दौरान कुछ अनुवाद करते हैं।कुछ interpreters बेहतर प्रदर्शन के साथ व्याख्या के लचीलेपन को संयोजित करने के लिए जेआईटी संकलन का उपयोग करते हैं।
कार्यप्रवाहप्रोग्राम को निष्पादित करने से पहले एक अलग संकलन चरण की आवश्यकता होती है।अधिक इंटरैक्टिव विकास प्रक्रिया की अनुमति देता है क्योंकि परिवर्तनों का तुरंत परीक्षण किया जा सकता है।
Difference between Compiler and Interpreter

संकलन उच्च स्तरीय भाषा को निम्न स्तरीय भाषा में परिवर्तित करने की एक प्रक्रिया है, और प्रत्येक चरण के लिए अलग अलग तरीकों का उपयोग किया जाता है। ये उपयोग की जा रही प्रोग्रामिंग भाषा और कंपाइलर के आधार पर भिन्न होते हैं।

About The Author

Author and Founder digipole hindi

Biswajit

Hi! Friends I am BISWAJIT, Founder & Author of 'DIGIPOLE HINDI'. This site is carried a lot of valuable Digital Marketing related Information such as Affiliate Marketing, Blogging, Make Money Online, Seo, Technology, Blogging Tools, etc. in the form of articles. I hope you will be able to get enough valuable information from this site and will enjoy it. Thank You.