मैं यहां बहुत अधिक जानकारी नहीं दूंगा, क्योंकि अन्य ने पहले से ही इसमें बहुत कुछ शामिल किया है, लेकिन मैं कुछ बिंदुओं को स्पष्ट करना चाहता हूं कि अन्य उत्तरों ने वास्तव में अच्छी तरह से या सही तरीके से समझाया नहीं है। यह काफी हद तक pedantic है, और 99.9 99 99% मामलों के लिए आप बस "सी # और सीआईएल/एमएसआईएल प्रबंधित कोड है" के बारे में सोच सकते हैं, लेकिन इसके लिए कुछ subtleties हैं।
सबसे पहले, सीआईएल/एमएसआईएल को "इंटरमीडिएट भाषा" के रूप में जाना जाता है, जिसका अर्थ है कि यह एक कंप्यूटर भाषा है जिसका उपयोग स्रोत कोड और अंतिम देशी मशीन कोड के बीच मध्यवर्ती चरण के रूप में किया जाता है। हालांकि, यह मामला होना जरूरी नहीं है। मैंने प्रयोगात्मक परियोजनाओं के बारे में सुना है जहां उन्होंने एक सीपीयू बनाया है जो सीधे सीआईएल (या जावा बाइट कोड नामक जावा समकक्ष) को सीधे मूल रूप से परिवर्तित करने के बिना निष्पादित करता है (मूल रूप से, सीआईएल मूल रूप है)।
प्रबंधित कोड उस कोड को संदर्भित करता है जो किसी प्रकार के प्रबंधित रनटाइम द्वारा "प्रबंधित" होता है। इसका आम तौर पर मतलब है कि कोड कचरा एकत्रित होता है, और इसमें कुछ प्रकार की सुरक्षा परत होती है जो बफर ओवरफ्लो और अन्य प्रकार की समस्याओं जैसे मूल कोड में हो सकती है। इननेट में इसे सामान्य भाषा रनटाइम (सीएलआर)
पुराने दिनों में, इसे "आभासी मशीन" के रूप में जाना जाता था और क्यों जावा पर्यावरण को JVM कहा जाता है, हालांकि यह शब्द अब काफी हद तक है एक गलत नामक आजकल, जेआईटी (जस्ट इन टाइम) कंपाइलर्स के साथ, कोई वास्तविक "वर्चुअल मशीन" नहीं है, लेकिन यह कोड की एक परत है जो मूल संकलित कोड को "लपेटती है" यह सुनिश्चित करने के लिए कि आप नियमों को तोड़ें और बाद में साफ करें तुम्हारा कोड। यह प्लेटफॉर्म विशिष्ट चीजों में से कुछ को भी सारणीबद्ध करता है ताकि सीआईएल को उनके बारे में चिंता न करें।
तो, प्रबंधित कोड एक प्रबंधित रनटाइम में चल रहे कोड की अवधारणा को संदर्भित करता है। सीआईएल को प्रबंधित कोड माना जाता है जब यह रनटाइम में चल रहा है जैसे .NET रनटाइम पर्यावरण।
सी # और वीबीएनईटी को अक्सर "प्रबंधित भाषा" माना जाता है क्योंकि उन्हें आमतौर पर सीआईएल के लिए संकलित किया जाता है और एक प्रबंधित रनटाइम के तहत चलाया जाता है। हालांकि, यह आवश्यक नहीं होना चाहिए (हालांकि विनिर्देश के पत्र का पालन करते हुए, शायद यह मामला होना चाहिए)। उदाहरण के लिए, ऐसे कंपाइलर्स हैं जो सी # को इंटरमीडिएट स्तर के बिना सीधे देशी कोड में संकलित करेंगे, और सी # के लिए रनटाइम दुभाषिया हैं जो कोड को संकलित नहीं करते हैं, बल्कि इसे रनटाइम पर "व्याख्या" करते हैं।
तो यह बात यह है कि प्रबंधित कोड और सीआईएल दो अलग-अलग चीजें हैं, लेकिन वे संबंधित हैं।
और आधिकारिक तौर पर सीआईएल, सामान्य इंटरमीडिएट भाषा कहा जाता है, [ईसीएमए] (http://www.ecma-international.org/publications/standards/Ecma-335.htm) – Bob
एनजीईएन आमतौर पर ** नहीं ** देशी कोड में संकलित करते समय उपयोग किया जाता है, इसके बजाए जेआईटी कंपाइलर का उपयोग किया जाता है। और "[बाइट कोड] (http://en.wikipedia.org/wiki/Bytecode)" ** ** नहीं है ** मूल कोड के लिए दूसरा नाम, यह प्रबंधित कोड के लिए एक और नाम है। – svick
दरअसल, जेआईटी ने अभी भी उल्लेख किया है और भ्रम से बचने के लिए 'मूल' का उपयोग करने का फैसला किया है। –