जैसा कि आप जानते हैं, फोरट्रान वैज्ञानिक कंप्यूटिंग के लिए एक भाषा है। हालांकि, वैज्ञानिक कंप्यूटिंग के लिए सबसे प्रसिद्ध उच्च स्तरीय भाषा का कर्नेल फोर्ट्रान के बजाय सी में लिखा गया है। क्यूं कर?Matlab क्यों फोर्टन के बजाय सी में लिखा था?
उत्तर
अपने मूल प्रश्न का उत्तर देने के लिए: मैटलैब मूल रूप से फोरट्रान में लिखा गया था। लेकिन पहले चीजों में से एक है कि मैटलैब, क्लीव मोलर, और उसके साथी 1983 में किया था के निर्माता सी में पूरे मैटलैब एप्लिकेशन के पुनर्लेखन के लिए किया गया था:
जैक लिटिल में अपनी नौकरी छोड़ दी कंसल्टिंग कंपनी और खरीदा सीअर्स पर एक नया COMPAQ पोर्टेबल कंप्यूटर। मशीन में केवल 256 केबी मेमोरी थी और कोई हार्ड डिस्क नहीं थी; प्रोग्रामों को संकलित करने के लिए जैक को 5-1/4-इंच फ़्लॉपीज़ को स्वैप करना पड़ा। जैक और स्टीव ने को सी, में MATLAB को फिर से लिखने के लिए आधा लिया, जिसमें नई विशेषताएं शामिल थीं- sioned।(The Growth of MATLAB and The MathWorks over Two Decades)
मुझे लगता है कि आज के लिए अधिक प्रासंगिक सवाल पूछने के लिए होगा: क्यों वे सेल्सियस के लिए 1983 में वापस स्विच किया?
मेरा अनुमान है कि सी में शायद कुछ विशेषताएं थीं जो फोरट्रान के पास नहीं थी और इस प्रकार स्विच आवश्यकता से अधिक था और कोड रखरखाव के हित में था।
एक किलर फोरट्रान 77 में अनुपलब्ध फीचर गतिशील स्मृति आवंटन था (गतिशील स्मृति आवंटन केवल फोरट्रान 9 0 में जोड़ा गया था)। उस एकल सीमा के आसपास हो रही है मेरी राय में सीमा एक भयानक सौदा ब्रेकर होगा।
संपादित करें:
dmckee का जवाब क्यों का उपयोग कर फ़ोरट्रॉन 77 दर्दनाक होगा का एक बड़ा व्याख्या है।
@ ट्रेवर बॉयड स्मिथ, क्लेव मोलर या स्टीव मोलर? आपके उत्तर का पहला पैराग्राफ पढ़ता है कि क्लेव मोलर और उसके साथी ने मैटलैब को दोबारा दोहराया, लेकिन उद्धरण में यह जैक और स्टीव कहते हैं। – systemovich
मैं निम्न कथन से यह उत्तर अर्हता प्राप्त करना चाहते हैं - मैं फोरट्रान या मैटलैब
बारे में कुछ नहीं फिर भी मुझे लगता है कि आप लगभग अपने प्रश्न में अपने ही सवाल का जवाब पता है।
आप कर्नेल लिखने के लिए वैज्ञानिक भाषा का उपयोग क्यों नहीं करेंगे। आप काम के लिए सबसे उपयुक्त भाषा का उपयोग करेंगे। एक कर्नेल सी में सबसे अच्छा लिखा जाएगा क्योंकि यह निम्न स्तर के कार्यों जैसे कि कर्नेल (मेमोरी मैनेजमेंट आदि के साथ काम करना) के साथ काम करने के लिए बेहतर है
एक कर्नेल वैज्ञानिक अनुप्रयोग नहीं है इसलिए आप एक वैज्ञानिक भाषा का उपयोग नहीं करेंगे।
फिर से, मैं पूरी तरह से निशान से बाहर हो सकता हूं लेकिन मुझे लगता है कि यह एक अत्यधिक तार्किक उत्तर है।
एक त्वरित नोट: एक कम्प्यूटेशनल सॉफ़्टवेयर पैकेज का कर्नेल एक ऑपरेटिंग सिस्टम के कर्नेल जैसा ही नहीं है। पहले मामले में, कर्नेल अंतर्निहित कम्प्यूटेशनल इंजन है, जिसे उपयोगकर्ता उच्च-स्तरीय उपयोगकर्ता इंटरफ़ेस (उदा। MATLAB कमांड विंडो या मैथमैटिका नोटबुक इंटरफ़ेस) के माध्यम से इंटरैक्ट करता है। – las3rjock
मेरी समझ यह है कि मैटलैब भाषाओं के एक हॉज-पॉज में लिखा गया है, जिसमें सी, फोरट्रान, जावा और मैटलैब भी शामिल नहीं हैं।
मुझे विश्वास है कि यह लापैक (फोरट्रान), एफएफटीडब्लू (सी) और शायद कई अन्य दृश्यों के पीछे सबसे अच्छी तरह से प्रजनन पुस्तकालयों को नियोजित करता है।
मुझे लगता है कि मूल संस्करण शुद्ध फोरट्रान था, लेकिन क्योंकि यह अधिक पॉलिश और वाणिज्यिक बन गया क्योंकि वे प्रत्येक घटक के लिए सही भाषा का उपयोग करने के बारे में शर्मिंदा नहीं थे। मैं उन्हें दोष नहीं देता - मुझे फोरट्रान में एक पार्सर या जीयूआई लिखने से नफरत है! अनुभव के आधार पर
मैं सी में भी एक पार्सर लिखना नहीं चाहूंगा लेकिन हां, आप सही हैं - शुरुआती संस्करण फोर्टन में लिखे गए थे, फिर वे किसी बिंदु पर सी (पूरी तरह से चीज को फिर से लिखते हैं) पर स्विच किए गए। – Rook
बेशक, आजकल वहां सामानों का एक गुच्छा है। सटीकता के लिए – Rook
+1। मैटलैब जावा जेआरई के शीर्ष पर चलता है। संभवतः इसमें से अधिकतर एमएम फाइलों में या जावा में हैं, w/समय-महत्वपूर्ण सामग्री का अपवाद जो मूल कोड में लागू होने पर तेज़ साबित होता है। मुझे याद है जब वे जावा संस्करण में स्विच करते थे; यह चीजों को धीमा कर दिया, लेकिन अब जब जेआरई तेजी से बनाया गया है तो यह खराब नहीं है और निश्चित रूप से MATLAB के भीतर जावा ऑब्जेक्ट्स का उपयोग करने में सक्षम होने के लायक है। –
अनुमान:
मेमोरी मैनेजमेंट।
फोरट्रान (अच्छी तरह से, किलर जो मैटलैब लिखा गया था) के आसपास था, गतिशील स्मृति प्रबंधन के लिए कोई समर्थन नहीं है। जो इसे बड़े काम के लिए दर्द बनाता है (उदाहरण के लिए, उदाहरण के लिए, CERNLIB)।
सीईआरएनआईएलबी एक सामान्य ब्लॉक में एक बड़ी बड़ी सरणी आवंटित करके समस्या को हल करता है, और सरणी की कोशिकाओं के लिए (डी) आवंटक जैसे मैलोक को कार्यान्वित करता है। क्लंकी लेकिन काम कर रहा है: सरणी ऑफसेट पॉइंटर समकक्ष हैं, और दूर आप जाते हैं ...
तो CERNLIB मूल रूप से malloc()/free() फोर्ट्रान 77 में समान कार्यक्षमता में हैक किया गया है? उन्होंने सी का उपयोग क्यों नहीं किया? –
1 9 60 के दशक की शुरुआत में सीईआरएनआईएलबी की हिस्सेदारी। जब तक सी आया तो उनके पास पहले से ही बहुत कोड था। मेरा मानना है कि बड़े हिस्से कई बार फिर से लिखे गए थे, लेकिन सौदा ब्रेकर था: भौतिकविद। यहां तक कि 80 के दशक में अधिकांश भौतिकविदों ने केवल फोर्टन की बात की थी। – dmckee
* सिर हिलाता है *। मुझे डायनासोर से नफरत है ("डायनासोर" उन लोगों के लिए मेरा सौहार्द है जो किसी तरह से आगे बढ़े और अब अपने रास्ते में फंस गए हैं और बदलने से इंकार कर रहे हैं)। मुझे लगता है कि 80 मीटर में एक उल्का आया और सभी फोरट्रान भौतिकविदों को मिटा दिया? विशेष रूप से "उल्का" क्या था जिसने भौतिकविदों को 80 के दशक में बदलने के लिए मजबूर किया? –
मैटलैब मूल रूप से फोरट्रान में लिखा गया था, यह फोरट्रान दिनचर्या के के लिए एक कम रैपर था। तो सवाल यह है कि इसे सी में फिर से लिखना क्यों? वास्तव में फोर्ट्रान ने को सी और अन्य भाषाओं में क्यों खो दिया जो संख्यात्मक कंप्यूटिंग के लिए वास्तव में उपयुक्त नहीं थे। जवाब है कि फोर्ट्रान को राजनीति से बुरी तरह से पीड़ित किया गया। विभिन्न कारणों से मानक समिति फोर्ट्रान 77 के प्रतिस्थापन पर निर्णय ले सकती है। इसलिए, जब तक फोरट्रान 9 0 अंततः फोरट्रान ने अन्य भाषाओं में बहुत सारी जमीन खो दी थी। इस स्थिति को अब सही किया गया है। फोरट्रान 2003, जो कि gnu कंपाइलर में कम या ज्यादा लागू किया गया है, यह एक अच्छी भाषा है जो इसकी संख्यात्मक रूप से उपयुक्त है और इसके अलावा गतिशील आवंटन तेज़ आईओ और ओओ आइश पॉलिमॉर्फिज्म व्युत्पन्न प्रकार इत्यादि बनाता है। (फोरट्रान 2008 भी बेहतर होगा)
आधुनिक फोरट्रान को गुई इंटरफेस लिखने के लिए डिज़ाइन नहीं किया गया है, लेकिन इसे कॉल करने और सी और अन्य भाषाओं से कॉल करने के लिए डिज़ाइन किया गया है। तो अगर मैटलैब अभ्यास आज दोहराया गया तो यह काफी संभव है कि संख्यात्मक बिट्स फोरट्रान में और उपयोगकर्ता इंटरफ़ेस को किसी और चीज़ में लिखा जाएगा।
यह समझ में नहीं आता है - शीर्षक और प्रश्न भिन्न है। क्या आपका मतलब सी में लिखा गया मैटलैब क्यों था या फोर्ट्रान सी में क्यों लिखा गया था? – Fortyrunner
मुझे लगता है कि यह स्पष्ट है कि वह पूर्व का मतलब है। फोरट्रान एक निम्न स्तर की भाषा है और वास्तव में पूर्व-तारीख सी है, इसलिए उत्तरार्द्ध वैसे भी कोई समझ नहीं लेगा। – Noldorin
मुझे लगता है कि मैटलैब का कर्नेल फोरट्रान में लिखा नहीं जाना चाहिए सी नहीं मानते कि फोर्ट्रान वैज्ञानिक कंप्यूटिंग के लिए बेहतर है। –