Compiler के बारे में बात करें तो यह एक Computer Program होता है जिसकी मदद से एक Programming Language से दूसरी Programming Language में Computer Code को Translate किया जाता है।
अगर आप कम्पाइलर क्या है (Compiler Kya Hai) के बारे में नहीं जानते हैं तो आज की पोस्ट विशेष रूप से आपके लिए ही है।यहां इस लेख के माध्यम से आज हम आपको Compiler Technology के बारे मे समझाने का प्रयास करेंगे।आप चाहे Technical Student हो या फिर आप का Background Non Technical है आप सभी के लिए यह पोस्ट काफी ज्यादा Helpful होने वाली है।
क्योंकि दोस्तों Compiler एक ऐसा यंत्र है जिसे हर जगह इस्तेमाल किया जाता है अगर आप Computer Science के विद्यार्थी हैं तो आपके लिए Compiler के बारे में समझना और जरूरी हो जाता है।
कंप्यूटर में अगर आप Programming सीखना चाहते हैं तो आपके लिए Compiler का ज्ञान होना आवश्यक है क्योंकि Programming में अधिकतम काम Compiler की मदद से ही किए जाते हैं।इस पोस्ट में हम Compiler Kya Hai, Compiler Kya Kam Karta Hai, Compiler Or Interpreter Kya Hai आदि के बारे में बताएंगे।
Compiler की परिभाषा
Compiler, Basically Computer Program होते हैं जो High Level Language में लिखे गए Code को मशीन निर्देशों के अनुसार एक सेट में अनुवादित करते हैं।जिसे डिजिटल कंप्यूटर के CPU के द्वारा समझने में आसानी हो जाती है बेसिकली यह बहुत बड़े Program होते हैं जिनमे Error Checking के साथ-साथ अन्य क्षमताएं भी होती हैं।
कुछ कंपाइलर प्रोग्राम ऐसे होते हैं जिनकी मदद से उच्च स्तरीय भाषा को मध्यवर्ती असेंबली भाषा में बदला जाता है जिसे बाद में Assembler के द्वारा मशीन कोड में इकट्ठा किया जाता है वहीं कुछ अन्य कंपाइलर सीधे मशीनी भाषा उत्पन्न करते हैं वास्तव में Compiler शब्द का निर्माण अमेरिका के कंप्यूटर वैज्ञानिक ग्रेस हॉपर द्वारा किया गया था।
उन्होंने 1950 के दशक के दौरान पहले कंपाइलर का निर्माण किया था आइए अब इसके संबंध में और जानकारी प्राप्त करते हैं।
Compiler क्या है? ( What is Compiler in Hindi )
Compiler, एक Computer Program होता है जिसकी मदद से Computer Code को एक Programming Language से दूसरी भाषा में बदला जाता है।
मूल रूप से यह प्रोग्राम उच्च स्तरीय भाषा में लिखे गए प्रोग्राम को निम्न स्तरीय भाषा में अनुवादित करता है इस प्रक्रिया में यह आवश्यक अनुवाद संचालन और त्रुटी का भी पता लगाता है जैसा कि आप सभी लोग जानते हैं कि Computers के द्वारा मानव भाषा नहीं समझी जाती है Computer Basically निम्न स्तरीय भाषा के रूप में केवल संख्याओं के अनुक्रम को समझते हैं।
जो संक्षेप में opcodes का प्रतिनिधि करते हैं वहीं दूसरी तरफ इंसानों के लिए opcodes का प्रयोग करना कठिन होता है।
इसी वजह से Computer Program लिखना आसान बनाने के लिए Programming Languages का आविष्कार किया गया यह भाषाएं विशेष रूप से इंसानों के समझने और पढ़ने के लिए ही है।
इसलिए Program को मशीन भाषा में अनुवादित किया जाना चाहिए ताकि Computer के द्वारा Program को Execute किया जा सके।
Computers को केवल बायनरी भाषा समझ आती है लेकिन Users को English या कोई अन्य भाषा समझ आती है अब ऐसे में कंप्यूटर आपके द्वारा दी गई Commands को कैसे समझेगा?
तब ऐसी स्थिति में वहां पर एक Translator की जरूरत होती है जो भाषा को बदल सके और कंप्यूटर व User के बीच तालमेल स्थापित कर सकें।
दोस्तों इसी प्रकार के Language Translator को Compiler कहते हैं जो High Level Language को Machine Language में बदलता है।
कंपाइलर के मुख्य भाग
दोस्तों Compiler के मुख्य रूप से 2 भाग होते हैं जो उसके काम को आसान बनाते हैं नीचे इनके बारे में विस्तार से बताया है।
Analysis Phase
दोस्तों यह Compiler का पहला हिस्सा होता है जिसमें एक Intermediate Representative को बनाया जाता है इसके लिए एक Source Program की मदद ली जाती है Lexical Analyzer, Syntax Analyzer और Semantic Analyze आदि इसके मुख्य भाग होते हैं।
Synthesis Phase
यह कंपाइलर का दूसरा हिस्सा होता है जिसमे Intermediate Representative की मदद से Equivalent Target Program को बनाया जाता है Intermediate Code Generator, Code Generator, और Code Optimizer आदि Synthesis Phase के मुख्य भाग होते हैं।
कम्पाइलर कितने प्रकार के होते हैं – Types Of Compiler In Hindi
कंपाइलर को मुख्य रूप से तीन भागों में बांटा जाता है मतलब इनके तीन प्रकार होते हैं प्रत्येक प्रकार के बारे में नीचे विस्तार से बताया है।
1. Single Pass Compiler
इस प्रकार के कंपाइलर में bash/sh/tcsh जैसी कमांड सुविधाएं दी जाती हैं इसलिए इन्हें सिंगल पास कंपाइलर कहा जाता है।
2. Two Pass Compiler
ऐसे कंपाइलर जो किसी भाषा को दो बार अनुवाद कर सकते हैं उन्हें टू पास कंपाइलर कहा जाता है इस तरह के Compiler पहले Pass पर कथनों के Syntax की जांच करते हैं और प्रतीकों की एक तालिका बनाते हैं।
उसके बाद दूसरे Pass में ये Program Statement का मशीनी भाषा में अनुवाद करते हैं।
3. Multi Pass Compiler
जब एक Source Code को कई बार Process करना हो तो वहां पर मल्टी पास कंपाइलर इस्तेमाल किए जाते हैं।
कंपाइलर के फेस क्या होते हैं
Compiler की मदद से जब कोई काम किया जाता है तो वह काम अलग-अलग फेस में होता है जिसमें कुल 6 फेस होते हैं।
- Lexical Analysis
- Syntax Analysis
- Semantic Analysis
- Intermediate Code Generator
- Code optimizer
- Code generation
Compiler कैसे काम करता है
एक Compiler सबसे पहले Source Code लेता है और फिर उसे Machine Language Module में बदलता है।एक अन्य विशेष प्रोग्राम होता है जिसे लिंकर कहते हैं यह निष्पादन योग्य फाइल बनाने के लिए इस Object File को अन्य पहले से ही संकलित Object Files के साथ जोड़ता है।
इसलिए एक संकलित भाषा के लिए Program चलाने से पहले Program Code से मशीन निष्पादन योग्य Code के रूप में परिवर्तित किया जाता है।यह Interpreted Programming Language के लिए इस्तेमाल होने वाली प्रक्रिया से काफी अलग होती है।
यह प्रक्रिया काफी हद तक आसान होती है क्योंकि Compiled Languages का प्रयोग करके बनाए जाने वाले कई Modern Program, Shared Libraries का इस्तेमाल करते हैं।इसी वजह से निष्पादन योग्य फाइलों को चलाने के लिए गतिशील लिंक्ड लाइब्रेरी(Windows) और साझा लाइब्रेरी(Linux, UNIX) की जरूरत होती है।
Basically जब किसी Program को निष्पादित किया जाता है जो कि High Level Language मे लिखा रहता है तो यह प्रक्रिया दो भागों में होती है।
- पहले भाग में Source Program को Object Program में संकलित और अनुवादित किया जाता है।
- दूसरे भाग में Object Program को Assembler के माध्यम से Targeted Program मे अनुवादित किया जाता है।
Compiler का उपयोग
वैसे तो कंपाइलर का इस्तेमाल बहुत अधिक क्षेत्रों में क्या जाता है लेकिन विशेष रूप से चार Steps में इसे ज्यादा उपयोग करते हैं।
1. Scanning
यह Scanner Read करता है यह एक Character एक समय में Source Code से और सभी Character को Track करता है।Scanning की मदद से विशेष रूप से पता लगाया जाता है कि कौन सा Character किस लाइन में काम कर रहा है।
2. Lexical Analysis
Source Code में जो Sequence Of Character दिखाई देते हैं कंपाइलर उन्हें Tokens मे परिवर्तित करता है जो कि Series Of Strings Of Character होते हैं।यह एक Specific Rule Program के द्वारा एसोसिएटेड होती है इसमें एक सिंबल टेबल का इस्तेमाल किया जाता है Lexical Analysis में Words को Store करने के लिए Source Code का इस्तेमाल किया जाता है जो कि Token Generated होती है।
3. Syntactic Analysis
इस वाले चरण में Syntax को Analysis किया जाता है जिसमे Preprocessing शामिल होता है जो पहचान करता है कि क्या टोकन Usage के हिसाब से Proper Order में है या नहीं।
शब्दों का एक समूह जो एक सही रूप में होता है उसे Syntax कहते हैं इसमें Compiler को Source Code Check करना होता है ताकि Syntactic Accuracy को सुनिश्चित किया जा सके।
4. Semantic Analysis
इस वाले चरण में बहुत सारे Steps होते हैं जिसमें विशेष रूप से Tokens का Structure चेक किया जाता है।साथ ही उनके क्रम के बारे में भी पता लगाया जाता है कि क्या दी गई भाषा व्याकरण के नियमों के अनुसार है या नहीं Parsar और Analyzer के द्वारा Token के Structure को Interpret किया जाता है और एक Final Code प्राप्त किया जाता है जिसे Object Code कहते हैं।
Decompiler किसे कहते हैं
एक ऐसा Compiler जो मशीन भाषा को उच्च स्तरीय भाषा में परिवर्तित करता है उसे Decompiler कहते हैं यह बिल्कुल Compiler के विपरीत काम करता है।
Cross Compiler क्या होता है
ऐसे Compilers जो कि Object Code बनाते हैं और जो केवल System में Run होने के लिए बना होता है उसे Cross Compiler कहते हैं।
इसे भी पढ़े :
कंपाइलर की विशेषताएं
- कंपाइलर की स्पीड बहुत अच्छी होती है।
- कंपाइलर के द्वारा बनाए गए मशीन कोड काफी सही होते हैं।
- Source Code लगातार बदलने की स्थिति में भी कंपाइलर की मदद से तैयार किए गए कोड का अर्थ नहीं बदलता है।
- त्रुटियों का आसानी से और बहुत अच्छे तरीके से पता लगाया जा सकता है।
- व्याकरण के अनुसार Code की जांच पड़ताल की जाती है।
कंपाइलर के फायदे
- कंपाइलर स्वतंत्रता प्रदान करता है।
- Compiler का सबसे बड़ा फायदा है कि इससे Hardware Optimization प्राप्त होता है।
- Source Code और Program के लिए सुरक्षा प्रदान करता है।
- यह किसी भी अन्य दुभाषिया के मुकाबले ज्यादा तेजी से काम करता है क्योंकि यह पूर्व संकलित पैकेज होता है।
- निष्पादित योग्य फाइलों को वास्तविक सोर्स कोड की आवश्यकता के बिना किसी अन्य सिस्टम पर निष्पादित किया जा सकता है।
कंपाइलर के नुकसान
- यह Hardware Specific होता है।
- यह प्रक्रिया को करने में काफी अधिक समय लगाता है।
- इसे चलाने के लिए अतिरिक्त मेमोरी की जरूरत होती है।
- इसमें Error की संभावनाएं बहुत अधिक होती हैं।
- Source Program को प्रत्येक संशोधन के लिए संकलित करना पड़ता है।
कंपाइलर के अनुप्रयोग
- Compiler, Code को Platform से आत्मनिर्भर बनाने में मदद करता है।
- Code को Syntax और Semantic Errors से मुक्त करता है।
- यह उस प्रकार के Code उत्पन्न करता है जिन्हें आसानी से निष्पादित किया जा सके और किसी अन्य व्यक्ति को भेजा जा सके।
- एक भाषा से दूसरी भाषा में Code को Translate करता है।
कम्पाइलर और इंटरप्रेटर में अंतर – Difference Of Compiler And Enterpreter In Hindi
कंपाइलर और इंटरप्रेटर दोनों बेसिकली Program होते हैं जिनकी मदद से उच्च स्तरीय भाषा को मशीनी भाषा में बदला जाता है।
ताकि इसे कंप्यूटर बहुत आसानी से समझ सके यह समानता होने के साथ-साथ इन दोनों में कई अंतर होते है जो नीचे बताया है।
- Compiler पूरे प्रोग्राम को एक बार में ही Compiled कर देता है जबकि Interpreter एक बार में किसी कोड की सिर्फ एक पंक्ति लेता है।
- कंपाइलर एक मध्यवर्ती मशीन कोड उत्पन्न करता है लेकिन इंटरप्रेटर कभी भी कोई मध्यवर्ती मशीन कोड नहीं बनाता है।
- Intermediate Object Code बनाने के लिए कंपाइलर को अधिक मेमोरी की जरूरत होती है जबकि इंटरप्रेटर को इसी काम के लिए कम मेमोरी की आवश्यकता पड़ती है।
- कंपाइलर का उपयोग मुख्य रूप से C, C++, Java, Scala जैसी Programming भाषाओं में किया जाता है जबकि इंटरप्रेटर का उपयोग Python, php, rubi, perl जैसी Programming Language में किया जाता है।
- एक कंपाइलर, कंपाइलेशन के बाद सभी त्रुटियों को दिखाता है जिससे त्रुटियों का पता लगाने और उन्हे हटाने की प्रक्रिया जटिल हो जाती है।
- Interpreter के द्वारा हर एक पंक्ति की त्रुटियों को एक-एक करके प्रदर्शित किया जाता है इससे त्रुटियों का पता लगाना और उन्हें निकालना काफी आसान हो जाता है।
FAQ : Compiler Kya Hai In Hindi
Q1. कंपाइलर से आप क्या समझते हैं?
Ans : कंपाइलर एक तरीके से कंप्यूटर प्रोग्राम होते हैं जिनकी मदद से उच्च स्तरीय भाषा को मशीन भाषा में बदला जाता है।
Q2. इंटरप्रेटर क्या है in Hindi?
Ans : इंटरप्रेटर भी बिल्कुल कंपाइलर की तरह ही एक कंप्यूटर प्रोग्राम होता है जो High Level Language को Machine Language में बदलता है।
Q3. कंपाइलर और इंटरप्रेटर में क्या अंतर है?
Ans : इन दोनों कंप्यूटर प्रोग्राम के बीच कई सारे अंतर हैं जिनमें प्रमुख अंतर यही है कि कंपाइलर मध्यवर्ती मशीन कोड बनाता है जबकि इंटरप्रेटर मध्यवर्ती मशीन कोड नहीं बनाता है।
Q4. असेंबलर और कंपाइलर में क्या अंतर है?
Ans : असेंबलर इनपुट के रूप में असेंबली कोड लेता है, जबकि कंपाइलर Preprocessed Code को इनपुट के रूप में लेता है यही इन दोनों के बीच मुख्य अंतर है।