हर कम्प्यूटेशनल वैज्ञानिक के पास क्या मुख्य कौशल होना चाहिए? [बन्द है]


52

प्रत्येक वैज्ञानिक को आँकड़ों के बारे में थोड़ा जानना होगा: सहसंबंध का क्या अर्थ है, एक आत्मविश्वास अंतराल क्या है, और इसी तरह। इसी तरह, प्रत्येक वैज्ञानिक को कंप्यूटिंग के बारे में थोड़ा जानना चाहिए: सवाल यह है कि क्या? निर्माण और सॉफ्टवेयर का उपयोग करने के बारे में जानने के लिए हर काम करने वाले वैज्ञानिक से क्या अपेक्षा करना उचित है? कोर कौशल की हमारी सूची --- इसके बादल में "क्लाउड" या "पेटा" के साथ कुछ भी निपटने से पहले जिन चीजों को लोगों को जानना चाहिए, वे हैं ---

  • बुनियादी प्रोग्रामिंग (लूप, सशर्त, सूची, कार्य और फ़ाइल I / O)
  • शेल / बेसिक शेल स्क्रिप्टिंग
  • संस्करण नियंत्रण
  • कार्यक्रमों का परीक्षण करने के लिए कितना
  • मूल एसक्यूएल

वहाँ बहुत कुछ है जो इस सूची में नहीं है: मैट्रिक्स प्रोग्रामिंग (MATLAB, NumPy, और इसी तरह), स्प्रेडशीट जब अच्छी तरह से उपयोग किया जाता है, तो वे सबसे अधिक प्रोग्रामिंग भाषाओं के रूप में शक्तिशाली होते हैं), कार्य स्वचालन उपकरण जैसे मेक, और इसी तरह।

तो: आपकी सूची में क्या है? आपको क्या लगता है कि इन दिनों हर वैज्ञानिक से यह उम्मीद करना उचित है? और आप इसके लिए जगह बनाने के लिए ऊपर की सूची से क्या निकालेंगे? किसी के पास सब कुछ सीखने के लिए पर्याप्त समय नहीं है।


1
बड़ा अच्छा सवाल! लेकिन मैं एक बात के बारे में स्पष्ट नहीं हूं: कम्प्यूटेशनल वैज्ञानिक से आपका क्या मतलब है? कोई भी वैज्ञानिक जो अभिकलन का उपयोग करता है? या लोगों के छोटे समूह जो अपने पेशेवर शीर्षक को "कम्प्यूटेशनल वैज्ञानिक" मानते हैं?
डेविड केचेसन

9
स्टैक एक्सचेंज प्रारूप में एक सूची प्रश्न अच्छा नहीं है बनाओ । क्या हमें वास्तव में हर साइट पर इसके माध्यम से जाना है?
dmckee

4
@Dan समुदाय विकी उन सवालों के अनुमति देने का बहाना नहीं है जो साइट पर नहीं हैं। मैं उन लोगों को भी प्रोत्साहित करना चाहता हूं जो जेड से एक उदाहरण लेने का उत्तर देते हैं और कम से कम कोशिश करते हैं और बताते हैं कि आपको कुछ कौशल की आवश्यकता क्यों होगी या दूसरों की आवश्यकता नहीं होगी
इवो ​​फ्लिप 8

5
@IvoFlipse: यह एक ऐसा प्रश्न है जो किसी न किसी रूप में साइट पर मौजूद है। शायद वर्तमान में जैसा कहा नहीं गया; हो सकता है कि इसे छोटे-छोटे प्रश्नों में काट दिया जाए और फिर से तैयार किया जाए, लेकिन कम्प्यूटेशनल विज्ञान में खराब सॉफ्टवेयर इंजीनियरिंग का मुद्दा एक अत्यंत महत्वपूर्ण है, विशेष रूप से कम्प्यूटेशनल विज्ञान के रूप में एक अनुशासन अभी भी अपने प्रारंभिक चरणों में है। प्रकृति में यह लेख बताता है कि क्यों। ग्रेग अपने वेब साइट के माध्यम से कम्प्यूटेशनल विज्ञान समुदाय के लिए एक महान सेवा कर रहा है।
ज्योफ ऑक्सी

