क्या Haskell / Clojure वास्तव में गतिशील प्रणाली जैसे कि कण अनुकरण के लिए अनुपयुक्त है?


9

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


4
आपको github.com/linneman/particles-clj दिलचस्प लग सकता है । 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

2
आपको कौन बताए कि वे अनुपयुक्त थे? जवाब / टिप्पणी के लिए लिंक?
एंड्रेस एफ।

7
@ डॉकटैट: मुझे संदेह है कि वहाँ टिप्पणीकार कार्यात्मक प्रोग्रामिंग के बारे में बहुत कुछ जानता है, बहुत ईमानदार होने के लिए। मैं इसे नमक के बड़े दाने के साथ ले जाऊंगा।
सीए मैककैन

6
इसके अलावा, मैं उस उत्तर की भी अवहेलना करता हूं जो "एक शुद्ध कार्यात्मक दृष्टिकोण के साथ शुरू होता है खेल के लिए एक अच्छा फिट नहीं है ..." जब तक कि लेखक साबित नहीं करता है कि उसने वास्तव में एक कार्यात्मक कार्यक्रम लिखने की कोशिश की है। अन्यथा, वह केवल अनुमान लगा रहा है कि वह क्या सोचता है कि समस्याएं हो सकती हैं।
एंड्रेस एफ।

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

जवाबों:


10

हास्केल और क्लोजर दोनों वास्तविक परिवर्तनशीलता की अनुमति देते हैं, इसलिए यह शुरू करने के लिए एक गैर-मुद्दा है।

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

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

उस ने कहा, भारी संख्या में crunching JVM की ताकत के लिए नहीं खेलता है, या तो। इस प्रकार का कार्यक्रम फोरट्रान अभी भी आसपास है।


1
एक नोट के लायक: GHC का आगामी 8.0 संस्करण प्रति मॉड्यूल सख्त मूल्यांकन मोड का समर्थन करेगा।
एरिक कपलुन

8

मैं क्लोजर के लिए बात नहीं कर सकता, लेकिन मैं कह सकता हूं कि हास्केल के पास बहुत अधिक ट्यून किए गए आईओ पैकेज उपलब्ध हैं जो आपको सभी म्यूटेशन की अनुमति दे सकते हैं।

यहां एक प्रश्न का उत्तर दिया गया है जिसमें मैंने लिखा है कि कोई व्यक्ति 3 सबसे सामान्य लोगों का विवरण देता है और उनके प्रदर्शन का संबंध है: /programming/15439966/when-why-use-an-mvar-over-a-tvar-15440286 # 15440286

आप यहां एक साधारण ग्राफ भी दिखा सकते हैं जिसमें वॉर्क्स नामक हैसेल वेब सर्वर का प्रदर्शन मेट्रिक्स है, जो एक अत्यधिक आईओ गहन अनुप्रयोग है।

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

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

आपके द्वारा वर्णित प्रणाली की तलाश में लायक एक और मोनाद एसटी मोनड होगा जो विशेष रूप से बहुत छोटे आईओ द्वारा किए गए विनाशकारी अपडेट के लिए है जो इसे शानदार प्रदर्शन देता है।

क्षमा करें, मैं वास्तव में क्लोजर से बात नहीं कर सकता, उम्मीद है कि कोई और वहां विवरण दे सकता है।

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