सीखने में आसानी
पायथन और फोरट्रान दोनों ही अपेक्षाकृत आसानी से सीखी जाने वाली भाषाएँ हैं। शायद अच्छे फोरट्रान सीखने की सामग्री की तुलना में अच्छा पायथन शिक्षण सामग्री ढूंढना आसान है क्योंकि पायथन का उपयोग अधिक व्यापक रूप से किया जाता है, और वर्तमान में संख्यात्मक कंप्यूटिंग के लिए फोरट्रान को "विशेषता" भाषा माना जाता है।
मेरा मानना है कि पायथन से फोरट्रान तक संक्रमण आसान होगा। पायथन एक व्याख्या की गई भाषा है, इसलिए print("Hello, world!")
फोरट्रान के लिए आपके पहले प्रोग्राम को चलाने के लिए जितने कदम चल रहे हैं, वह छोटा है (दुभाषिया खोलें, प्रॉम्प्ट पर टाइप करें ) ("हैलो वर्ल्ड" प्रोग्राम लिखें, संकलन करें, रन करें)। मुझे यह भी लगता है कि फोर्ट्रान की तुलना में पायथन में ऑब्जेक्ट-ओरिएंटेड स्टाइल सिखाने के लिए बेहतर सामग्री हैं, और फोर्ट्रन कोड की तुलना में गीथब पर अधिक पायथन कोड उपलब्ध है।
विंडोज पर उठना और चलना
अजगर को स्थापित करना कम दर्दनाक होना चाहिए; विंडोज वितरण उपलब्ध हैं। मैं एनाकोंडा या उत्साहित चंदवा जैसे वैज्ञानिक वितरण का उपयोग करने की सलाह देता हूं। वास्तव में एक संकलक नहीं है, प्रति से; दुभाषिया उस भूमिका को लेता है। आप एक CPython- आधारित दुभाषिया का उपयोग करना चाहते हैं, क्योंकि इसमें अधिक संख्यात्मक पुस्तकालय उपलब्ध हैं और यह C, C ++ और Fortran के साथ अच्छी तरह से जुड़ता है। अन्य दुभाषिया कार्यान्वयनों में ज्योन और पायपी शामिल हैं।
विंडोज मशीन पर, एक फोरट्रान कंपाइलर स्थापित करना कष्टप्रद होने वाला है। विशिष्ट कमांड-लाइन कंपाइलर गफ़रन, इफोर्ट (इंटेल से, व्यक्तिगत उपयोग के लिए नि: शुल्क है, अन्यथा पैसे खर्च होते हैं), और पीजीओफ़रन (पीजीआई से; नि: शुल्क परीक्षण संस्करण, अन्यथा पैसे खर्च होते हैं) जैसे कार्यक्रम हैं। इन संकलकों को स्थापित करने के लिए, आपको कुछ प्रकार की UNIX / POSIX- प्रकार संगतता परत स्थापित करने की आवश्यकता हो सकती है, जैसे कि Cygwin या GGW। मुझे इसके साथ काम करने में दर्द हुआ, लेकिन कुछ लोग उस वर्कफ़्लो को पसंद करते हैं। आप GUI के साथ एक संकलक भी स्थापित कर सकते हैं, जैसे दृश्य फोरट्रान (फिर, आपको लाइसेंस के लिए भुगतान करना होगा)।
लिनक्स पर, पायथन और संकलक स्थापित करना आसान होगा; मैं अब भी पायथन डिस्ट्रीब्यूशन के रूप में एनाकोंडा या एक्साइटेड कैनोपी स्थापित करूंगा।
गति: एक उत्पादकता बनाम प्रदर्शन व्यापार
पायथन (या MATLAB, गणितज्ञ, मेपल, या किसी भी व्याख्या की गई भाषा) का उपयोग करते हुए, आप उत्पादकता के लिए प्रदर्शन छोड़ देते हैं। फोरट्रान (या सी ++, सी, या किसी अन्य संकलित भाषा) की तुलना में, आप एक ही कार्य को पूरा करने के लिए कोड की कम पंक्तियाँ लिखेंगे, जिसका आम तौर पर मतलब है कि आपको काम करने का समाधान प्राप्त करने में कम समय लगेगा।
पायथन का उपयोग करने के लिए प्रभावी प्रदर्शन दंड भिन्न होता है, और संकलित भाषाओं को कम्प्यूटेशनल रूप से गहन कार्यों को सौंपने से कम किया जाता है। MATLAB कुछ ऐसा ही करता है। जब आप MATLAB में एक मैट्रिक्स गुणा करते हैं, तो यह BLAS कहता है; प्रदर्शन जुर्माना लगभग शून्य है, और आपको उच्च प्रदर्शन प्राप्त करने के लिए कोई फोरट्रान, सी या सी ++ नहीं लिखना था। इसी तरह की स्थिति पाइथन में मौजूद है। यदि आप पुस्तकालयों का उपयोग कर सकते हैं (उदाहरण के लिए, NumPy, SciPy, petsc4py, FEniCS से प्योल्फिन, PyClaw), तो आप पायथन में अपने सभी कोड लिख सकते हैं और अच्छा प्रदर्शन (शायद 40-40% का जुर्माना) प्राप्त कर सकते हैं क्योंकि सभी कम्प्यूटेशनल रूप से गहन भागों को तेजी से संकलित भाषा पुस्तकालयों के लिए कॉल किया जाता है। हालाँकि, यदि आप शुद्ध पायथन में सब कुछ लिखना चाहते हैं, तो प्रदर्शन दंड 100-1000x का कारक होगा। इसलिए यदि आप पायथन का उपयोग करना चाहते हैं और एक रिवाज को शामिल करना है, कम्प्यूटेशनल रूप से गहन दिनचर्या, आप उस भाग को C, C ++, या फोरट्रान जैसे संकलित भाषा में लिखना बेहतर होगा, फिर इसे पायथन इंटरफेस के साथ लपेटेंगे। ऐसे पुस्तकालय हैं जो इस प्रक्रिया को सुविधाजनक बनाते हैं (जैसे साइथन और f2py), और ट्यूटोरियल आपकी मदद करने के लिए; यह आमतौर पर नहीं होता है।
उपयोग की गुंजाइश
पाइथन को सामान्य प्रयोजन की भाषा के रूप में अधिक व्यापक रूप से उपयोग किया जाता है। फोरट्रान काफी हद तक संख्यात्मक और वैज्ञानिक कंप्यूटिंग तक सीमित है, और मुख्य रूप से उस डोमेन के उपयोगकर्ताओं के लिए C और C ++ के साथ प्रतिस्पर्धा कर रहा है।
कम्प्यूटेशनल विज्ञान में, पायथन आमतौर पर मेरे द्वारा उल्लिखित प्रदर्शन दंड के कारण सीधे संकलित भाषाओं के साथ प्रतिस्पर्धा नहीं करता है। आप उन मामलों के लिए पायथन का उपयोग करेंगे जहां आप उच्च उत्पादकता चाहते हैं और प्रदर्शन एक माध्यमिक विचार है, जैसे कि संख्यात्मक रूप से गहन एल्गोरिदम, डेटा प्रोसेसिंग और विज़ुअलाइज़ेशन को प्रोटोटाइप में। आप फोरट्रान (या अन्य संकलित भाषा) का उपयोग करेंगे, जब आपके पास अपने एल्गोरिथ्म और एप्लिकेशन डिज़ाइन का एक अच्छा विचार होगा, तो आप अपना कोड लिखने और डिबग करने में अधिक समय बिताने के लिए तैयार हैं, और प्रदर्शन सर्वोपरि है। (उदाहरण के लिए, प्रदर्शन आपके सिमुलेशन प्रक्रिया में एक सीमित कदम है, या यह आपके शोध में एक महत्वपूर्ण कार्य है।) एक सामान्य रणनीति पायथन और संकलित भाषा (आमतौर पर C या C ++, लेकिन फोरट्रान का भी उपयोग किया गया है) को मिलाना है। और केवल कोड के अधिकांश प्रदर्शन-संवेदनशील भागों के लिए संकलित भाषा का उपयोग करें; विकास लागत, ज़ाहिर है, कि एक कार्यक्रम को एक भाषा में एक कार्यक्रम की तुलना में दो भाषाओं में लिखना और डीबग करना कठिन है।
समानतावाद के संदर्भ में, वर्तमान एमपीआई मानक (एमपीआई -3) में देशी फोरट्रान और सी बाइंडिंग हैं। MPI-2 मानक में देशी C ++ बाइंडिंग थी, लेकिन MPI-3 में नहीं है, और आपको C बाइंडिंग का उपयोग करना होगा। तृतीय-पक्ष MPI बाइंडिंग मौजूद हैं, जैसे कि mpi4py। मैंने mpi4py का उपयोग किया है; यह अच्छी तरह से काम करता है, और उपयोग करने के लिए सीधा है। बड़े पैमाने पर समानता (हजारों कोर के दसियों) के लिए, आप शायद एक संकलित भाषा का उपयोग करना चाहते हैं, क्योंकि पायथन मॉड्यूल को गतिशील रूप से लोड करने जैसी चीजें आपको बड़े पैमाने पर गधे में काटेंगी यदि आप इसे भोले तरीके से करते हैं। उस अड़चन के आसपास आने के रास्ते हैं, जैसा कि पाइकॉव डेवलपर्स द्वारा दिखाया गया है, लेकिन इससे बचना सरल है।
व्यक्तिगत राय
मेरे पास लगभग एक दशक का अनुभव फोरट्रान 90/95 में है, और मैंने फोरट्रान 2003 में भी प्रोग्राम किया है। मेरे पास पायथन में लगभग पांच वर्षों का अनुभव है। मैं पायथन का उपयोग अधिक करता हूं जितना कि मैं फोरट्रान का उपयोग करता हूं क्योंकि, स्पष्ट रूप से, मैं पायथन में अधिक काम करता हूं। मेरे द्वारा किए जाने वाले अधिकांश कामों में प्रमुख सुपरकंप्यूटिंग संसाधनों की आवश्यकता नहीं होती है और आमतौर पर किसी अन्य भाषा में फिर से विकसित होने के लायक नहीं है, इसलिए पायथन ओडीई और पीडीई को हल करने के लिए ठीक है। यदि मुझे संकलित भाषा का उपयोग करने की आवश्यकता है, तो मैं उस क्रम में C, C ++, या फोरट्रान का उपयोग करूंगा।
अधिकांश फोरट्रान कोड जो मैंने देखे हैं, बदसूरत हैं, मुख्यतः क्योंकि अधिकांश कम्प्यूटेशनल विज्ञान समुदाय पिछले 30 वर्षों में सॉफ्टवेयर इंजीनियरों द्वारा खोजे गए किसी भी सर्वोत्तम अभ्यास से अनजान हैं या इसके विपरीत हैं। बुद्धि के लिए: फोरट्रान में कोई अच्छा इकाई परीक्षण ढांचा नहीं है। (सबसे अच्छा मैं आया था नासा द्वारा फ़ुनाइट, और यह अब भी कायम नहीं है।) कुछ अच्छे पायथन यूनिट टेस्टिंग फ्रेमवर्क, अच्छे पायथन डॉक्यूमेंट जेनरेटर और आमतौर पर अच्छी प्रोग्रामिंग प्रथाओं के कई बेहतर उदाहरण हैं।