कंपाइलर में चरण बनाम पास
सामान्य तौर पर, कंपाइलर एक कंप्यूटर प्रोग्राम है जो एक भाषा में लिखे गए प्रोग्राम को पढ़ता है, जिसे स्रोत भाषा कहा जाता है, और इसे दूसरी भाषा में अनुवाद करता है, जिसे लक्ष्य भाषा कहा जाता है। परंपरागत रूप से, स्रोत भाषा सी ++ जैसी उच्च स्तरीय भाषा थी और लक्ष्य भाषा निम्न स्तर की भाषा थी जैसे असेंबली भाषा। तो, सामान्य तौर पर कंपाइलर्स को अनुवादक के रूप में देखा जा सकता है जो एक भाषा से दूसरी भाषा में अनुवाद करते हैं। पास और फेज दो शब्द हैं जिनका उपयोग अक्सर कंपाइलर के साथ किया जाता है। एक कंपाइलर के पास की संख्या स्रोत (या इसके प्रतिनिधित्व के किसी रूप) पर जाने की संख्या है।निर्माण की सुविधा के लिए एक कंपाइलर को भागों में तोड़ा जाता है। एक कंपाइलर के ऐसे एकल स्वतंत्र भाग को कॉल करने के लिए अक्सर चरण का उपयोग किया जाता है।
कंपाइलर में पास क्या होता है?
संकलकों को वर्गीकृत करने का एक मानक तरीका "पास" की संख्या है। आमतौर पर, संकलन एक अपेक्षाकृत संसाधन गहन प्रक्रिया है और शुरू में कंप्यूटर के पास ऐसे प्रोग्राम को रखने के लिए पर्याप्त मेमोरी नहीं थी जो पूरा काम करता था। प्रारंभिक कंप्यूटरों में हार्डवेयर संसाधनों की इस सीमा के कारण, कंपाइलर्स को छोटे उप कार्यक्रमों में तोड़ दिया गया था, जिन्होंने स्रोत कोड पर जाकर अपना आंशिक काम किया (स्रोत या इसके किसी अन्य रूप पर "पास" बनाया) और विश्लेषण किया, परिवर्तन और अनुवाद कार्य अलग से। इसलिए, इस वर्गीकरण के आधार पर, कंपाइलर्स को वन-पास या मल्टी-पास कंपाइलर के रूप में पहचाना जाता है।
जैसा कि नाम से पता चलता है, वन-पास कंपाइलर सिंगल पास में कंपाइल करता है। वन-पास कंपाइलर लिखना आसान है और साथ ही वे मल्टी-पास कंपाइलर की तुलना में तेज़ प्रदर्शन करते हैं।इसलिए, उस समय भी जब आपके पास संसाधन सीमाएँ थीं, भाषाओं को डिज़ाइन किया गया था ताकि उन्हें एक-पास (जैसे पास्कल) में संकलित किया जा सके। दूसरी ओर, एक विशिष्ट मल्टी-पास कंपाइलर कई मुख्य चरणों से बना होता है। पहला चरण स्कैनर है (जिसे लेक्सिकल एनालाइज़र भी कहा जाता है)। स्कैनर प्रोग्राम को पढ़ता है और इसे टोकन की एक स्ट्रिंग में परिवर्तित करता है। दूसरा चरण पार्सर है। यह टोकन की स्ट्रिंग को एक पार्स ट्री (या एक सार सिंटैक्स ट्री) में परिवर्तित करता है, जो प्रोग्राम की वाक्यात्मक संरचना को कैप्चर करता है। अगला चरण वह है जो वाक्यात्मक संरचना के शब्दार्थ की व्याख्या करता है। कोड अनुकूलन चरण और अंतिम कोड निर्माण चरण इसका अनुसरण करते हैं।
कंपाइलर में एक चरण क्या है?
जब आप कंपाइलर कंस्ट्रक्शन की बात करते हैं तो टर्म फेज अक्सर सामने आता है। प्रारंभ में, कंपाइलर एक साधारण भाषा के संकलन के लिए एक व्यक्ति द्वारा लिखे गए एकल, मोनोलिथिक सॉफ़्टवेयर के हर साधारण टुकड़े थे। लेकिन जब अनुवाद की जाने वाली भाषा का स्रोत कोड जटिल और बड़ा हो जाता है, तो संकलक कई (अपेक्षाकृत स्वतंत्र) चरणों में टूट जाता है।विभिन्न चरणों के होने का लाभ यह है कि संकलक के विकास को डेवलपर्स की एक टीम के बीच वितरित किया जा सकता है। इसके अलावा, यह प्रतिरूपकता में सुधार करता है और चरणों को बेहतर वाले या अतिरिक्त चरणों (जैसे आगे अनुकूलन) द्वारा संकलक में जोड़े जाने की अनुमति देकर पुन: उपयोग करता है। संकलन को चरणों में विभाजित करने की प्रक्रिया कार्नेगी मेलन विश्वविद्यालय में PQCC (उत्पादन गुणवत्ता संकलक-संकलक परियोजना) द्वारा शुरू की गई थी। उन्होंने फ्रंट एंड, मिडिल एंड और बैक एंड की शर्तों को पेश किया। अधिकांश कंपाइलरों में कम से कम दो चरण होते हैं। लेकिन आमतौर पर, बैक एंड और फ्रंट एंड इन चरणों को समाहित करते हैं।
कंपाइलर में फेज और पास में क्या अंतर है?
फेज और पास कंपाइलर के क्षेत्र में उपयोग किए जाने वाले दो शब्द हैं। एक पास एक बार होता है जब संकलक स्रोत कोड या इसके कुछ अन्य प्रतिनिधित्व से गुजरता है (जाता है)। आम तौर पर, अधिकांश कंपाइलरों में कम से कम दो चरण होते हैं जिन्हें फ्रंट एंड और बैक एंड कहा जाता है, जबकि वे या तो एक-पास या बहु-पास हो सकते हैं।निर्माण के अनुसार कंपाइलरों को वर्गीकृत करने के लिए चरण का उपयोग किया जाता है, जबकि पास का उपयोग कंपाइलरों को उनके काम करने के तरीके के अनुसार वर्गीकृत करने के लिए किया जाता है।