What is Compiler in Hindi

एक कम्पाइलर एक software program है जो की transform करता है high-level source code को जो की एक developer के द्वारा लिखा गया है, एक high-level प्रोग्रामिंग भाषा में उसे एक low level object code machine language में, और जिसे की Processor के द्वारा आसानी से साझा किया जा सके. इस प्रक्रिया को जिसमें high-level programming को machine language में बदला जाता है उसे Compilation कहा जाता है. एक कंपाइलर एक अनुवादक है जो उच्च-स्तरीय भाषा को मशीन भाषा में परिवर्तित करता है उच्च-स्तरीय भाषा एक डेवलपर द्वारा लिखी गई है और मशीन भाषा प्रोसेसर द्वारा समझी जा सकती है। कंपाइलर का उपयोग प्रोग्रामर को त्रुटियों को दिखाने के लिए किया जाता है। संकलक का मुख्य उद्देश्य कार्यक्रम के अर्थ को बदलने के बिना एक भाषा में लिखे गए कोड को बदलना है।

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

Contents

What is Compiler in Hindi

एक कम्पाइलर एक software program होता है जो की ट्रांसफॉर्म करता है high-level source code को जो की एक developer के द्वारा लिखा गया है एक high-level programming language में उसे एक low level object code machine language में, जैसा की हमने ऊपर भी आपको बताया है की Compiler क्या है और इसकी technical definition क्या है, तो चलिए अब हम आपको Compiler की ही definition को बिलकुल ही आसान भाषा में समझाने वाला हूँ जिससे की एक non-technical व्यक्ति भी समझ सकता है. कुछ समय के लिए compiler के विषय में भूल जाईये और imagine करें की आप एक सुन्दर सी country को अपनी छुट्टी बिताने के लिए गए हुए हैं. इसमें जो एक बहुत ही बेसिक सी प्रॉब्लम है वो ये की आपको बोलना, लिखना और समझना केवल अपने regional language में आता है जो की है Hindi. लेकिन वहां उस देश के नागरिकों को केवल English के सिवा और कुछ नहीं आता है. तब ऐसे में आप वहां कैसे दूसरों के साथ communicate करेंगे।

प्रोग्राम को निष्पादित या चलाने के दौरान, कंपाइलर का पहला कार्य सभी भाषा स्टेटमेंट को एक के बाद एक वाक्यगत रूप से पार्स करना होता है और फिर .obj फाइल का निर्माण और अंत में एग्जीक्यूटेबल फाइल का निर्माण करना होता है (जो कि अंतिम कोड सही होने पर संभव है), संकलित कोड के आउटपुट को ऑब्जेक्ट कोड या कभी-कभी ऑब्जेक्ट मॉड्यूल कहा जाता है, (यह ध्यान दिया जाना चाहिए कि यह ऑब्जेक्ट फ़ाइल / ऑब्जेक्ट मॉड्यूल OOP से संबंधित नहीं है)।

दोस्तों जब हम computer को कुछ command करते हैं process करने के लिए, तब हम कुछ set of instructions-program लिखते हैं English language जैसे की c, c++, Java इत्यादि में जो की English में ही होती है और एक Language Translator की जरुरत होती है उसे convert करने के लिए binary language में जिससे की एक computer उसे आसानी से समझ सके. ऐसे में इस स्थान में Complier का इस्तमाल किया जाता है, जो की high level language को machine language में convert करता है।

कंपाइलर एक सॉफ्टवेयर प्रोग्राम है जो उच्च-स्तरीय स्रोत कोड को परिवर्तित करता है जो एक डेवलपर द्वारा उच्च-स्तरीय प्रोग्रामिंग भाषा में मशीन भाषा में एक निम्न-स्तरीय ऑब्जेक्ट कोड (बाइनरी कोड) में लिखा जाता है, जिसे प्रोसेसर द्वारा समझा जा सकता है. उच्च स्तरीय प्रोग्रामिंग को मशीन भाषा में परिवर्तित करने की प्रक्रिया को संकलन के रूप में जाना जाता है. प्रोसेसर ऑब्जेक्ट कोड को निष्पादित करता है, जो इंगित करता है कि प्रोसेसर के अंकगणितीय तर्क इकाई में बाइनरी हाई और लो सिग्नल की आवश्यकता होती है।

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

