कम्प्यूटेशनल साइंस के लिए मुझे कौन सी भाषा सीखनी चाहिए?


11

मैं कम्प्यूटेशनल विज्ञान की धारणा के लिए पूरी तरह से नया हूं, और एक अच्छे शुरुआती बिंदु की तलाश में हूं।

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

शुरू करने के लिए, मैं ग्राफिकल अभ्यावेदन / सिमुलेशन के लिए एक आवश्यकता के साथ, परमाणु संबंध और बातचीत से संबंधित मॉडलिंग की ओर झुक रहा था।

क्या कुछ भाषाएं कुछ क्षेत्रों के लिए दूसरों की तुलना में बेहतर होती हैं (यानी भौतिकी बनाम शुद्ध गणित)? या अन्य कारकों के आधार पर एक भाषा का चयन कर रहा है?

मैंने नाम सुना है फोरट्रान को बहुत चारों ओर फेंका जा रहा है।

सुझाव?


1
C ++ और फोरट्रान समुदाय में प्रसिद्ध भाषाएँ हैं। हाल ही में, आप गतिशील भाषाओं के उपयोग में वृद्धि देख सकते हैं। अक्सर आप अपनी लाइब्रेरी चुनते हैं न कि अपनी भाषा।
वैनकॉमप्यूट

9
मुझे उस हुकुम की याद आ रही है जिसे रियल प्रोग्रामर किसी भी भाषा में फोरट्रान लिख सकते हैं।
हार्डमैथ

1
यहाँ बहुत सारे उत्तरों के साथ एक समान प्रश्न है: scicomp.stackexchange.com/questions/304/c-vs-fortran-for-hpc
Ondřej íertík

1
"मैं समझता हूँ कि कोई उद्देश्यपूर्ण भाषा नहीं है" - ठीक है, तो भाषा-अज्ञेय होना क्यों नहीं सीखते, ताकि आप जिस भाषा में लिख सकते हैं, उस पर लिख सकें?
जेएम '

2
आपको अंग्रेजी में महारत हासिल करनी है। इसके बिना, आपको कम्प्यूटेशनल साइंस में कहीं भी नहीं मिलेगा।
जोहान्स

जवाबों:


15

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

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


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

3
MATLAB में MATLAB xUnit है, लेकिन पायथन और C ++ में अधिक (और, मेरी राय में, बेहतर) परीक्षण संस्कार हैं।
ज्यॉफ ऑक्सीबेरी

24

अजगर!

  1. शुरुआत सीधे का उपयोग कर numpy पुस्तकालय, छोटे स्क्रिप्ट नहीं, और IPython इंटरैक्टिव खोल।
  2. कई मुफ्त पुस्तकों और ट्यूटोरियल की मदद से और अधिक उन्नत हो जाओ ।
  3. अत्यधिक प्रदर्शन करने वाले संख्यात्मक दिनचर्या और दृश्य के लिए matplotlib के लिए एक दृश्य के रूप में scipy का उपयोग करके अधिक उत्पादक बनें
  4. वैज्ञानिक कंप्यूटिंग के लिए अच्छी तरह से विकसित और शक्तिशाली मॉड्यूल का लाभ उठाएं जैसे कि क्रिफी , FeNiCS और बहुत से अन्य
  5. ध्यान दें, कि फ्लैट और ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग और पाइथन की अंतर्निहित न्यूनाधिकता के बीच सहज संक्रमण बड़ी परियोजनाओं को संभालना आसान बनाता है।
  6. साइथन में महत्वपूर्ण भागों को फिर से लिखकर अपने कोड को C या फोरट्रान के रूप में तेजी से बनाएं । आप आसानी से फोरट्रान या सी में लिखी गई दिनचर्या को भी शामिल कर सकते हैं ।

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

:




5

फोरट्रान: मैटलैब की तरह, सीखना और उपयोग करना आसान है और जल्दी से उत्पादक हो जाता है लेकिन केवल संख्यात्मक कंप्यूटिंग के लिए अच्छा है

C ++: मास्टर करने में कठिनाई (आपको वर्षों लगेंगे) लेकिन संख्यात्मक कंप्यूटिंग (नौकरी सुरक्षा) के बाहर बहुत उपयोग किया गया

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


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

@Godric: ~ 600 पृष्ठों पर फोरट्रान 2008 का मानक C ++ 11 (~ 1300 पृष्ठों) के आधे से भी कम है
stali

1
@stali, हां, लेकिन उदाहरण के लिए, मैं फोर्ट्रान 77 में लिखी गई विरासत कोड की लगभग सवा लाख पंक्तियों के साथ काम करता हूं। इसलिए मुझे इसके साथ काम करने में सक्षम होने के लिए 77 की शैली सीखनी पड़ी, 90-95 इसे बनाए रखने योग्य परिवर्तन करने के लिए (क्योंकि सामान्य ब्लॉक अचरज हैं), और फिर '08 अतीत में एक दशक से अधिक नहीं अटकना है। फोरट्रान, जबकि एक पुरानी भाषा है, पिछले दशकों में भारी परिवर्तन हुए हैं, और जब तक आप खरोंच से शुरू नहीं कर रहे हैं, तब तक इसकी विरासत सीखना गैर-तुच्छ है।
गोड्रिक सीयर

2
मैं इस कथन से असहमत हूं कि पायथन "गैर-तुच्छ काम के लिए बहुत धीमा है"। वास्तव में, यदि आप अपने मैट्रिक्स-वेक्टर गुणा (और इस तरह) को शुद्ध रूप से पायथन में लिखते हैं, तो आपके पास एक बुरा समय आने वाला है। कुछ और अधिक कुशल भाषाओं में अमूर्तता आपके लिए पहले से ही की जा चुकी है, हालांकि: NumPy, Scipy शायद आपके पास कभी भी होगी। या अन्य 50,000 में से एक पैकेज।
निको श्लोमर

1
@ NicoSchlömer मैं "गैर-तुच्छ काम के लिए बहुत धीमा" से सहमत था। 10 वीं के बारे में फोरट्रान 90 संस्करण में एक ही कोड की तुलना में पायथन (नेम्पी / स्कैपी) में मेरा अनुकरण धीमा है। मैं Fortran90 या C ++ की सलाह देता हूं।
13

4

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

लंबे समय से उत्तर
तो, यहाँ बात है: अपने पहले प्रोजेक्ट के लिए आप किसी और के कोड पर काम कर रहे किसी लैब में होंगे। किस मामले में वे प्रोग्रामिंग भाषा चुनने वाले व्यक्ति होंगे। जो मुझे लगता है कि व्यक्तिगत रूप से महान है!

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.