2008-11-18 17 views
16

जब हम .NET दुनिया के बारे में बात करते हैं तो सीएलआर वह सब कुछ है जो हम करते हैं। सीएलआर का न्यूनतम ज्ञान क्या है एक .NET प्रोग्रामर को एक अच्छा प्रोग्रामर होना चाहिए? क्या आप मुझे एक/बहुत से विचार कर सकते हैं जो आपको लगता है/सबसे महत्वपूर्ण विषय हैं: जीसी ?, ऐपडोमेन ?, थ्रेड ?, प्रक्रियाएं ?, असेंबली/फ़्यूज़न?सीएलआर का न्यूनतम ज्ञान क्या है एक .NET प्रोग्रामर को एक अच्छा प्रोग्रामर होना चाहिए?

यदि आप लेख, ब्लॉग, किताबें या अन्य विषयों के लिंक पोस्ट करते हैं तो अधिक सराहना करेंगे यदि अधिक जानकारी मिल सकती है।

अद्यतन: मैंने कुछ टिप्पणियों से देखा कि मेरा प्रश्न कुछ लोगों के लिए स्पष्ट नहीं था। जब मैं सीएलआर कहता हूं तो मेरा मतलब नहीं है। नेट फ्रेमवर्क। यह .NET पुस्तकालयों को याद रखने के बारे में नहीं है, यह समझने के लिए है कि निष्पादन वातावरण (जिसमें वे पुस्तकालय रनटाइम पर रहते हैं) काम करते हैं।

मेरा प्रश्न सीधे जॉन रॉबिन्स द्वारा "माइक्रोसॉफ्ट® .NET" पुस्तक (जिसे मैं अनुशंसा करता हूं) के लेखक डीबगिंग द्वारा प्रेरित किया गया था और यहां के सहयोगी ने विंटेललेक्ट में जेफरी रिचटर का हवाला दिया। प्रारंभिक अध्यायों में से एक में वह कह रहा है कि "... किसी भी .NET प्रोग्रामर को पता होना चाहिए कि जांच क्या है और रनटाइम में असेंबली कैसे लोड की जाती है"। क्या आपको लगता है कि ऐसी अन्य चीजें हैं?

अंतिम अद्यतन: "सी # के माध्यम से सीएलआर" के पहले 5 अध्याय पढ़ने के बाद मुझे इसे पढ़ने वाले किसी को भी कहना होगा। यदि आप पहले से नहीं हैं, तो इस पुस्तक को पढ़ें!

उत्तर

31

उन में से अधिकांश तरीका कुछ ऐसी बातें की तुलना में गहरी हैं कई डेवलपर्स नीचे पर गिर जाते हैं मेरे अनुभव में। मेरे अनुभव में सबसे ग़लत समझा (और महत्वपूर्ण) पहलुओं:

  • मूल्य प्रकार बनाम संदर्भ प्रकार
  • मूल्य
  • प्रतिनिधियों द्वारा
  • रेफरी बनाम पास से पास चर वस्तुओं बनाम और घटनाओं
  • भाषा के बीच भेद , रनटाइम और फ्रेमवर्क
  • बॉक्सिंग
  • कचरा संग्रह

"वस्तुओं बनाम चर" के मोर्चे पर, यहाँ कोड के बारे में तीन कथन हैं

string x = "hello"; 
  • (बहुत बुरा) x (थोड़ा बेहतर) 5 पत्र
  • साथ एक स्ट्रिंग है x एक है 5 अक्षरों के साथ एक स्ट्रिंग का संदर्भ
  • (सही) x का मान 5 अक्षरों
के साथ एक स्ट्रिंग का संदर्भ है

जाहिर है कि पहले दो "अनौपचारिक" वार्तालाप में ठीक हैं, लेकिन केवल अगर सभी शामिल हैं तो वास्तविक स्थिति को समझते हैं।

+0

प्लस अपवाद हैंडलिंग और कचरा संग्रह –

+6

बॉक्सिंग? क्या नेट डेवलपर्स वास्तव में उस पर उठाए जाते हैं? :) – EBGreen

+0

अपवाद हैंडलिंग मेरे अनुभव में अपवादों की मौलिक समझ की तुलना में अच्छे डिजाइन का एक मामला है। लेकिन हाँ, मैं सूची में जीसी जोड़ दूंगा। –

4

अपडेट किया गया: एक अच्छा संदर्भ जेफरी Richter..this पुस्तक द्वारा सी # के माध्यम से पुस्तक CLR के प्रासंगिक भागों को पढ़ने हो सकता है ..

+0

मैंने उस पुस्तक के बारे में भी नहीं सुना है, फिर भी मैंने सीएलआर के साथ बहुत काम किया है और आप सभी को एपडोमेन/असेंबली/आदि/आदि के बारे में बता सकते हैं। क्या मैं किसी कणिका एकल पुस्तक को पढ़ने के लिए किसी भी तरह कम योग्य नहीं हूं? –

+0