5
मैं इस सवाल से असहमत हूं। कृपया देखें (और वोट करें) meta.scicomp.stackexchange.com/questions/179/…
डेविड केचेसन

जवाबों:


46

"कम्प्यूटेशनल साइंटिस्ट" कुछ हद तक व्यापक है क्योंकि इसमें ऐसे लोग शामिल हैं जो पेपर / LaTeX के साथ संख्यात्मक विश्लेषण कर रहे हैं और प्रूफ-ऑफ-कांसेप्ट कार्यान्वयन, सामान्य उद्देश्य पुस्तकालयों को लिखने वाले लोग, और ऐसे अनुप्रयोग विकसित कर रहे हैं जो कुछ निश्चित वर्गों की समस्याओं को हल करते हैं, और उन का उपयोग करते हैं। अनुप्रयोग। इन समूहों के लिए आवश्यक कौशल अलग हैं, लेकिन "पूर्ण स्टैक" के साथ कुछ परिचित होने का एक बड़ा फायदा है। मैं बताता हूं कि मुझे लगता है कि इस स्टैक के महत्वपूर्ण हिस्से हैं, जो लोग उस स्तर पर काम करते हैं उन्हें निश्चित रूप से गहरा ज्ञान होना चाहिए।

डोमेन ज्ञान (जैसे भौतिकी और इंजीनियरिंग पृष्ठभूमि)

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

गणित

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

सॉफ्टवेयर इंजीनियरिंग और पुस्तकालय

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

उपकरण

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

LaTeX

LaTeX वैज्ञानिक प्रकाशन और सहयोग के लिए वास्तविक मानक है। LaTeX के साथ प्रवीणता आपके परिणामों को संप्रेषित करने, प्रस्तावों पर सहयोग करने आदि में सक्षम होना महत्वपूर्ण है। आंकड़ों के निर्माण की स्क्रिप्टिंग भी प्रतिलिपि प्रस्तुत करने और डेटा सिद्ध करने के लिए महत्वपूर्ण है।


7
मैं जेड से सहमत हूं। LaTeX बिल्कुल आवश्यक है! :)
पॉल

1
मैं "फिजिक्स एंड इंजीनियरिंग" को विषय विशेषज्ञता में बदल दूंगा। आखिरकार, हम सभी भौतिक विज्ञानी या इंजीनियर नहीं हैं। उत्तर के उस हिस्से की आत्मा सही जगह पर है, लेकिन एक बहुत ही आकर्षक धारणा है।
Fomite

धन्यवाद @EpiGrad, मैंने इसे उदाहरण के रूप में "डोमेन ज्ञान" में बदल दिया।
जेड ब्राउन

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

टाइपोस: "प्रोबेल्म्स" और "दफन"। एसई मुझे उन्हें ठीक नहीं करने देगा - बहुत छोटा एक संपादन।
फहीम मीठा

26

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

क्यों? खैर, अधिकांश कम्प्यूटेशनल एल्गोरिदम में, आप समय और प्रयास शिफ्टिंग डेटा के आसपास एक असाधारण राशि खर्च करते हैं और वास्तव में कुछ भी कंप्यूटिंग नहीं करते हैं। कभी एक परिमित तत्व कोड लागू? यह लगभग 90% डेटा संगठन है। इसे पूरा करने और इसे अच्छी तरह से करने के बीच अंतर कम्प्यूटेशनल दक्षता में परिमाण का एक क्रम हो सकता है।

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

  • जोड़ और गुणा तेज है, विभाजन या पारलौकिक कार्य नहीं हैं। मैंने देखा है कि बड़े लोगों को एक वर्गमूल ऑपरेशन की जगह मिलती है जिसमें तीन डिवीजनों की आवश्यकता होती है और उन्हें लगता है कि उन्होंने कुछ शानदार किया है (विभाजन और वर्गमूल महंगे हैं)।
  • स्तर 3 कैश हर साल बड़ा हो रहा है, हाँ, लेकिन लेवल 0 कैश, यानी वास्तव में तेजी से एक, अभी भी केवल कुछ ही किलोग्राम है।
  • कंपाइलर कोई जादू नहीं है। वे छोटे छोरों को नियंत्रित कर सकते हैं या बेहद सीधे-आगे के संचालन को वेक्टर कर सकते हैं, लेकिन वे उस बुलबुले को एक क्विकॉर्ट में नहीं बदलेंगे।
  • आपके अंतरतम लूप में कई उत्तराधिकार वाले पॉलीमॉर्फिक ऑब्जेक्ट्स पर तरीकों को कॉल करना वैचारिक रूप से मीठा हो सकता है, लेकिन यह आपके सीपीयू को खुद को मारना चाहता है।

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

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


