2011-02-03 13 views
5

तो सी # स्थिर रूप से टाइप की गई भाषा के रूप में विकसित हुआ था और नेट फ्रेमवर्क के साथ व्यापार अनुप्रयोगों के लाइन को विकसित करने में जगह रखने में एक सही नौकरी से अधिक है।सी # के संदर्भ में गतिशील फ़ीचर रनटाइम का भविष्य?

अब, स्पष्ट रूप से, हाल ही में, माइक्रोसॉफ्ट ने अन्य मौलिक प्रतिमानों की ओर बढ़ने शुरू कर दिया है जिसके लिए सी # और नेट ने हाल ही में कभी भी उपकरण का दावा नहीं किया है।

इनमें से एक DLR

ठीक भाषा divercity है - महान, मैं सोच रहा हूँ, मैं जब मैं वर्गों के साथ मेरी व्यावसायिक संस्थाओं बारे में अगर मैं चाहता हूँ जिस तरह से मैं सोच रहा हूँ बदलने के लिए की तरह ही अब यह लग रहा है सुविधा का लाभ उठाएं ... जो अच्छा है, और मैं सब नया सीख रहा हूं। लेकिन इससे पहले कि मेरे संबंध में सम्मानित समुदाय के लिए मेरे कुछ प्रश्न हैं। अब स्पष्टीकरण के लिए, मैं सीएलआर के साथ डीएलआर के आवेदन में ज्यादा रूचि रखता हूं।

तो हम शुरू:

  1. आपकी राय के लिए, डीएलआर एक व्यवहार्य सुविधा उद्यम वाणिज्यिक सॉफ्टवेयर विकास के दृष्टिकोण से देखा जा करने के लिए desrves है? मतलब, क्या सी # वास्तव में उस चीज के रूप में आवश्यकता है जो यह कर रहा है कि वह क्या कर रहा है या क्या उस बिंदु पर एक स्टैंडएट गतिशील रूप से टाइप की गई भाषा पर स्विच करने के लिए और अधिक समझदारी होगी?

  2. जहां व्यापार प्रयोज्यता के मामले में सीएलआर और डीएलआर के साथ कोड विकसित करने और लिखने का संयोजन चमक रहा है? कंक्रीट उदाहरण मेरे लिए सबसे मूल्यवान होंगे।

  3. लाभ।

अब MSDN इस कहते हैं:

Provides Future Benefits of the DLR and .NET Framework Languages implemented by using the DLR can benefit from future DLR and .NET Framework improvements. For example, if the .NET Framework releases a new version that has an improved garbage collector or faster assembly loading time, languages implemented by using the DLR immediately get the same benefit. If the DLR adds optimizations such as better compilation, the performance also improves for all languages implemented by using the DLR.

खैर महान है, लेकिन कैसे वास्तव में? और अगर मैं अभी भी अपने ढांचे को अपग्रेड करता हूं तो क्या मैं वही नहीं मिलूंगा? इसके लिए मुझे डीएलआर में लिखने की ज़रूरत क्यों है?

  1. क्या आप यह दिखाने के लिए कोड नमूने पोस्ट कर सकते हैं कि डीएलआर नियमित सी # से बेहतर जोन कर सकता है?

  2. क्या यह एक विपणन योग्य नेट इंजीनियर बनने के लिए सीखना उचित है, या यह सिर्फ इतना कहने के लिए एक आइसोटेरिक सुविधा है: "ओह हम रूबी से बेहतर हैं, बीसी हम इसे और भी अधिक कर सकते हैं"?

  3. उन 2 को संयोजित करने के लिए ओवरहेड क्या हैं या केवल ऐप में डीएलआर का उपयोग कर रहे हैं। विकसित होना?

  4. क्या डीएलआर का उपयोग एफ # के साथ किया जा सकता है?

सम्मान।

+0

वाह, मैं कुछ बेहतर प्रतिक्रिया प्राप्त करने की उम्मीद कर रहा था। मुझे लगता है मुझे अपने आप में खुदाई शुरू करने की जरूरत है। लेकिन कृपया अगर आपको डीएलआर - पोस्ट के साथ कोई अनुभव है, तो आपको दिलचस्प तथ्यों के लिए सम्मानित किया जाएगा। – dexter

उत्तर

6

यह स्पष्ट करने योग्य हो सकता है कि डीएलआर गतिशील टाइपिंग भाषा सुविधाओं को लागू करने के लिए बार को कम करने के लिए सीएलआर के शीर्ष पर एक एपीआई स्तरित है। आप इसे आयरनपीथन, आयरन रूबी, क्लोजर और अन्य भाषाओं के रूप में अंत तक उपयोग कर सकते हैं, अपनी भाषा को लागू करने के लिए करते हैं। आप गतिशील कॉल साइट कैशिंग प्राप्त करने के लिए सी # या वीबी जैसे टुकड़े-भोजन का उपयोग कर सकते हैं (अवधारणाओं पर सामान्य जानकारी के लिए इनलाइन पॉलीमोर्फिक कैशिंग की खोज)। इसलिए, सी # गतिशील 'कीवर्ड जोड़ना, और यह इस भाषा सुविधा को लागू करने के लिए डीएलआर के कॉलसाइट्स, बाइंडर्स, डायनामिक मेटा ऑब्जेक्ट्स इत्यादि का उपयोग करता है।