कंपाइलर पूरे कार्यक्रम की पुष्टि करता है, इसलिए कोई सिंटैक्स या शब्दार्थ त्रुटियाँ नहीं हैं.

निष्पादन योग्य फ़ाइल संकलक द्वारा अनुकूलित की जाती है, इसलिए यह तेजी से निष्पादित होती है.

आपको स्मृति में आंतरिक संरचना बनाने की अनुमति देता है.

उसी मशीन पर प्रोग्राम को निष्पादित करने की कोई आवश्यकता नहीं है जिसे यह बनाया गया था.

पूरे कार्यक्रम का अन्य भाषा में अनुवाद करें.

डिस्क पर फ़ाइलें उत्पन्न करें.

फ़ाइलों को एक निष्पादन योग्य प्रारूप में लिंक करें.

भाषा के शब्दार्थ की आपकी समझ को बढ़ाने में आपकी सहायता करता है.

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

 

एक कंपाइलर एक प्रोग्राम में स्रोत कोड फ़ाइलों को संकलित करने के बाद, प्रोग्राम को संशोधित नहीं किया जा सकता है. इसलिए, स्रोत कोड में कोई भी परिवर्तन किया जाना चाहिए और कार्यक्रम को फिर से शुरू किया जाना चाहिए, सौभाग्य से, अधिकांश आधुनिक संकलक यह पता लगा सकते हैं कि क्या बदलाव किए गए थे और केवल संशोधित फ़ाइलों को फिर से इकट्ठा करने की आवश्यकता थी, जो प्रोग्रामर को बहुत समय बचाता है. यह प्रोग्रामर्स के प्रोजेक्ट डेडलाइन को 90 या इसके आसपास के समय से 100 घंटे पहले कम करने में मदद कर सकता है।

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

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

एक कंपाइलर उच्च-स्तरीय भाषा में लिखा गया स्रोत कोड का अनुवाद मशीन भाषा में करता है। इस प्रकार परिणामस्वरूप आउटपुट एक Executable machine code होता है. सबसे आधुनिक कंपाइलर्स अपेक्षाकृत कुशल होते हैं जैसे: C++, CodeBlocks, Dev-C++, NetBeans, Eclipse आदि, प्रोग्रामिंग में कंपाइलर एक बहुत ही महत्वपूर्ण काम करता है, यह अनुवाद करता है, यह High-level language में लिखे गए कोड को मशीन भाषा में बदलता है, जैसे C प्रोग्रामिंग भाषा में लिखे गए कोड को मशीन भाषा में अनुवाद करता है. जो प्रोसेसर समझ सके और प्रोग्राम में लिखी गई क्रियाओं को Execute कर सके, शुरुआत में, कोई कॉम्पायल्ड भाषा नहीं थी, और प्रोग्रामर को सीधे मशीन कोड में प्रोग्राम लिखना पड़ता था, यही कारण है कि कॉम्पायल्ड भाषाओं का आविष्कार किया गया था क्योंकि machine code में प्रोग्राम लिखना बहुत कठिन था।

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

एक कंपाइलर जो मशीन की भाषा को उच्च-स्तरीय प्राकृतिक भाषा में परिवर्तित करता है, उसे डिकम्पाइलर कहा जाता है. कम्पाइलर्स जो सिस्टम पर चलने वाले ऑब्जेक्ट कोड का उत्पादन करते हैं, क्रॉस-कंपाइलर कहलाते हैं. अंत में, एक संकलक जो एक प्रोग्रामिंग भाषा को दूसरे में परिवर्तित करता है, भाषा अनुवादक कहलाता है. एक कंपाइलर चार प्रमुख चरणों को निष्पादित करता है:

Scanning

स्कैनर स्रोत कोड से एक बार में एक चरित्र को पढ़ता है और किस लाइन में कौन सा चरित्र मौजूद है, इस पर नज़र रखता है।

Lexical Analysis

संकलक उन वर्णों के अनुक्रम को परिवर्तित करता है जो स्रोत कोड में वर्णों की श्रृंखला (टोकन के रूप में जाना जाता है) में दिखाई देते हैं, जो एक विशिष्ट नियम द्वारा एक शाब्दिक विश्लेषक नामक कार्यक्रम से जुड़े होते हैं. एक प्रतीक तालिका का उपयोग लेक्सिकल एनालाइज़र द्वारा शब्द को स्रोत कोड में संग्रहीत करने के लिए किया जाता है जो उत्पन्न टोकन के अनुरूप होता है।