2
बोरिंग बिल्कुल नहीं। मैं इस तरह से एक कोर्स करूँगा, अगर यह ऑफर पर था। :-)
फहीम मिष्ठा

18

मैं इसे बाद में जोड़ सकता हूं, लेकिन शुरुआत के लिए, मैं "शेल स्क्रिप्टिंग" निकालूंगा और इसे विशेष रूप से "पायथन स्क्रिप्टिंग" से बदल दूंगा। पायथन शेल स्क्रिप्टिंग की तुलना में बहुत अधिक पोर्टेबल है, और तुलनीय शेल और स्क्रिप्टिंग भाषाओं की तुलना में अधिक पठनीय है। विज्ञान में इसकी बड़ी मानक पुस्तकालय और लोकप्रियता (जीव विज्ञान के संभावित अपवाद के साथ, जो पर्ल का उपयोग भी करता है) इसे प्रोग्रामिंग सीखने के लिए एक अच्छी पहली भाषा का उल्लेख नहीं करने के लिए एक महान कम्प्यूटेशनल भाषा है । यह अब MIT में EECS बड़ी कंपनियों को पढ़ाया जाने वाला पहला भाषा है, और यह विशेष रूप से वैज्ञानिक कंप्यूटिंग में नौकरी बाजार में लोकप्रिय है। इसका ऑनलाइन प्रलेखन व्यापक है, और ऑनलाइन उपलब्ध पायथन पर आधारित कई प्रोग्रामिंग पाठ भी हैं।

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

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

अजगर अभी तक MATLAB नहीं है; SciPy और NumPy में अभी भी कार्यक्षमता के संदर्भ में जाने के तरीके हैं, लेकिन सामान्य उपयोगिता के संदर्भ में, मैं MATLAB की तुलना में व्यापक कार्यों के लिए पायथन का उपयोग करता हूं।


7
मैं मदद नहीं कर सकता, लेकिन इससे पूरी तरह असहमत हूं। पायथन सिस्टम मेंटेनर्स के लिए एक सिरदर्द है क्योंकि यह एक चलती लक्ष्य का एक सा है। कम्प्यूटेशनल वैज्ञानिकों को सामान के सबसे अल्पविकसित ग्लूइंग के लिए बैश या csh की एक बुनियादी समझ होनी चाहिए और उन प्रणालियों पर नौकरियों को चलाना चाहिए जिनका वे उपयोग करने की संभावना रखते हैं। अजगर महान है, और मैं आपको इसे सीखने के लिए कम्प्यूटेशनल लोगों की वकालत करने का समर्थन करता हूं, लेकिन कुछ अशिष्टता के खोल की कीमत पर नहीं।
बिल बर्थ

7
@BillBarth: मुझे लगता है कि हर कम्प्यूटेशनल वैज्ञानिक को बहुत, बहुत बुनियादी स्क्रिप्ट्स के लिए बेसिक बैश या csh सीखना पड़ता है। मैं उन बुनियादी कार्यों से परे शेल स्क्रिप्टिंग के लिए पायथन का उपयोग करने की वकालत करता हूं, क्योंकि मुझे एक हजार-ईश लाइन बैश स्क्रिप्ट विरासत में मिली है जो अनिवार्य रूप से एक कार्यक्रम चलाता है । यह सेमीफोर के रूप में आगे और पीछे की फाइलों को पास करता है, बार-बार पीबीएस को आमंत्रित करता है, और इसका परीक्षण करने का कोई तरीका नहीं है। शेल स्क्रिप्टिंग छोटे कार्यों के लिए महान है, लेकिन बड़े कार्यों के लिए नहीं, और इस डक्ट-टेप-एंड-बबलगम दुःस्वप्न ने मुझे अपनी थीसिस के कुछ साल खर्च किए हैं, यही कारण है कि मैं आग्रह कर रहा हूं।
ज्योफ ऑक्सीबेरी

