बहुत कम वैज्ञानिक सॉफ्टवेयर डेवलपर्स डिजाइन के अच्छे सिद्धांतों को समझते हैं, इसलिए मैं माफी मांगता हूं अगर यह जवाब थोड़ा लंबा है। एक सॉफ्टवेयर इंजीनियरिंग के नजरिए से, वैज्ञानिक सॉफ्टवेयर डेवलपर का लक्ष्य एक ऐसा समाधान तैयार करना है, जो अक्सर संघर्षरत बाधाओं का एक सेट संतुष्ट करता है ।
इन बाधाओं के कुछ विशिष्ट उदाहरण यहां दिए गए हैं, जैसा कि आपके विरल मैट्रिक्स लाइब्रेरी के डिजाइन पर लागू किया जा सकता है:
- एक महीने में पूरा हुआ
- आपके लैपटॉप और कई वर्कस्टेशन पर सही तरीके से चलता है
- कुशलता से चलता है
सॉफ्टवेयर इंजीनियरिंग से वैज्ञानिक कुछ अन्य सामान्य आवश्यकताओं पर धीरे-धीरे ध्यान दे रहे हैं:
- प्रलेखन (उपयोगकर्ता गाइड, ट्यूटोरियल, कोड टिप्पणी)
- रखरखाव (संस्करण नियंत्रण, परीक्षण, मॉड्यूलर डिजाइन)
- पुन: प्रयोज्य (मॉड्यूलर डिजाइन, "लचीलापन")
आपको इन आवश्यकताओं में से कम या ज्यादा की आवश्यकता हो सकती है। यदि आप प्रदर्शन के लिए गॉर्डन बेल पुरस्कार जीतने की कोशिश कर रहे हैं, तो एक प्रतिशत के अंश भी प्रासंगिक हैं, और कुछ न्यायाधीश आपके कोड की गुणवत्ता का मूल्यांकन करेंगे (इसलिए जब तक आप उन्हें समझा सकते हैं कि यह सही है)। यदि आप एक साझा संसाधन जैसे क्लस्टर या सुपर कंप्यूटर पर इस कोड को चलाने का औचित्य साबित करने की कोशिश कर रहे हैं, तो अक्सर आपको अपने कोड के प्रदर्शन के बारे में दावों का बचाव करना होगा, लेकिन ये शायद ही कभी बहुत कड़े होते हैं। यदि आप अपने दृष्टिकोण के प्रदर्शन लाभ का वर्णन करने वाले जर्नल में एक पेपर प्रकाशित करने की कोशिश कर रहे हैं, तो आपको अपने प्रतिद्वंद्वियों की तुलना में वैध रूप से तेज़ होने की आवश्यकता है, और 20% प्रदर्शन एक व्यापार-बंद है जिसे मैं बेहतर रखरखाव और पुन: प्रयोज्य के लिए खुशी से बनाऊंगा।
आपके प्रश्न पर वापस आते हुए, "अच्छा डिज़ाइन", पर्याप्त विकास समय प्रदान करता है, कभी भी प्रदर्शन का त्याग नहीं करना चाहिए। यदि उद्देश्य ऐसा कोड बनाना है जो जितनी तेजी से संभव हो सके, तो उन बाधाओं के आसपास कोड डिजाइन किया जाना चाहिए। आप कोड पीढ़ी, इनलाइन असेंबली जैसी तकनीकों का उपयोग कर सकते हैं, या अपनी समस्या को हल करने में मदद करने के लिए उच्च-स्तरीय पुस्तकालयों का लाभ उठा सकते हैं।
लेकिन क्या होगा अगर आपके पास पर्याप्त विकास समय नहीं है? क्या अच्छा है? खैर, यह निर्भर करता है, और कोई भी आपको अधिक संदर्भ के बिना इस सवाल का एक अच्छा जवाब देने में सक्षम होने जा रहा है।
एफडब्ल्यूआईडब्ल्यू: यदि आप वास्तव में उच्च-प्रदर्शन विरल मैट्रिक्स कर्नेल लिखने में रुचि रखते हैं, तो आपको एक अनुकूलित पेट्सक इंस्टॉल के खिलाफ तुलना करना चाहिए और उनकी टीम के साथ काम करना चाहिए यदि आप उन्हें हरा रहे हैं, तो वे ट्यून किए गए किलों को लाइब्रेरी में शामिल करने में प्रसन्न होंगे।