2010-10-27 12 views
6

कभी-कभी लोग डिज़ाइन पैटर्न को गायब प्रोग्रामिंग भाषा सुविधाओं के रूप में संदर्भित करते हैं। डिज़ाइन पैटर्न क्या है, इस बारे में बहस से बचने के लिए, मान लीजिए कि हम केवल मूल गोफ पैटर्न पर विचार करते हैं। उदाहरण के लिए, सिंगलटन पैटर्न स्कैला में गायब हो जाता है जो कीवर्ड object का उपयोग करके सिंगलटन ऑब्जेक्ट्स का समर्थन करता है।डिजाइन पैटर्न के रूप में (गायब) भाषा सुविधा

इस बारे में कुछ संसाधन हैं, विशेष रूप से Are Design Patterns Missing Language Features सी 2 विकी से, या Are design patterns really language weaknesses? SO से। लेकिन मुझे इस प्रश्न का एक गैर-विचार, उद्देश्य और व्यापक कवरेज नहीं मिला।

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

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

यह हमेशा एक खुला प्रश्न होगा, लेकिन मुझे ऐसा लगता है कि यह एक अच्छा जवाब है।

शायद यह मैट्रिक्स कहीं भी मौजूद है? या किसी के पास इसे तैयार करने के लिए पर्याप्त ज्ञान है? या कोई भी शुरू करने के लिए उत्सुक है और इसे विकी उत्तर बना देता है ताकि अन्य जारी रहे?

+0

एसओ पर एक खुले अंत में व्यक्तिपरक प्रश्न पूछने के बजाय, आप एक ब्लॉग पोस्ट क्यों नहीं लिखते हैं और इसे विकसित करते हैं क्योंकि आपको पैटर्न के नए कार्यान्वयन मिलते हैं? – slugster

+0

इस पर सबसे अच्छा जवाब नहीं है। मैं समुदाय विकी के लिए वोट दूंगा। –

+0

@slugster मेरा विचार वास्तव में इस तरह के एक ब्लॉग पोस्ट (या मेरा एक दोस्त करेगा) लिखना है, और सवाल किसी दिए गए भाषा में विशिष्ट पैटर्न w.r.t के बारे में सर्वोत्तम चर्चाओं के संदर्भ में एकत्रित करने के बारे में है। फिर मैं इसे ब्लॉग एंट्री में संकलित कर सकता हूं। इस बीच, मैं शायद अपने स्वयं के प्रश्न का उत्तर दूंगा और मैट्रिक्स के मसौदे को स्केच कर दूंगा। – ewernli

उत्तर

5

डिजाइन पैटर्न में पैटर्न विभिन्न भाषाओं में प्रोग्रामिंग करते समय लोगों के पैटर्न के बढ़ते सेट का एक उप-समूह है। लेखक बहुत स्पष्ट हैं कि वे पैटर्न केवल ओओपी भाषाओं पर लागू होते हैं, इसलिए उनमें से कई उस संदर्भ के बाहर समझ में नहीं आ जाएंगे।

साथ ही, ओओपी भाषा में अन्य भाषाओं में बहुत सारे पैटर्न नहीं हैं। इस बात पर विचार करें कि सी या योजना में लागू होने पर वस्तुएं स्वयं एक पैटर्न हैं। असेंबली में, एक कॉल स्टैक एक पैटर्न है।

+0

+1, मैंने ओओ सी कोड लिखा है (और राज्य मशीन सी कोड, जो वास्तव में काफी समान हो सकता है)। मैं कहूंगा कि किसी भी डिवाइस पर 100 से अधिक कोड स्पेस के साथ, असेंबली में लिखे गए एक कॉल स्टैक हालांकि पैटर्न के मुकाबले ज्यादा मदद के लिए रोना है। – detly

+0

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

1

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

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

एसओ पर एक सज्जन ने कहा कि जब मैंने यूएमएल के बारे में पूछा और यदि इसे कार्यात्मक भाषाओं के मॉडल के लिए इस्तेमाल किया जा सकता है, तो उन्होंने कहा कि कार्यात्मक प्रोग्रामिंग भाषाओं की मॉडलिंग भाषा गणित है। मुझे लगता है कि यह समझने की कुंजी है कि क्यों पैटर्न कार्यात्मक प्रोग्रामिंग भाषाओं के लिए प्रासंगिक नहीं हैं, क्योंकि उनके पीछे सिद्धांत गणित की संरचनाओं में घिरा हुआ है।

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

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

+0

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

+0

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

+0

हां मुझे तुलना में भी रूचि है। जीओएफ पैटर्न ऑब्जेक्ट ओरिएंटेड डिज़ाइन से संबंधित हैं, मुझे नहीं लगता कि वे जो भी प्रतिनिधित्व करते हैं वह कुछ नया है लेकिन उन्होंने पैटर्न/एल्गोरिदम को अपने जैसे रोज़गार जोड़ी के लिए सुलभ बना दिया है। सभी अज्ञानता में मैंने उन्हें दिशानिर्देशों के रूप में लिया, लेकिन देर से गहराई में कार्यात्मक शैली को देखने के बाद, मुझे एहसास हो रहा है कि उनके लिए बहुत अधिक गहराई है। विज़िटर पैटर्न क्लासिक ओओ उदाहरण है जो मूल रूप से एक फ़ंक्शन है जो एक रूप को दूसरे रूप में परिवर्तित करता है। – WeNeedAnswers

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^