से पहले जावा और C # प्रोग्रामिंग भाषाएं दिखाई दीं, कंप्यूटर प्रोग्राम केवल थे संकलित या व्याख्या की. असेंबली लैंग्वेज, सी, सी ++, फोरट्रान, पास्कल जैसी भाषाओं को लगभग हमेशा मशीन कोड में संकलित किया गया था। आमतौर पर बेसिक, VbScript और जावास्क्रिप्ट जैसी भाषाओं की व्याख्या की गई थी।
तो संकलित कार्यक्रम और एक व्याख्या के बीच क्या अंतर है?
संकलन
प्रोग्राम लिखने के लिए ये कदम उठाने होंगे:
- कार्यक्रम संपादित करें
- प्रोग्राम को मशीन कोड फ़ाइलों में संकलित करें।
- मशीन कोड फ़ाइलों को एक रन करने योग्य प्रोग्राम (एक exe के रूप में भी जाना जाता है) में लिंक करें।
- डिबग या रन प्रोग्राम
कुछ भाषाओं जैसे टर्बो पास्कल और डेल्फी के साथ चरण 2 और 3 संयुक्त हैं।
मशीन कोड फाइलें मशीन कोड के स्व-निहित मॉड्यूल हैं जिन्हें अंतिम कार्यक्रम बनाने के लिए एक साथ जोड़ने की आवश्यकता होती है। अलग मशीन कोड फ़ाइलों के होने का कारण दक्षता है; कंपाइलर्स को केवल recompile करना होता है सोर्स कोड वह बदल गया है। अपरिवर्तित मॉड्यूल से मशीन कोड फ़ाइलों का पुन: उपयोग किया जाता है। इसे एप्लिकेशन बनाने के रूप में जाना जाता है। यदि आप सभी स्रोत कोड को फिर से जोड़ना और पुनर्निर्माण करना चाहते हैं, तो इसे बिल्ड के रूप में जाना जाता है।
लिंकिंग एक तकनीकी रूप से जटिल प्रक्रिया है जहां विभिन्न मॉड्यूल के बीच सभी फ़ंक्शन कॉल को एक साथ जोड़ा जाता है, स्मृति स्थानों के लिए आवंटित किया जाता है चर और सभी कोड को मेमोरी में रखा जाता है, फिर एक पूर्ण प्रोग्राम के रूप में डिस्क पर लिखा जाता है। यह अक्सर संकलन की तुलना में एक धीमा कदम है क्योंकि सभी मशीन कोड फ़ाइलों को मेमोरी में पढ़ा जाना चाहिए और एक साथ जुड़ा होना चाहिए।
व्याख्या करना
एक दुभाषिया के माध्यम से एक कार्यक्रम चलाने के लिए कदम हैं
- कार्यक्रम संपादित करें
- डिबग या रन प्रोग्राम
यह एक बहुत तेज़ प्रक्रिया है और यह नौसिखिए प्रोग्रामरों को एक कंपाइलर का उपयोग करने की तुलना में अपने कोड को तेज संपादित करने और परीक्षण करने में मदद करता है। नुकसान यह है कि व्याख्या किए गए कार्यक्रम संकलित कार्यक्रमों की तुलना में बहुत धीमी गति से चलते हैं। कोड की हर पंक्ति को 5-10 बार धीमा करने के लिए फिर से पढ़ना पड़ता है, फिर से संसाधित किया जाता है।
जावा और C # दर्ज करें
ये दोनों भाषाएँ अर्ध-संकलित हैं। वे एक मध्यवर्ती कोड उत्पन्न करते हैं जो व्याख्या के लिए अनुकूलित होता है। यह मध्यवर्ती भाषा अंतर्निहित हार्डवेयर से स्वतंत्र है और इससे पोर्ट करना आसान हो जाता है या तो अन्य प्रोसेसर में लिखे गए प्रोग्राम, तब तक एक दुभाषिया के लिए लिखा गया है हार्डवेयर।
जावा, जब संकलित किया जाता है, तो बायटेकोड उत्पन्न करता है जो जावा वर्चुअल मशीन (जेवीएम) द्वारा रनटाइम पर व्याख्या की जाती है। कई जेवीएम एक जस्ट-इन-टाइम कंपाइलर का उपयोग करते हैं जो बायोटेक को देशी मशीन कोड में परिवर्तित करता है और फिर व्याख्या की गति को बढ़ाने के लिए उस कोड को चलाता है। वास्तव में, जावा स्रोत कोड को दो-चरण की प्रक्रिया में संकलित किया जाता है।
C # को कॉमन इंटरमीडिएट लैंग्वेज (CIL) में संकलित किया गया है, जिसे पहले Microsoft इंटरमीडिएट भाषा MSIL के रूप में जाना जाता था। यह सामान्य भाषा रनटाइम (CLR) द्वारा चलाया जाता है। .NET फ्रेमवर्क एक पर्यावरण का हिस्सा है जो कचरा संग्रहण और जस्ट-इन-टाइम संकलन जैसी समर्थन सेवाएं प्रदान करता है।
जावा और सी # दोनों स्पीडअप तकनीक को रोजगार देते हैं इसलिए प्रभावी गति एक शुद्ध संकलित भाषा के रूप में लगभग तेज है। यदि एप्लिकेशन बहुत समय बिताता है तो इनपुट और आउटपुट डिस्क फ़ाइलों को पढ़ने या चलाने की तरह करता है डेटाबेस सवाल तो गति अंतर मुश्किल से ध्यान देने योग्य है।
इसका मेरे लिए क्या मतलब है?
जब तक आपको गति के लिए बहुत विशिष्ट आवश्यकता नहीं होती है और फ्रेम दर को प्रति सेकंड दो फ्रेम बढ़ाना चाहिए, आप गति के बारे में भूल सकते हैं। C, C ++ या C # में से कोई भी गेम, कंपाइलर और ऑपरेटिंग सिस्टम के लिए पर्याप्त गति प्रदान करेगा।