डी का संस्करण 1 परिपक्व और स्थिर है, और निश्चित रूप से लोग हैं जो वास्तविक काम के लिए इसका उपयोग करते हैं। फोबोस एकमात्र मानक लाइब्रेरी है जिसे डी ने कभी भी किया होगा या संभवतः कभी भी होगा, लेकिन डी 1 के फोबोस में पर्याप्त कमी है कि अंतराल को भरने के लिए विभिन्न तृतीय-पक्ष पुस्तकालय बनाए गए थे। टैंगो इनमें से सबसे बड़ा है और यह सबसे अधिक इस्तेमाल होने वाली तीसरी पार्टी लाइब्रेरी है (इसलिए इसे अक्सर दूसरी मानक लाइब्रेरी क्यों कहा जाता है, भले ही यह नहीं है, और वाल्टर ब्राइट यह इंगित करने के लिए जल्दी होगा कि यह नहीं है)। हालांकि, डी 1 में टैंगो और फोबोस बहुत अच्छी तरह से मिश्रण नहीं करते हैं (आईआईआरसी क्योंकि टैंगो कचरा कलेक्टर जैसे कुछ मानक सामान को प्रतिस्थापित करता है), इसलिए एक अच्छा मौका है कि डी 1 में प्रोग्रामिंग करने वाले व्यक्ति फोबोस के बिना टैंगो का उपयोग करेंगे। इसके अलावा, डी 1 डिजिटल मंगल से प्राथमिक कंपाइलर के अलावा कई कंपाइलरों द्वारा समर्थित है - एलडीसी और जीडीसी समेत।
डी का संस्करण 2 अभी परिपक्वता और स्थिरता तक पहुंच रहा है। उन्होंने भाषा में बड़े बदलाव करना बंद कर दिया है, इसलिए आपको आमतौर पर एक कंपाइलर अपडेट के साथ आपके साथ तोड़ने वाली हर चीज़ के बारे में चिंता करने की ज़रूरत नहीं है, जैसा कि अतीत में मामला था, जबकि वे अभी भी भाषा को कम कर रहे थे। वास्तव में, अब यह परिपक्व है कि आंद्रेई अलेक्जेंड्रेस्कू ने डी प्रोग्रामिंग भाषा को उस भाषा पर एक निश्चित संसाधन के रूप में जारी किया है जो टेक्स्ट में त्रुटियों को वैध छोड़ने के लिए रहना चाहिए (और यह सबसे अच्छी प्रोग्रामिंग भाषा पुस्तकों में से एक है जिसे मैंने पढ़ा है) । हालांकि, अभी भी बहुत सारे बग फिक्सिंग चल रहे हैं, इसलिए एक बग में भागना काफी संभव है जो आपको अपने विशेष आवेदन के लिए जलन का थोड़ा सा कारण बनता है। यह निश्चित रूप से पर्याप्त परिपक्व है और इसके साथ वास्तविक काम करने के लिए पर्याप्त स्थिर है, लेकिन सावधान रहें कि बग में चलना काफी संभव है।
टैंगो को अभी तक डी 2 पर पोर्ट नहीं किया गया है, इसलिए यह वास्तव में एक विकल्प नहीं है जब डी 2 में प्रोग्रामिंग हो। हालांकि, फोबोस काफी अच्छी तरह से आ रहा है। इसमें बहुत बढ़िया जोड़ मिल रहे हैं (इसमें वास्तव में कंटेनर हैं! - फोबोस के कंटेनरों की कमी फोबोस की बजाय डी 1 में टैंगो का उपयोग करने का एक बड़ा कारण है), और इसमें कुछ वास्तव में शक्तिशाली चीजें हैं - std.algorithm है विशेष रूप से अच्छा है। जिस तरह से डी लैम्ब्डा फ़ंक्शंस को नियंत्रित करता है, नेस्टेड फ़ंक्शंस और फ़ंक्शन पॉइंटर्स एल्गोरिदम को प्रकाश-वर्ष आसान बनाता है, यह सी ++ के वर्तमान मानक में है। इसके अलावा, इसे डी 2 में तय किया गया है ताकि कचरा कलेक्टर और कुछ अन्य मुख्य सामान जो टैंगो डुप्लिकेट कर रहा था अब फोबोस से अलग है। इसलिए, एक बार टैंगो को डी 2 में भेज दिया गया है, तो आप फोबोस और टैंगो कोड को मिश्रण करने में सक्षम होंगे - हालांकि पिछले जवाब में बताया गया है, फोबोस और टैंगो बल्कि अलग-अलग डिज़ाइन दर्शन का उपयोग करते हैं (टैंगो बहुत जावा-जैसी और फोबोस इंटरफेस के बजाए बतख-टाइपिंग के साथ टेम्पलेट्स और मेटा-प्रोग्रामिंग का भारी उपयोग करना), इसलिए मुझे नहीं पता कि वे उस दृष्टिकोण से कितनी अच्छी तरह मिश्रण करेंगे।
वर्तमान में, मुझे विश्वास है कि डीएमडी केवल संकलक जो साथ-टू-डेट डी 2 के लिए कल्पना के संबंध है, लेकिन मुझे विश्वास है कि वहाँ काम हालांकि कैसे सक्रिय है कि (जीडीसी और एलडीसी डी compilers पर किया जा रहा है काम है, मुझे नहीं पता)। इसके अलावा, वाल्टर ब्राइट वर्तमान में डीएमडी के 64-बिट पोर्ट पर काम कर रहा है, इसलिए हमें इन दिनों में से एक अपेक्षाकृत जल्द ही देशी 64-बिट संकलन मिल जाएगा।
कुल मिलाकर, मैं कहूंगा कि डी 2 उपयोग के लिए तैयार है, लेकिन आपको यह पता होना चाहिए कि बग फिक्स और इसी तरह के संबंध में अभी भी बहुत सारे काम किए जा रहे हैं। इसलिए, डी 2 शौक के उपयोग के लिए निश्चित रूप से तैयार है और संभावित रूप से काम पर गंभीर उपयोग के लिए तैयार है, लेकिन यदि आप वास्तव में स्थिरता की आवश्यकता है (जैसे कि आप बोइंग और गलती का मतलब मृत्यु है), तो डी 1 अभी भी बेहतर विकल्प होगा।बेशक, डी 2 के बारे में याद रखने की बड़ी बात यह है कि इसमें बहुत सी विशेषताएं हैं जिनके पास डी 1 नहीं है, इसलिए जब तक आपको वास्तव में रॉक-ठोस स्थिरता की आवश्यकता नहीं होती है, तो डी 2 संभवतः जाने का तरीका है। सौभाग्य से, यह परिपक्व और स्थिर हो रहा है, इसलिए समय निश्चित रूप से आ रहा है जब कोई प्रश्न नहीं होगा कि डी 2 का उपयोग बेहतर होगा।
भले ही, डी 1 और डी 2 दोनों सामान्य मामले में सी और सी ++ के लिए अच्छी प्रतिस्थापन हैं। वे सी और सी ++ क्या कर सकते हैं, और (विशेष रूप से डी 2 के मामले में) शायद यह बेहतर कर सकता है। मुख्य स्थान जो डी पीछे पड़ सकता है वह यह है कि यह कितनी अच्छी तरह अनुकूलित है। बहुत सारे कोड हैं जो सी या सी ++ में डी में जितना तेज़ होंगे, लेकिन अभी भी डी पर बहुत सारे काम किए जा रहे हैं, इसलिए इसे अनुकूलित करने के लिए बहुत सारे कमरे हैं, और कभी-कभी यह दक्षता के लिए सी और सी ++ के पीछे अंतराल होगा । इसलिए, आम तौर पर, डी कुशल है, लेकिन यदि आप वास्तव में जितना अधिक दक्षता प्राप्त कर सकते हैं, तो आपको इसकी आवश्यकता के लिए पर्याप्त नहीं हो सकता है (हालांकि यह वहां हो रहा है)। इसके अलावा, वहाँ बहुत सारे परिपक्व सी और सी ++ पुस्तकालय हैं, जबकि डी के पास काम करने के लिए बाहर निकलने वाले कोड के समान स्तर के पास कहीं भी नहीं है। किसी भी सी कोड का उपयोग डी के साथ किया जा सकता है क्योंकि सी कार्यों को डी से बुलाया जा सकता है, और कुछ सी ++ कोड हो सकते हैं (हालांकि डी के साथ सी ++ कोड मिश्रण करते समय कुछ प्रतिबंध हैं), इसलिए यह आवश्यक नहीं होगा एक बाधा, लेकिन यह कुछ पता होना चाहिए। मुख्य स्थान जहां इसकी कमी है जीयूआई पुस्तकालय होंगे। डी 1 के लिए कुछ हैं, और डी 2 के लिए जीयूआई पुस्तकालयों पर काम किया जा रहा है, लेकिन मुझे विश्वास नहीं है कि उनमें से कोई भी इस बिंदु पर विशेष रूप से परिपक्व है।
तो, सबकुछ के साथ, आपको कौन सी भाषा का उपयोग करना चाहिए, इस पर निर्भर करता है कि आप क्या कर रहे हैं। डी ज्यादातर चीजें करेगा और उन्हें अच्छी तरह से करेगा। लेकिन यह सब कुछ नहीं करता है, और यह अभी भी परिपक्व है। निजी तौर पर, इस बिंदु पर, मैं डी का उपयोग करता हूं जब तक कि मुझे किसी विशेष प्रोजेक्ट के लिए कुछ और उपयोग करने की आवश्यकता नहीं होती है, जो तब तक नहीं होता है जब तक कि परियोजना किसी अन्य चीज़ में पहले से ही लिखी नहीं जाती है, और इसे अभी पोर्ट करने के लिए यह समझ में नहीं आता है। इसलिए, मैं अत्यधिक डी का उपयोग करने का सुझाव देता हूं, लेकिन आपको इसे देखना होगा और यह देखने के लिए इसका उपयोग करना होगा कि क्या यह वास्तव में आप इस बिंदु पर जो चाहते हैं वह करेंगे।
मुझे लगता है कि यह समुदाय-विकी होना चाहिए। आप [वाल्टर ब्राइट्स] (http://stackoverflow.com/users/33949/walter-bright) उत्तरों को देख सकते हैं। वह कभी-कभी यहां स्टैक ओवरफ्लो पर डी की स्थिति के बारे में प्रश्नों का उत्तर देता है। – Lucas
मैं (व्यक्तिगत रूप से) डी की तुलना में एक और भाषा चुनता हूं, हालांकि मैं अलेक्जेंड्रेस्क के काम की सराहना करता हूं। इस विकल्प को अपने आप को सीमित करने के बजाय, आपको शायद उपलब्ध विभिन्न भाषाओं में खोजना चाहिए। मैं अभी तक जाने के लिए नहीं जाऊंगा, बहुत अस्थिर, और अंत में यह एक नई भाषा सीखने की आपकी इच्छा पर निर्भर करता है। –
"सी के लिए सही प्रतिस्थापन क्या है" इस बात पर निर्भर करता है कि आप भाषा के साथ क्या करना चाहते हैं। जवाब आपके अलग-अलग गुणों के आधार पर अलग-अलग होंगे। इसलिए मैं सी के कुछ पहलुओं को सूचीबद्ध करने की अनुशंसा करता हूं जो आप सबसे महत्वपूर्ण मानते हैं। – Baxissimo