मेरा मतलब यह नहीं था। मैंने इसे बहुत देर से पढ़ा। बस यह बहुत सी clr संबंधित सामान के लिए एक अच्छी समेकित जगह है। मेरी पोस्ट संपादित करेंगे। –

+0

सहमत हुए .. ज्ञान प्राप्त करने के लिए अलग-अलग लोगों के पास अलग-अलग पथ हैं। –

0

जॉन का जवाब अच्छा है। वे सभी काफी बुनियादी हैं लेकिन महत्वपूर्ण क्षेत्रों में बहुत से डेवलपर्स की अच्छी समझ नहीं है। मुझे लगता है कि मूल्य और संदर्भ प्रकारों के बीच अंतर जानने से जीसी में कैसे बुनियादी समझ में आता है।नेट व्यवहार करता है, लेकिन, सबसे महत्वपूर्ण बात यह है कि निपटान पैटर्न की अच्छी समझ महत्वपूर्ण है।

आपके द्वारा उल्लेख किए गए शेष क्षेत्रों में सीएलआर के बारे में बहुत गहरा ज्ञान है या अधिक उन्नत अवधारणाएं जिनका व्यापक रूप से उपयोग नहीं किया जाता है (अभी तक)। [.NET 4.0 समानांतर एक्सटेंशन और MEF की शुरूआत के साथ इस बात का कुछ बदलने के लिए शुरू कर देंगे।]

+0

सहमत हैं, यह स्वीकार करते हैं कि आईडीस्पोज़ेबल को समझना महत्वपूर्ण है। हालांकि इसका कोई ढांचा नहीं है क्योंकि इसकी ढांचा और भाषा अवधारणा है। सीएलआर इसके बारे में कुछ नहीं जानता .. –

+0

सीएलआर पूरी तरह से आईडीस्पोजेबल के बारे में जानता है क्योंकि यह अभिन्न है सीएलआर द्वारा किए गए मेमोरी मैनेजमेंट प्रसंस्करण के लिए। –

1

मेमोरी मैनेजमेंट के बारे में पता होना चाहिए, प्रतिनिधि

1

जॉन का जवाब मुझे (प्लस प्रतिनिधियों) के लिए बहुत पूरा हो रहा है लेकिन मुझे लगता है कि मूल रूप से एक अच्छे प्रोग्रामर को जो मौलिक रूप से अलग करता है, वह जवाब देने के बजाय सवालों का जवाब दे रहा है। यह जानना बहुत अच्छा है कि कचरा संग्रह कैसे काम करता है और मूल्य प्रकार और संदर्भ प्रकार कैसे काम करते हैं, लेकिन यह मानने के लिए एक अन्य स्तर है कि मूल्य प्रकार बनाम संदर्भ प्रकार का उपयोग कब करें। भाषा में बोलने के बीच एक अंतर यह है कि एक भाषा में भाषण दे रहा है (यह सब कुछ है कि हम अपने ज्ञान को कैसे लागू करते हैं और हम उन निर्णयों पर कैसे पहुंचते हैं)।

+1

जानना महत्वपूर्ण क्यों है, लेकिन जब तक आप समझते हैं कि कोई चीज़ कैसे काम करती है, तो आप विश्वसनीय रूप से जवाब नहीं दे सकते कि आपको इसे दिए गए सी के तहत क्यों उपयोग करना चाहिए (या नहीं) onditions। –

+0

सहमत ... मैं बस टिप्पणी कर रहा था कि कुछ कैसे किया जाता है। वास्तव में एक औसत डेवलपर और एक महान डेवलपर के बीच अंतर क्यों अलग करता है – user38734

0

एक चीज जो समझने में वास्तव में मुश्किल हो सकती है वह स्थगित निष्पादन और पसंद है।

आप कैसे समझाते हैं कि एक तरीका जो एक अनन्य काम करता है? एक प्रतिनिधि वास्तव में क्या करता है? इस तरह बातें।

4

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

तथ्य यह है कि मैं एक "महान नेट" कहूंगा प्रोग्रामर "को सीएलआर के बारे में बहुत कुछ जानने की ज़रूरत नहीं है जब तक कि उसे सामान्य प्रोग्रामिंग सिद्धांत और अवधारणाओं के बारे में बहुत अच्छा ज्ञान हो ...

मैं महान सामान्य ज्ञान के साथ" महान जावा डेवलपर "किराए पर लेना चाहता हूं और .NET नौकरी के लिए जावा में अनुभव। नेट में एक "मास्टर"। नेट जिसमें थोड़ा अनुभव है और सोचता है कि ओ/आरएम एक स्टॉक टिकर है और संग्रहीत प्रक्रियाएं "डेटाबेस को दूर करने" का एक शानदार तरीका है ...

मैंने पीआर देखा है पेशेवर शिक्षकों नेट में "सामान्य ज्ञान" की कमी के कारण अपनी पीठ तोड़ने के बिना वास्तव में सरल चीजों को करने में पूरी तरह असफल हो जाते हैं, जबकि वे एक ही समय में "सब कुछ जानते हैं" के बारे में जानना है। नेट और सीएलआर ...

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