मैंने हाल ही में कार्यात्मक भाषाओं के बारे में बहुत कुछ पढ़ा है। चूंकि वे केवल अपरिवर्तनीय संरचनाओं का उपयोग करते हैं, वे दावा करते हैं कि समेकन के मुद्दों में काफी सुधार/हल किया गया है। मुझे कुछ गंभीर परेशानी हो रही है कि यह वास्तव में वास्तविक जीवन संदर्भ में कैसे वितरित किया जा सकता है। आइए मान लें कि हमारे पास एक बंदरगाह पर एक थ्रेड के साथ एक वेब सर्वर है (ठीक है, आईओ एक और चीज है जिसके बारे में मुझे अपने सिर को लपेटने में कठिनाई होती है लेकिन चलो बस इसे अभी अनदेखा करें); किसी भी कनेक्शन प्रयास पर सॉकेट बनाया जाता है और एक नए बनाए गए धागे को पास किया जाता है जो कुछ काम करता है और प्राप्त संचार के आधार पर, एक बड़ी सूची/डेटा संरचना में परिवर्तन लागू कर सकता है जो सर्वर अनुप्रयोग के लिए वैश्विक है। तो, सूची के निरंतर दृश्य वाले सभी धागे के लिए यह सूची कैसे काम करती है (या कम से कम एक धागे द्वारा किए गए सभी परिवर्तनों को सूची में लागू होने के तुरंत बाद जैसे ही धागे सही तरीके से मर जाता है) ?अपरिवर्तनीय/लगातार प्रकार और डेटा संरचनाओं का उपयोग करते हुए समेकन कैसे काम करता है?
मेरी समझ समस्याएं हैं:
- जाहिर है किसी भी धागे पर काम करने के लिए सूची का एक अपरिवर्तनीय "स्नैपशॉट" मिल सकती है। हालांकि, लागू परिवर्तनों के साथ सूची का एक नया संस्करण बनाकर सामग्री को "बदलना" के बाद, हम अभी भी सूची के अपने संस्करण वाले प्रत्येक थ्रेड के साथ छोड़ दिए गए हैं। वे एक साथ वापस विलय कैसे कर रहे हैं?
- एक अन्य विधि में पारंपरिक लॉकिंग तंत्र जैसे म्यूटेक्स/कंड या गो-जैसे-चैनल का उपयोग करना शामिल हो सकता है। हालांकि, आप इस तरह की चीज कैसे बना सकते हैं जब सभी चर अपरिवर्तनीय हों?
- मैं एसटीएम के बारे में सुना है, लेकिन है कि साइड इफेक्ट के साथ सौदा नहीं कर सकते हैं (यानी अगर सूची होगा भी पारदर्शी रूप से बैकअप किसी फ़ाइल या db डेटा)
तो आपको कैसे ऐसी बात एक में मॉडल हैं कार्यात्मक भाषा?
अंतर्निहित अवधारणाओं के बारे में एक अच्छी बात है http://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey – buritos
पहले से ही देखा गया है कि एक बार 2 बार दुर्भाग्यवश, अभी भी इसे प्राप्त नहीं किया गया है। कार्यात्मक प्रोग्रामिंग के साथ सबसे बड़ी समस्याएं 1) अधिकांश लोगों ने अनिवार्य भाषाओं को सीखा और प्रशिक्षित किया है 2) कार्यात्मक भाषाओं को एक अलग तरीके से सोचने की आवश्यकता होती है 3) कोई संसाधन संसाधन प्रोग्रामिंग प्रोग्रामिंग नहीं कर रहे हैं जो विशेष रूप से 99% (= अनिवार्य प्रोग्रामिंग लोगों) पर लक्षित हैं) अविश्वसनीय रूप से तुच्छ उदाहरणों को छोड़कर – Askaga
Thats जहां से मैं भी आ रहा हूं और यह आसान नहीं है। मैं जवाब देने की कोशिश से शुरू करूंगा कि थ्रेड को अन्य धागे के साइड इफेक्ट्स को पढ़ने की आवश्यकता क्यों है। मैंने अभी अपनी यात्रा शुरू कर दी है और यही कारण है कि मैं जवाब देने की कोशिश नहीं करता, मुझे यकीन है कि यहां जवाब देने के लिए यहां अधिक योग्यता प्राप्त व्यक्ति हैं :-) – buritos