2
जैसा कि मैंने कहा, मैं इस बात से असहमत नहीं हूं कि "अजगर सीखें" सूची के लिए उपयुक्त हो सकता है। मैं इसे "शेल स्क्रिप्टिंग" की कीमत पर नहीं करना चाहता। दोनों महत्वपूर्ण हैं, और कोई भी आपको अपने शेल के रूप में ipython चलाने नहीं देता है, इसलिए शेल स्क्रिप्टिंग बेहद महत्वपूर्ण है।
बिल बर्थ

3
@BillBarth: कहीं नहीं मैं सुझाव दे रहा हूं कि पायथन शेल को प्रतिस्थापित करता है। मैं केवल सुझाव दे रहा हूं कि पायथन स्क्रिप्टिंग के लिए बैश की जगह ले; मेरा मानना ​​है कि यदि आप बुनियादी बाश सीखते हैं, तो आप नियंत्रण संरचनाओं के बिना स्क्रिप्ट लिखने के लिए पर्याप्त जानते हैं, इसलिए "बैश स्क्रिप्टिंग" में गहराई से जाने की आवश्यकता नहीं है। जैसे ही आप एक नियंत्रण संरचना को शामिल करना चाहते हैं, आपको एक अलग भाषा में स्विच करना चाहिए, क्योंकि बैश में प्रोग्रामिंग सॉफ्टवेयर और लाइब्रेरी के लिए एक सिरदर्द है।
ज्योफ ऑक्सी

1
+1। कुछ समय के लिए पायथन मेरी मुख्य प्रोग्रामिंग भाषा रही है। यह सही नहीं है, लेकिन यह तब तक करेगा जब तक कोई सही प्रोग्रामिंग भाषा को लागू नहीं करता।
फहीम मिष्ठा

14

फ्लोटिंग पॉइंट मैथ। अधिकांश विज्ञान वास्तविक दुनिया के मूल्यों से संबंधित हैं, और वास्तविक दुनिया के मूल्यों को अक्सर कंप्यूटर की दुनिया में अस्थायी बिंदु के रूप में दर्शाया जाता है। फ़्लोट्स के साथ कई संभावित गोच हैं जो परिणामों की सार्थकता पर कहर बरपा सकते हैं।

इस विषय के लिए पसंदीदा संदर्भ डेविड गोल्डबर्ग http://citeseerx.ist.psu.edu/viewdoc/summary.doi=10.1.1.2.6768 द्वारा "फ्लोटिंग पॉइंट अरिथमेटिक (1991)" के बारे में पता होना चाहिए।


1
इस दस्तावेज़ का उल्लेख ऑनलाइन मंचों पर कई बार किया गया है। लेकिन यह एक बहुत लंबा और सघन लेख है, और मुझे यकीन नहीं है कि कितने लोग वास्तव में इससे उपयोगी कुछ निकाल पाए हैं।
जोहानिन

12

एक कम्प्यूटेशनल वैज्ञानिक को कंप्यूटर विज्ञान, गणित और विज्ञान / इंजीनियरिंग में एक आवेदन क्षेत्र में पर्याप्त परिचित होना चाहिए। मैं निम्नलिखित क्षेत्रों में से प्रत्येक में कौशल शामिल करूंगा:

गणित:

  1. संख्यात्मक विश्लेषण
  2. रेखीय बीजगणित
  3. साधारण, आंशिक और / या स्टोकेस्टिक विभेदक समीकरण
  4. अनुकूलन
  5. सांख्यिकी और / या संभावना
  6. विलोम सिद्धांत

