क्या कोई विशिष्ट वर्कफ़्लोज़ या डिज़ाइन पैटर्न हैं जो आमतौर पर बड़े कार्यात्मक प्रोग्रामिंग एप्लिकेशन बनाने के लिए उपयोग किए जाते हैं? [बन्द है]


13

मैं अब से थोड़ी देर के लिए क्लोजर की खोज कर रहा था, हालांकि मैंने इसे किसी भी अप्रत्यक्ष परियोजनाओं पर इस्तेमाल नहीं किया है। मूल रूप से, मैं सिर्फ वाक्यविन्यास और कुछ मुहावरों के साथ सहज हो रहा हूं। एक OOP पृष्ठभूमि से आ रहा है, Clojure के साथ पहली कार्यात्मक भाषा है जिसे मैंने बहुत अधिक देखा है, मैं स्वाभाविक रूप से चीजों को करने के कार्यात्मक तरीके के साथ सहज नहीं हूं।

उस ने कहा, क्या कोई विशिष्ट वर्कफ़्लोज़ या डिज़ाइन पैटर्न हैं जो बड़े कार्यात्मक अनुप्रयोग बनाने के साथ सामान्य हैं? मैं वास्तव में "वास्तविक के लिए" कार्यात्मक प्रोग्रामिंग का उपयोग करना शुरू करना चाहता हूं, लेकिन मुझे डर है कि मेरी वर्तमान विशेषज्ञता की कमी के साथ, यह एक महाकाव्य में विफल होगा।

"गैंग ऑफ़ फोर" OO प्रोग्रामर्स के लिए एक ऐसा मानक है, लेकिन क्या ऐसा कुछ भी है जो कार्यात्मक प्रतिमान पर अधिक निर्देशित है? अधिकांश संसाधन जो मुझे मिले हैं, उनमें शानदार प्रोग्रामिंग नगेट्स हैं, लेकिन वे एक व्यापक, अधिक वास्तुशिल्प रूप देने के लिए पीछे नहीं हटते हैं।


6
GOF पैटर्न में से कुछ वास्तव में सिर्फ उन चीजों के लिए OO भाषाओं में वर्कअराउंड हैं जो कार्यात्मक प्रोग्रामिंग पहले से ही प्रदान करते हैं। देखें stackoverflow.com/q/327955
रॉबर्ट हार्वे

2
संबंधित: stackoverflow.com/q/89212
tugs


मुझे लगता है कि इस चर्चा में GoF / OOP- विशिष्ट पैटर्न पर बहुत अधिक ध्यान केंद्रित किया गया है। क्या कोई वास्तविक कार्यात्मक प्रोग्रामिंग-विशिष्ट पैटर्न पोस्ट कर सकता है (जो कि कार्यात्मक भाषाओं में GOF की तुच्छता को साबित करने की कोशिश नहीं करता है)?
डैनियल बी

जवाबों:


3

इस तरह के पैटर्न आमतौर पर एक टूटे हुए, अनफिट अंतर्निहित मॉडल के लक्षण हैं।

OOP डिजाइन से टूट गया है, इसके अधिकांश अनुप्रयोगों के लिए अनफिट है, इसलिए यह "पैटर्न" नामक सभी के साथ फट जाता है। कार्यात्मक मॉडल (बस थोड़ा सा) अधिक लचीला है, और "पैटर्न" में आवश्यकता वहां स्पष्ट नहीं है।

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

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


अंतिम 2 पैराग्राफ के लिए +1, मुझे लगता है कि यह स्पॉट पर है। OOP के बारे में, मैं इसे तोड़ने के पीछे तर्क के रूप में उत्सुक हूं, इस तथ्य के अलावा कि यह एक सामान्य उपकरण है जो अक्सर विशिष्ट समस्याओं पर लागू होता है (इसलिए निम्न स्तर के पैटर्न जैसे कि GOF वाले अस्तित्व में आते हैं)। क्या आप संक्षिप्त रूप में विस्तृत कर सकते हैं, या अपनी राय के लिए एक लिंक पोस्ट कर सकते हैं?
डैनियल बी

@ डैनियलबी, ओओपी प्रति सेगमेंट में कुछ भी गलत नहीं है, लेकिन आमतौर पर इसे लागू करने का तरीका पूरी तरह से टूट गया है। यह मॉडल वास्तविक दुनिया की समस्याओं में से कुछ ही फिट बैठता है (और यह वास्तव में वहां चमकता है, जब उचित रूप से लागू किया जाता है), लेकिन बाकी के लिए इसे फिट करने के लिए सभी बैसाखी और डक्ट टेप की आवश्यकता होती है। उदाहरण के लिए programmers.stackexchange.com/questions/52608/… पर मेरा उत्तर देखें ।
एसके-तर्क

ठीक है, मुझे लगता है कि मैं उसी पृष्ठ पर हूं। वास्तव में, मैंने पहले भी एक बार यह सटीक सवाल पूछा होगा, इसके बारे में खेद है - जिस तरह से आपने उस लाइन को ठीक किया है, ऐसा लगता है जैसे आप अधिक प्रभाव डाल रहे हैं।
डैनियल बी

-3

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

हालाँकि, अगर मैं अपने मूल कोड को बड़े विकास परिवेश में लागू करता और किसी को बताता कि इस निश्चित पद्धति के साथ कोई समस्या है ... तो उस डेवलपर के लिए समस्या को ट्रैक करना कठिन होगा। फिर भी, अगर मैंने कहा कि कांट्रैक्टकंट्रोलर को किसी कारण से हटा दिया गया था, तो उसे पता होगा कि कहां से शुरू करना है।

डिजाइन पैटर्न महान हैं ... लेकिन जैसा मैंने कहा, मुझे लगता है कि वे अर्थपूर्ण हैं!

संपादित करें: आप इंजीलवादी प्रकार मुझे दरार। MVC (या कुछ अन्य डिज़ाइन पैटर्न) के बिना कुछ भी कभी कैसे विकसित हुआ!


2
शब्दार्थ (sjmɪntɪk) - adj 1. विभिन्न शब्दों या प्रतीकों के अर्थों के बीच के भेद से उत्पन्न या अर्थ से संबंधित 2. या शब्दार्थ से संबंधित (अर्थ का अध्ययन) 3. एक औपचारिक सिद्धांत की व्याख्या से संबंधित तर्क। जब सत्य तालिकाओं को संवेदी संयोजकों के एक खाते के रूप में दिया जाता है
राबर्ट हार्वे

+1 - मेरा कहना था कि डिजाइन पैटर्न केवल संचार का एक साधन है!
अश्विन

डिजाइन पैटर्न केवल संवाद करने के तरीके से अधिक हैं; वे ठोस, अच्छी तरह से समझी जाने वाली रेसिपी हैं जिन्हें कुछ विशेष, आम समस्याओं का समाधान करने के लिए सॉफ्टवेयर में लागू किया जा सकता है।
रॉबर्ट हार्वे

किताबों का यही कहना है। लेकिन मैंने वास्तव में एक डिजाइन पैटर्न के माध्यम से एक समस्या को हल नहीं किया है जिसे मैं इसके बिना हल नहीं कर सकता। एकमात्र लाभ जो मैंने अपने अनुभव में देखा है, वह कोड के बारे में एक-दूसरे से बात करने की क्षमता है! ;)
aserwin

1
अपने संपादन के बारे में: इसलिए आप हर बार जब आप एक नया बिट कोड लिखते हैं, तो आप पहिए का फिर से आविष्कार करना पसंद करेंगे?
रॉबर्ट हार्वे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.