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