मुझे पिछले प्रश्नों में बताया गया है कि कार्यात्मक प्रोग्रामिंग भाषाएं भौतिक प्रणालियों जैसे कि भौतिकी इंजन के लिए अनुपयुक्त हैं, मुख्यतः क्योंकि वस्तुओं को म्यूट करना महंगा है। यह कथन कितना यथार्थवादी है, और क्यों?
मुझे पिछले प्रश्नों में बताया गया है कि कार्यात्मक प्रोग्रामिंग भाषाएं भौतिक प्रणालियों जैसे कि भौतिकी इंजन के लिए अनुपयुक्त हैं, मुख्यतः क्योंकि वस्तुओं को म्यूट करना महंगा है। यह कथन कितना यथार्थवादी है, और क्यों?
जवाबों:
हास्केल और क्लोजर दोनों वास्तविक परिवर्तनशीलता की अनुमति देते हैं, इसलिए यह शुरू करने के लिए एक गैर-मुद्दा है।
इसके अलावा, यदि आपके "म्यूटेबल" डेटा में मध्यवर्ती मान शामिल होते हैं जो कुछ बड़े संगणना के हिस्से के रूप में वृद्धिशील रूप से अपडेट किए जाते हैं, तो आपको कुशल होने के लिए उत्परिवर्तन की आवश्यकता भी नहीं हो सकती है! उदाहरण के लिए, स्ट्रीम फ्यूजन नामक एक तकनीक के बारे में हास्केल में शोध चल रहा है , जहां कंपाइलर पूरी तरह से मध्यवर्ती डेटा संरचनाओं को खत्म करने के लिए लूप, डेटा उत्पादकों और डेटा उपभोक्ताओं को संसाधित करता है।
यहां हास्केल के साथ मुख्य मुद्दा आलस्य है - एक नंबर-क्रंचिंग प्रोग्राम में जहां आपके पास बहुत सारे इनपुट डेटा और बहुत सारे आउटपुट डेटा हैं और यह सब महत्वपूर्ण है, आलस्य आपको बहुत कम एहसान करता है लेकिन फिर भी कुछ माथे लगाता है। यह कहना नहीं है कि आप हास्केल (लोग वास्तव में) जैसे कार्यक्रम नहीं लिख सकते हैं, लेकिन यह भाषा की ताकत के लिए नहीं खेल रहा है और आपको अपने प्रदर्शन को प्राप्त करने के लिए मूल्यांकन मॉडल की बेहतर समझ होनी चाहिए।
उस ने कहा, भारी संख्या में crunching JVM की ताकत के लिए नहीं खेलता है, या तो। इस प्रकार का कार्यक्रम फोरट्रान अभी भी आसपास है।
मैं क्लोजर के लिए बात नहीं कर सकता, लेकिन मैं कह सकता हूं कि हास्केल के पास बहुत अधिक ट्यून किए गए आईओ पैकेज उपलब्ध हैं जो आपको सभी म्यूटेशन की अनुमति दे सकते हैं।
यहां एक प्रश्न का उत्तर दिया गया है जिसमें मैंने लिखा है कि कोई व्यक्ति 3 सबसे सामान्य लोगों का विवरण देता है और उनके प्रदर्शन का संबंध है: /programming/15439966/when-why-use-an-mvar-over-a-tvar-15440286 # 15440286
आप यहां एक साधारण ग्राफ भी दिखा सकते हैं जिसमें वॉर्क्स नामक हैसेल वेब सर्वर का प्रदर्शन मेट्रिक्स है, जो एक अत्यधिक आईओ गहन अनुप्रयोग है।
हास्केल के बारे में इस बारे में बहुत भ्रम है, सच्चाई यह है कि शानदार कई तरीकों से आईओ का उपयोग करने के लिए हैकेज पर कई पैकेजों के साथ शानदार आईओ सुविधाएं हैं, जिनमें से कई उच्च ट्यून किए गए हैं। लोगों का मानना है कि ऐसा नहीं है, क्योंकि हास्केल आईओ को हर चीज से अलग करने के लिए बहुत लंबा जाता है, लेकिन इसका प्रदर्शन विशेषताओं पर कोई प्रभाव नहीं पड़ता है।
हालांकि प्रदर्शन विशेषताओं के बारे में बात करने के लिए, कारण लोगों ने इसे खराब प्रदर्शन के रूप में पहचाना है क्योंकि यह आलसी मूल्यांकन के कारण होता है क्योंकि यह उन तरीकों से व्यवहार करता है जो हमेशा सहज नहीं होते हैं। हालाँकि यह कुछ ऐसा है जिसके बारे में आपको बहुत कम चिंता करनी पड़ती है जब आप एक आईओ संदर्भ में काम करना शुरू करते हैं जैसे कि आप जिस सिस्टम का जिक्र कर रहे हैं, उसमें विनाशकारी अपडेट करना। आगे लोगों को यह पता चलता है कि जब उन्हें प्रदर्शन में परेशानी हो रही है, तो सुविधाओं में निर्मित साधन और यह पहचानने के लिए कि संसाधन कहाँ मदद कर रहे हैं।
आपके द्वारा वर्णित प्रणाली की तलाश में लायक एक और मोनाद एसटी मोनड होगा जो विशेष रूप से बहुत छोटे आईओ द्वारा किए गए विनाशकारी अपडेट के लिए है जो इसे शानदार प्रदर्शन देता है।
क्षमा करें, मैं वास्तव में क्लोजर से बात नहीं कर सकता, उम्मीद है कि कोई और वहां विवरण दे सकता है।
Due to the functional programming style the computational load will be distributed over the available CPU cores which can dramatically increase processing speed in some cases