कंप्यूटर विज्ञान:

  1. एल्गोरिदम
  2. डेटा संरचनाएं
  3. समानांतर प्रोग्रामिंग (MPI, OpenMP, CUDA, आदि)
  4. वैज्ञानिक दृश्य
  5. कंप्यूटर आर्किटेक्चर
  6. लिनक्स वातावरण का उपयोग करना

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


क्या आप "उलटा सिद्धांत" पर विस्तार से बता सकते हैं?
फहीम मीठा

1
@FaheemMitha: परंपरागत रूप से, हम पहले एक मॉडल के मापदंडों को निर्धारित करते हैं (उदाहरण के लिए एक आंशिक अंतर समीकरण), फिर सिस्टम के व्यवहार का निरीक्षण करते हैं। एक "उलटा समस्या" रिवर्स कर रही है। हम सिस्टम के आउटपुट की टिप्पणियों से शुरू करते हैं, और इन टिप्पणियों का उत्पादन करने वाले मॉडल के मापदंडों को निर्धारित करने का प्रयास करते हैं। उलटा सिद्धांत इस कार्य को पूरा करने के तरीकों का वर्णन करता है।
पॉल

स्पष्टीकरण के लिए धन्यवाद। क्या आपके पास इस विषय के लिए एक अच्छा लिंक / संदर्भ है?
फहीम मिष्ठा

2
en.wikipedia.org/wiki/Inverse_problem शुरू करने के लिए एक अच्छी जगह है। space.fmi.fi/graduateschool/Lectures07/HK_inversion.pdf में एक अच्छा अवलोकन भी है। लेकिन अधिक समझ के लिए मैं amazon.com/Parameter-Estimation-Inverse-Problems-Second/dp/…
पॉल

4

आकर्षक जवाब के बाद महान सवाल! मैं सिर्फ एक छोटे से जोड़ के साथ बट करना चाहूंगा। जहां तक ​​मैंने अनुभव किया है (खुद और विकराल रूप से), एक ऑल-इन-वन टूल आमतौर पर वास्तव में जानना अच्छा होता है। ऐसा उपकरण MATLAB, ऑक्टेव या यहां तक ​​कि पायथन (पुस्तकालयों के साथ) हो सकता है। जब भी आपको अपने "कम्फर्ट ज़ोन" में कोई समस्या होती है, तो एक अच्छा विचार (जहाँ तक मुझे पता है और लगता है) ऑल-इन-वन टूल में अपना हाथ आज़माना होगा। आप बाद में अपने खुद के कोड लिखने की कोशिश कर सकते हैं। ऐसे पैकेजों की खूबी यह है कि प्रोग्रामिंग आपके द्वारा किए जा रहे काम को समझने में बाधा नहीं डालती है।

कंप्यूटर ग्राफिक्स का एक उदाहरण लें। किसी आंकड़े के अनुवाद, रोटेशन या स्केलिंग के लिए एक कोड लिखना MATLAB (टॉप्स) में कोड की 10 लाइनें हैं, लेकिन यह सी में पृष्ठों के लिए चल सकता है। मैं यह नहीं कह रहा हूं कि सी अच्छा नहीं है। मैं केवल इतना कह रहा हूं कि यदि आपके पास C में कोड लिखने का कोई अच्छा कारण नहीं है, तो MATLAB एक सरल, बेहतर और अधिक सहज तरीका होगा।

कुछ असहमत हो सकते हैं और कह सकते हैं कि सी-लाइक प्रोग्रामिंग अंतर्ज्ञान के निर्माण का एक शानदार तरीका है। एसा हो सकता हे। लेकिन जब आपको कुछ समय के लिए किसी समस्या से नहीं जूझना पड़ता है, तो शायद ही आपको C जैसी भाषा में अपना कोड लिखने और लिखने के लिए वारंट दिया जाता है।


-1

सामान्य ज्ञान और आंत की भावना ... बाद वाला समय के साथ आता है और बड़े बुरे दुनिया में शर्मनाक अनुभवों के एक जोड़े के "जीवित" होने के बाद।


3
मुझे नहीं पता कि "आंत की भावना" वास्तव में एक कौशल है। यह पिछले अनुभव के लिए सिर्फ एक सहज प्रतिक्रिया है।
naught101
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.