मेरे 2 सेंट।
मुझे लगता है कि केवल C / C ++ के बजाय, इस बारे में आम तौर पर लिखना आसान है। सबसे पहले, पायथन जैसी भाषाओं में पुस्तकालयों को आवश्यक रूप से गति लाभ प्राप्त करने के लिए उपयोग नहीं किया जाता है, भले ही वह एक परिणाम हो। मुझे लगता है कि
@ डेविड ने कारणों को अच्छी तरह से कवर किया।
इसे ऊपर से लेते हुए, कुछ हद तक भाषा कार्यान्वयन यह निर्धारित करता है कि आपके पास कौन से पुस्तकालय हैं। कम्प्यूटेशनल विज्ञान में आमतौर पर इस्तेमाल की जाने वाली भाषाओं में सी, सी ++, पायथन, पर्ल, जावा, फोरट्रान और आर। कम आम उदाहरण ओकेमेल और कॉमन लिस्प हो सकते हैं। अब, चूंकि इन भाषाओं में से अधिकांश सी में लिखे गए हैं, उनके पास सी के लिए एक प्राकृतिक विदेशी फ़ंक्शन इंटरफ़ेस है। हालांकि, कॉल करना इतना आसान नहीं है, कहते हैं, पायथन से एक पर्ल लाइब्रेरी या इसके विपरीत। तो व्यवहार में लोग या तो करते हैं
उनकी कार्यान्वयन भाषा में लिखी गई लाइब्रेरी का उपयोग करें, जो कि मानक पुस्तकालयों का हिस्सा है, या अन्यथा व्यापक रूप से उपलब्ध है, या
FFI भाषाओं के माध्यम से C / C ++ लाइब्रेरी को कॉल करें। यह मानता है कि एक आवरण पहले से मौजूद नहीं है, क्योंकि अगर यह होता है, तो यह आसानी से (1) से अलग नहीं होता है।
(2) आमतौर पर कठिन होता है, क्योंकि आपको C / C ++ फ़ंक्शन को स्वयं लपेटना होता है। इसके अलावा, आपको या तो पुस्तकालय को बंडल करना होगा, या एक अतिरिक्त निर्भरता जोड़ना होगा। उस कारण से, लोग जीएसएल का उपयोग करने के बजाय अंतर्निहित भाषा पुस्तकालयों का उपयोग करने की अधिक संभावना रखते हैं, उदाहरण के लिए, जो सी में है।
बहुत सामान्य दिनचर्या के लिए, वितरण से यादृच्छिक नमूने उत्पन्न करना, या इंटीग्रल के चतुर्थांश जैसे बुनियादी संख्यात्मक दिनचर्या बनाना, कुछ पुस्तकालय का पुन: उपयोग करना आसान और सामान्य है। जैसा कि कार्यक्षमता को लागू करने की कोशिश कर रहा है वह अधिक जटिल हो जाता है, यह तेजी से अधिक संभावना नहीं बन जाता है कि एक व्यक्ति को किसी अन्य पुस्तकालय में सटीक फ़ंक्शन ढूंढना पड़ रहा है, और यहां तक कि एक भी करता है, व्यक्ति बहुत समय खोज और अंत में फ़ंक्शन को अपनाने में खर्च कर सकता है आवश्यक (कोड शैली / डिजाइन उदाहरण के लिए एक समस्या हो सकती है)। और जैसा कि ऊपर चर्चा की गई है, एक के पास पुस्तकालयों के केवल सबसेट तक पहुंच है। दूसरी ओर, एक एल्गोरिथ्म को लागू करना, यदि यह जटिल है और मुख्य फोकस कठिन नहीं है, और निश्चित रूप से उन pesky गति के मुद्दों से निपटना है।
तो, यह लागत / लाभ विश्लेषण में एक अनुकूलन समस्या बन जाती है। मेरा अनुभव यह है कि एमसीएमसी जैसी तुलनात्मक रूप से मानक तकनीकों के लिए भी, मैं आमतौर पर अपना कोड लिखना बंद कर देता हूं, क्योंकि यह इस बात से बेहतर है कि मैं समग्र सॉफ्टवेयर को कैसे डिजाइन कर रहा हूं।
बेशक, भले ही आप कोड का उपयोग न करें, अन्य लोगों के कोड से सीखना संभव है। मैं नहीं जानता कि वैज्ञानिक वास्तव में ऐसा करने के लिए कितनी बार परेशान होते हैं। मेरी धारणा है कि सीखने के लिए अन्य लोगों के कोड को पढ़ना एक सॉफ्टवेयर इंजीनियर की बात है।