डायनामिक लैंग्वेज रनटाइम और C # 4.0 के बीच क्या संबंध है?


11

मान लीजिए कि मैं एक डायनेमिक भाषा संकलक / दुभाषिया बनाना चाहता था, एक योजना दुभाषिया शायद, .NET प्लेटफॉर्म पर जैसा कि यह आज भी मौजूद है। क्या मैं अपनी भाषा की गतिशील विशेषताओं को लागू करने के लिए गतिशील भाषा रनटाइम (DLR) का उपयोग कर, या C # 4.0 का उपयोग करना बेहतर होगा ? या मुझे दोनों की आवश्यकता है?

मुझे पता है कि वहाँ के साथ अन्य काम इस क्षेत्र में किया जाता है, विशेष रूप से किया गया है IronScheme और IronPython । वे दोनों भाषाएँ DLR का उपयोग करती हैं; मेरा मानना ​​है कि आयरनपीथॉन डीएलआर के सबसे वर्तमान संस्करण (जो लगभग एक साल पुराना है) का उपयोग करता है, जबकि आयरनस्चेम डीएलआर के शुरुआती संस्करण के एक प्रारंभिक, भारी संशोधित फोर्क का उपयोग करता है। लेकिन जब ये कंपाइलर बनाए गए तो C # 4.0 उपलब्ध नहीं था।

मैंने C # 4.0 की गतिशील विशेषताओं का उपयोग करते हुए बड़े पैमाने पर Rob Conery का काम देखा है; यह काफी प्रभावशाली है। लेकिन क्या सी # एक गतिशील भाषा संकलक / इंटेप्टर के पूर्ण पैमाने पर प्रयास तक रहेगा? क्या डीएलआर में ऐसी विशेषताएं हैं जो सी # से गायब हैं, या डीएलआर अनिवार्य रूप से सी # 4.0 में रोल किया गया था? अगर मैं सिर्फ विशेष रूप से C # 4.0 का उपयोग करता हूं तो क्या मुझे DLR की कोई महत्वपूर्ण विशेषता याद नहीं होगी?


मेरा मानना ​​है कि .Net 4.0 डायनामिक फीचर्स DLR पर भी आधारित हैं।
डेव नी


@ क्या: मैं .NET 4.0 रनटाइम और DLR के बीच संबंध के बारे में विस्तार से वर्णन करने वाले लेख के वर्तमान, आधिकारिक लिंक से संतुष्ट हूं। अगर C # 4.0 में डायनामिक टाइप सिस्टम काफी मजबूत है, और क्या DLR में कोई महत्वपूर्ण विशेषताएं हैं जो .NET 4.0 रनटाइम से हटाए गए थे, तो यह मुझे एक उचित विचार देगा। मुझे कुछ लेख मिले हैं, लेकिन वे सभी उस दिन में वापस लिखे गए जब DLR आकार ले रहा था, और उनमें से कई अटकलें हैं।
रॉबर्ट हार्वे

जवाबों:


3

यह वह लेख है जो मुझे याद है। msdn.microsoft.com/en-us/magazine/gg598922.aspx

बाद में DLR को .NET फ्रेमवर्क 4 में C # और विजुअल बेसिक में डायनामिक फीचर्स को सपोर्ट करने के लिए भी शामिल किया गया था। यदि आपको केवल C # 4 में डायनामिक कीवर्ड की आवश्यकता है, तो आप बस .NET फ्रेमवर्क का उपयोग कर सकते हैं और ज्यादातर मामलों में यह अपने आप ही DLR के साथ सभी इंटरैक्शन को हैंडल करेगा। लेकिन अगर आप एक नई डायनेमिक भाषा को .NET पर लागू करना या पोर्ट करना चाहते हैं, तो आप ओपन सोर्स प्रोजेक्ट में अतिरिक्त सहायक वर्गों से लाभान्वित हो सकते हैं, जिसमें भाषा कार्यान्वयनकर्ताओं के लिए अधिक सुविधाएँ और सेवाएँ हैं।


3

से: jimmysch

रॉबर्ट,

तथ्य: IronRuby और IronPython दोनों DLR का उपयोग करते हैं, वास्तव में DLR की अधिकांश विशेषताएँ IronPython के पहले के कार्यान्वयन से ली गई हैं। मैं कैसे DLR IronScheme का उपयोग करता है के संस्करण के साथ परिचित नहीं हूँ। DLR (Microsoft.Scripting.Core.dll) के एक भाग को System.Core.dll में .NET 4.0 में भेज दिया गया था, और यह भाग C "4.0 का उपयोग करता है, इसके लिए" डायनामिक "कीवर्ड समर्थन है, यही कारण है कि असेंबली नहीं है .NET 4.0 में मौजूद है DLR का निर्माण।

DLR के बाकी कोडबेस (Microsoft.Scripting.dll, Microsoft.Dynamic.dll सबसे महत्वपूर्ण हैं) इस कोडप्लेक्स प्रोजेक्ट या आयरनलैंगजेस गिटहब परियोजना से डाउनलोड के लिए उपलब्ध हैं । वे उपभोक्ताओं और होस्टिंग भाषाओं के उत्पादकों के लिए एपीआई प्रदान करते हैं, जबकि .NET 4.0 में एपीआई वास्तव में तरीकों के गतिशील प्रेषण के लिए हैं।

.NET 4.0 के लिए डायनेमिक भाषा कंपाइलर लिखने के लिए, मैं C # को कार्यान्वयन भाषा के रूप में उपयोग करूंगा और डीएलआर का उपयोग आम कंपाइलर कार्यों को सरल बनाने के लिए एक लाइब्रेरी के रूप में करूंगा। DLR पर एक सरल उदाहरण भाषा के लिए, Sympl को देखें।

~ जिमी

http://dlr.codeplex.com/discussions/268746#post656778

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.