Compiler क्या है? कम्पाइलर एक कंप्यूटर का प्रोग्राम है जो हाई लेवल लैंग्वेज में लिखे गए सोर्स कोड को लो लेवल मशीन लैंग्वेज में परिवर्तित कर देता है. लेकिन कम्पाइलर कोड के अर्थ को नहीं बदलता। कम्पाइलर end कोड भी बनाता है जिसे एक्सेक्यूशन(कार्यान्यवय) और मेमोरी स्पेस के लिए अनुकूल किया जाता है.
आगे के लाइन में, हम कम्पाइलर के बारे में विस्तार से पढ़ने वाले है जैसे कम्पाइलर क्या है, इसके प्रकार क्या है?, इसके उपयोग, फायदे, नुकसान और कुछ महत्वपूर्ण जानकारिया। तो चलिए कम्पाइलर की ज्ञान की गंगा में डुबकी लगाते है और ज्ञान भरी मोतियों से अपना जीवन सुफल करते है.
कम्पाइलर क्या है?
कम्पाइलर एक सॉफ्टवेयर है जो सोर्स कोड को ऑब्जेक्ट कोड में परिवर्तित कर देता है. सरल शब्दों में कहु तो कम्पाइलर हाई लेवल लैंग्वेज को बाइनरी लैंग्वेज में बदल देता है.
कुछ कम्पाइलर ऐसे भी होते है जो हाई लेवल लैंग्वेज को इंटरमीडिएट स्टेप्स में असेंबली लैंग्वेज में बदल देता है और बाकि के कम्पाइलर इसे मशीन की लैंग्वेज में बदल देते है. सोर्स कोड के बदलने की प्रक्रिया को “compilation” कहते है.
Source Program का विश्लेषण
तीन मुख्य स्टेप से सोर्स कोड का विश्लेषण किया जा सकता है ,इन्हे बाद में भी विभाजित किया गया है:
- Linear Analysis
यहाँ कोड के करैक्टर को दाए से बाए पढ़ा जाता है , जिससे संग्रहित करैक्टर उत्पन्न होता है इन्हे टोकन कहा जाता है.
- Hierarchical Analysis
यहाँ पर टोकन को नेस्टेड तरीके से इन्हे क्रम के अनुसार अलग किया जाता है.
- Semantic Analysis
यहाँ पर हम पता लगाते है की सोर्स कोड के घटक प्रयोजन में ठीक है की नहीं।
कम्पाइलर के Phases/Structure
कम्पाइलर की कार्यविधि कई स्टेप में संपन्न होती है. हर एक चरण के पूरा होने पर एक आउटपुट प्राप्त होता है जो दूसरे चरण के लिए इनपुट के रूप में कार्य करता है.
1.Lexical Analyzer
यहाँ पर हाई लेवल लैंग्वेज सोर्स कोड होता है जिसे ये इनपुट के रूप में उपयोग करता है. यह इन सोर्स कोड को बाये से दाए स्कैन करता है, इसलिए इसे स्कैनर भी कहते है. यह सोर्स कोड के करैक्टर को लेक्सेस में स्टोर कर देता है. लेक्सेस करैक्टर का एक ग्रुप है जिसका कोई अर्थ निकलता है.
2.Syntax Analyzer
‘Parser’ शब्द Syntax Analyzer का दूसरा नाम है. lexical analyzer से जो आउटपुट से प्राप्त होता है वह इसके लिए इनपुट का काम करता है. यह सोर्स कोड में syntax errors का पता लगाता है. यह सभी टोकन के लिए एक पार्स ट्री का निर्माण करके काम करता है. ये पार्स कोड व्याकरण के अनुसार होने चाहिए तभी syntax सही हो सकता है.
3.Semantic Analyzer
यह syntax analyzer के पार्स ट्री की जाँच करता है. यह प्रोग्रामिंग लैंग्वेज में कोड की वैलिडिटी की जाँच करता है जैसे, डाटा के प्रकार। यह एक verified parse tree भी बनता है, इसलिए इसे annotated parse tree भी कहा जाता है. इसके आलावा भी ये फ्लो की जाँच और टाइप की जांच करता है.
4.Intermediate Code Generator (ICG)
यह इंटरमीडिएट कोड होता है जिसका अर्थ यह है की यह न तो हाई लेवल लैंग्वेज और न ही मशीन लैंग्वेज होता है. बाद इस कोड को मशीन लैंग्वेज में बदल दिया जाता है.
5.Code Optimizer
यह इंटरमीडिएट कोड में परिवर्तन करता है. इसका मुख्य कार्य ही परिवर्तन करना होता है ताकि यह कम साधनो का उपयोग करके निष्पादन किया जा सके. कोड को चाहे कितने भी बार परिवर्तन कर दे कोड का अर्थ वही होता है.
6.Target Code Generator
सबसे अंतिम स्टेप में , यहाँ परिवर्तन किये गए इंटरमीडिएट कोड को मशीन कोड में परिवर्तन कर दिया जाता है. मशीन कोड जो भी कोड उत्पन्न करता है वह किसी को भेजने योग्य होता है.
कम्पाइलर के यह सभी स्टेप दो भागो में विभाजित होते है:
a) Front End
lexical analysis, syntax analysis, semantic analysis, and intermediate code इस भाग में आते है.
b) Back End
Target Code Generator, Code Optimizer इस भाग में आते है.
कंपाइलर के प्रकार
Cross Compiler
यह एक ऐसा प्लेटफार्म होता है जहा पर निष्पादन योग्य मशीन कोड उत्पन्न किया जाता है , लेकिन यह वह प्लेटफार्म नहीं जहा पर कम्पाइलर चल रहा होता है.
Bootstrap Compiler
यहाँ पर Bootstrap Compiler एक प्रोग्रामिंग भाषा में लिखे जाते है जिसे बाद में सयोजित किया जाता है.
Source to source/transcompiler
ये कम्पाइलर प्रोग्रामिंग भाषा के सोर्स कोड को दूसरे प्रोग्रामिंग भाषा के सोर्स कोड में बदल देते है.
Decompiler
यह एक कम्पाइलर नहीं है क्यूंकि यह कम्पाइलर का उलटा होता है. यह मशीन कोड को हाई लेवल लैंग्वेज में बदल देता है.
कंपाइलर की विशेषताएं
कम्पाइलर की कुछ विशषताए इस प्रकार है:
- कम्पाइलर की गति अच्छी होती है.
- कम्पाइलर के मशीन कोड एक दम सही होते है.
- सोर्स कोड चाहे कितना भी बदले लेकिन कोड का अर्थ नहीं बदलता है.
- त्रुटियों का अच्छे से पता लगाता है.
- व्याकरण के अनुसार कोड की जाँच करता है.
कंपाइलर के उपयोग/अनुप्रयोग
- कम्पाइलर कोड को प्लेटफार्म से आत्मनिर्भर बनाने में सहायता करता है.
- कोड को syntax और semantic errors से मुक्त करता है.
- यह ऐसे कोड उत्पन्न करता ही जिसका आसानी से निष्पादन हो सके और किसी को भेजा जा सके.
- एक लैंग्वेज से दुअरी लैंग्वेज में कोड को ट्रांसलेट करता है.
कंपाइलर के फायदे
- कम्पाइलर कोड को एक ही बार में ट्रांसलेट कर देता है.
- कम्पाइलर कम समय लेता है.
- कम्पाइलर CPU का उपयोग ज्यादा करता है.
- यह बहुत से हाई लेवल लैंग्वेज को सपोर्ट करता है जैसे, C, C++, JAVA.
कंपाइलर के नुकसान
- कम्पाइलर लचीला नहीं होता है.
- कम्पाइलर को अधिक जगह की आवश्यकता होती है.
- त्रुटियों को खोजना मुश्किल होता है.
- कम्पाइलर पोर्टेबल होना चाहिए जो की नहीं है.
कम्पाइलर और इंटरप्रेटर में अंतर क्या है?
कम्पाइलर एक साथ पुरे प्रोग्राम की जाँच करता है और उसे एक सभी त्रुटियों को एक साथ पर डिस्प्ले करता है. एक इंटरप्रेटर लाइन बाय लाइन प्रोग्राम को जाँच करता है और एक-एक करके डिस्प्ले करता है.
FAQ:
कंपाइलर क्या है?
यह एक सॉफ्टवेयर है जो सोर्स कोड को मशीन कोड में बदल देता है.
कंपाइलर के चरण/संरचना क्या हैं?
- शाब्दिक विश्लेषक(lexical analyzer)
- वाक्य रचना विश्लेषक (syntax analyzer)
- अर्थ विश्लेषक (semantic analyzer)
- मध्यवर्ती कोड जनरेटर (intermediate code generator)
- कोड अनुकूलक (code optimizer)
- लक्ष्य कोड जनरेटर (target code generator)
symbol table क्या है?
यह अभिज्ञान के नाम को ढूंढने में मदत करता है(इसमें नाम और प्रकार होता है.)
कंपाइलर और दुभाषिया में क्या अंतर है?
कम्पाइलर पुरे कोड की जाँच करता है और इंटरप्रेटर लाइन दर लाइन जाँच करता है.
Decompiler क्या है?
यह मशीन कोड को सोर्स कोड में बदल देता है.
👉पाइथन क्या है? यह इतना लोकप्रिय क्यों है? इसके उपयोग और विशेषताएं 👈
👉Assembler क्या है? इसके प्रकार और कार्य- What is Assembler in Hindi 👈
👉Assembly language क्या है? कार्य और विशेषताएं- Assembly language in Hindi 👈