Syntactic Analysis

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

Semantic Analysis

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

कम्पाइलर कैसे काम करता है?

Compiler Computer सॉफ्टवेयर है जो किसी एक प्रोग्रामिंग भाषा में लिखे हुए Computer कोड जिसे हम सोर्स कोड कहते हैं को ऑब्जेक्ट कोड (मशीनी भाषा) में बदल देता हैं हम जितनी भी प्रोग्रामिंग भाषाएं देखते हैं उन सब में सोर्स कोड लिखने के लिए एक हाई लेवल की भाषा का उपयोग किया जाता है, जैसा की आप सभी जानते हैं हमारा Computer केवल मशीनी भाषा को ही जानता है इसलिए जिस भी Programming Language का उपयोग करके सोर्स कोड या Computer प्रोग्राम लिखा जाता है उसे मशीनी भाषा में बदलना आवश्यक होता है ताकि उस कोड से हम जो काम Computer से करवाना चाह रहे हैं उसे करवा सके ऐसा तभी संभव हो सकता है जब हम Computer की भाषा में ही बताएं की क्या काम करना है और कैसे करना है ताकि Computer उसे समझ सके और कार्य कर सके, Computer द्वारा समझी जाने वाली इसी भाषा को मशीनी भाषा कहते हैं. परन्तु हमें मशीनी भाषा में Computer को समझाना बहुत ही मुश्किल कार्य है इसलिए हाई लेवल लैंग्वेज में लिखे कोड को मशीन भाषा में बदलने के लिए अनुवादक या कम्पाइलर बनाया गया है।

दोस्तों ऊपर हमने आपको Compiler की तकनीकी परिभाषा से परिचित करा दिया है, जैसे की सभी लोग अक्सर करते हैं, लेकिन अभी चलिए आपको में Compiler की ही परिभाषा को बिलकुल ही आसान भाषा में समझाने वाला हूँ जिससे की एक गैर तकनिकि व्यक्ति भी समझ सकता है. कुछ समय के लिए compiler के विषय में भूल जाईये और imagine करें की आप एक सुन्दर सी country को अपनी छुट्टी बिताने के लिए गए हुए हैं. इसमें जो एक बहुत ही basic सी problem है वो ये की आपको बोलना, लिखना और समझना केवल अपने regional language में आता है जो की है हिंदी, लेकिन वहां उस देश के नागरिकों को केवल इंग्लिश के सिवा और कुछ नहीं आता है. तब ऐसे में आप वहां कैसे दूसरों के साथ communicate करेंगे, ऐसे में इसका एक ही solution हैं की आपको एक language translator की जरुरत पड़ेगी जो की एक इन्सान या एक बुक या एक App भी हो सकता है. ये language translator आपकी हिंदी को इंग्लिश में translate करेगा ताकि व दूसरा व्यक्ति आपकी बातों को समझ सके. साथ में वो इंग्लिश को हिंदी में भी convert करेगा तक आपको भी उनकी भाषा समझ में आ सके.

Compiler Phases Hindi

संकलन प्रक्रिया में विभिन्न चरणों का क्रम होता है. प्रत्येक चरण एक प्रतिनिधित्व में स्रोत कार्यक्रम लेता है और दूसरे प्रतिनिधित्व में उत्पादन करता है. प्रत्येक चरण अपने पिछले चरण से इनपुट लेता है. संकलक के विभिन्न चरण हैं −

Lexical Analysis

लेक्सिकल एनालाइजर चरण संकलन प्रक्रिया का पहला चरण है। यह इनपुट के रूप में स्रोत Code लेता है. यह एक समय में स्रोत प्रोग्राम को एक वर्ण पढ़ता है और इसे सार्थक लेक्समेस में परिवर्तित करता है. लेक्सिकल एनालाइजर टोकन के रूप में इन लेक्सेम का प्रतिनिधित्व करता है।

Syntax Analysis

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

Semantic Analysis

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

Code Optimization

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

Code Generation

Code Generation संकलन प्रक्रिया का अंतिम चरण है. यह इनपुट के रूप में अनुकूलित मध्यवर्ती Code लेता है और इसे लक्ष्य मशीन भाषा में मैप करता है. कोड जनरेटर निर्दिष्ट कंप्यूटर के मशीन कोड में मध्यवर्ती Code का अनुवाद करता है।

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

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