हां, डीएलआर एक व्यवहार्य विशेषता है और सी # के लिए समझ में आता है। सी # COM इंटरऑप, अवांछित डेटा स्रोत (डीबी, एक्सएमएल, इत्यादि) के लिए वीबी के पीछे था, और वेब पेजों के पीछे हल्के वजन वाक्यविन्यास के लिए (उदा। बटन.टेक्स्ट = "यो")। जब मुझे एक भाषा पसंद है, तो इसे आम तौर पर उपयोगी पाते हैं, या इसमें मेरी शक्ति को देखते हैं, मैं जितनी ज्यादा हो सके उस भाषा का उपयोग करना पसंद करता हूं। मैं कई भाषाओं का उपयोग करके मेरे समाधान में एक साथ घूमना और रखरखाव ओवरहेड बनाना नहीं चाहता हूं जब तक कि मुझे वास्तव में ऐसा करने की आवश्यकता न हो। सी # की 'गतिशील' मुझे उन चीजों को करने देती है जो मैं सी # में पहले से ही बहुत आसान और स्वादिष्ट तरीके से कर सकता हूं, और इसका निश्चित रूप से मतलब है कि मुझे पूरी तरह से गतिशील या वैकल्पिक रूप से स्पष्ट रूप से टाइप की गई भाषा का सहारा लेना नहीं है, ताकि कोड को और अधिक लिखना आसान हो सके। अब स्थितियां

डीएलआर के साथ कोड विकसित करना यदि आप किसी भाषा या बड़ी, समृद्ध प्रणाली में गतिशील प्रकार की विशेषताएं जोड़ने की कोशिश कर रहे हैं। जैसा कि अक्सर उद्धृत किया जाता है, "किसी भी पर्याप्त जटिल ... कार्यक्रम में एक विज्ञापन है ... कार्यान्वयन ... लिस्प।" यदि आपको लगता है कि आपको डेटा या ऑब्जेक्ट्स के लिए कुछ गतिशील रूप से टाइप की गई पहुंच की आवश्यकता है, तो कुछ इनपुट के अर्थ के कुछ ऑपरेशन का अर्थ है और प्रोग्राम में उस स्थान पर बाद के समान कंप्यूटेशंस के लिए उस क्रिया को कैश करना चाहते हैं, तो डीएलआर आपको ऐसा करने में मदद करता है कम लागत के रास्ते में। बात यह है कि, आपको इस स्तर पर डीएलआर का उपयोग करने की भी आवश्यकता नहीं है क्योंकि सी # ने आपके लिए 'गतिशील' पेश किया है। हालांकि, आप अपने डेटा स्रोतों का प्रतिनिधित्व करने वाली कुछ ऑब्जेक्ट्स पर IDynamicMetaObjectProvider को कार्यान्वित करना चाह सकते हैं ताकि वे बाध्यकारी संचालन में भाग ले सकें जो सी # की गतिशील प्रेषण कॉल करने का प्रयास करती है। इसका एक उदाहरण होगा यदि XmlElement ने IDMOP को कार्यान्वित किया ताकि आप कुछ लिख सकें: गतिशील x = source.GetXmlElement (...); ... एक्स। ग्राहक [i]। एड्रेस.सिटी == "एरी" ...

लाभ डेटा या ऑब्जेक्ट्स के खिलाफ लिखे गए कोड में अभिव्यक्ति की उच्च डिग्री हैं जो स्वाभाविक रूप से उनकी प्रकृति द्वारा गतिशील हैं जटिल इंटरमीडिएट प्रकार की घोषणाओं को व्यक्त करने के लिए और ओ। गेटब्लैबबीनाम ("जो कुछ भी") कॉल करता है।

डीएलआर दस्तावेज़ों से उद्धृत अनुच्छेद डीएलआर पर भाषा लागू करने के बारे में है। हां निश्चित रूप से आपके ऐप्स को लाभ भी मिलते हैं। बिंदु इस बात के बारे में अधिक था कि उदाहरण के लिए, डीएलआर के आगमन की वजह से आयरनपीथन सिर्फ तेज नहीं हुआ, लेकिन सीएलआर ने स्वयं ही काम किया जो अप्रत्यक्ष रूप से डीएलआर पर आयरनपीथन कार्यान्वयन में सुधार हुआ।

डीएलआर सीखना परेशान न करें जब तक कि आपको अपनी भाषा या सिस्टम में कुछ कैश किए गए गतिशील पहुंच को जोड़ने की आवश्यकता न हो। अधिकांश लोग जटिलता के इस स्तर पर कोड नहीं करते हैं। अधिकांश लोग भाषाएं और ढांचे का उपयोग करते हैं, कुछ लोग उन्हें लागू करते हैं।

एफ # डीएलआर का उपयोग कर सकता है, लेकिन एक आम गलतफहमी यह है कि एफ # एक गतिशील भाषा है। यह नहीं। यह कड़ाई से स्थाई रूप से टाइप किया गया है, लेकिन यह स्पष्ट रूप से सभी मामलों में टाइप नहीं किया गया है, जो लोगों को भ्रमित करता है। टाइपिंग इनफ्रेंसिंग और महत्वपूर्ण व्हाइटस्पेस के भारी उपयोग के कारण यह हल्के ढंग से हल्के दिखता है। यदि एफ # एक दिन के रूप में 'गतिशील' प्रकार मॉडल जोड़ने का फैसला करने के लिए एक दिन था, तो यह कार्यान्वयन की आसानी के लिए डीएलआर का उपयोग करने और सी # के साथ इंटरऑप के लिए, .NET, गतिशील पुस्तकालयों और ढांचे पर गतिशील भाषाओं के लिए समझ में आता है। , आदि

बिल

+0

बढ़िया, धन्यवाद! – dexter

+0

[ImpromptuInteface.FSharp] (http://nuget.org/List/Packages/ImpromptuInterface.FSharp) गतिशील कीवर्ड जैसे एफ # - [नमूना कोड के साथ उपयोग] जोड़ता है (http://code.google.com/p/ अचानक इंटरफ़ेस/wiki/UsageFSharp) – jbtule

संबंधित मुद्दे