UML के स्थान पर कार्यात्मक प्रोग्रामर क्या उपयोग कर रहे हैं?


18

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

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

हमारे शिक्षक, जब "कार्यात्मक प्रतिमान के बारे में क्या?" सवाल, जवाब दिया कि वह कार्यात्मक भाषाओं में किसी भी बड़ी परियोजना का प्रोग्रामिंग नहीं कर रहा था, और वह नहीं जानता कि कार्यात्मक कार्यक्रमों का उपयोग करने वाले उपकरण क्या हो सकते हैं।

तो, वे क्या उपयोग करेंगे? क्या इसके लिए कुछ कार्यप्रणाली है? या शायद इस तरह की चीज़ की कोई ज़रूरत नहीं है?


8
चूंकि FP डेटा पर अधिक जोर देता है, एक डेटा प्रवाह आरेख संभवतः एक FP प्रोग्राम को स्पष्ट कर सकता है, जिस तरह से एक फ़्लोचार्ट या अनुक्रम आरेख अनिवार्य कोड को स्पष्ट करता है।
9000

9
मैं कई सालों से एक सॉफ्टवेयर डेवलपर हूं। मेरे जीवन में कभी भी मैंने अपने खुद के यूएमएल का उपयोग नहीं किया है, और न ही मैं किसी ऐसे व्यक्ति से मिला हूं जो पूरी भाषा से परिचित हो। आरेख महान हैं, हालांकि ....
AK_

1
@ 9000: वास्तव में, डेटा प्रवाह आरेख एक उच्च अमूर्त स्तर पर सॉफ़्टवेयर डिज़ाइन का वर्णन करने के लिए सबसे उपयोगी प्रकार के आरेखों में से एक IMHO हैं - वर्ग आरेखों की तुलना में अधिक उपयोगी। यह एफपी और ओओपी पर भी लागू होता है। दुर्भाग्य से, यूएमएल आविष्कारकों ने मॉडलिंग भाषा में बहुत सारे अनावश्यक आरेख प्रकार जोड़ने का चयन किया, लेकिन डेटा प्रवाह आरेखों को जोड़ने से इनकार कर दिया (हाँ, यह एक शेख़ी है!)।
डॉक्टर ब्राउन

मेरे लिए और कई अन्य लोगों की संभावना के लिए, इसका जवाब कुछ भी नहीं है। विश्वविद्यालय के बाहर मैंने कभी किसी को यूएमएल का उपयोग करते हुए नहीं देखा या यहां तक ​​कि इसका उल्लेख नहीं किया।
क्वर्टी

जवाबों:


23

मैं सभी कार्यात्मक प्रोग्रामर के लिए बात नहीं कर सकता, लेकिन जिन्हें मैं जानता हूं, वे सभी शीर्ष स्तर के कार्यों के प्रकार के हस्ताक्षर लिखकर शुरू करते हैं, फिर जैसे ही उन्हें अधिक विस्तार की आवश्यकता होती है, वे सहायक कार्यों के प्रकार, और इसके आगे लिखते हैं।

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

जहाँ तक डायग्रामिंग टूल्स की बात है, आपके प्रोफेसर के सम्मान के साथ, मैंने स्कूल छोड़ने के बाद से किसी भी प्रतिमान में किसी भी महत्वपूर्ण डिग्री का उपयोग नहीं किया है ।


19

यूएमएल मानक एक दर्जन से अधिक विभिन्न प्रकारों को परिभाषित करता है, जैसा कि इस आसान चार्ट में दिखाया गया है:

यूएमएल आरेख प्रकार

स्रोत: https://en.wikipedia.org/wiki/File:UML_diagrams_overview.svg

चित्र A.5 भी देखें UML 2.5 कल्पना में संरचना और व्यवहार आरेखों का वर्गीकरण

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

कुछ प्रकार हैं जो स्पष्ट रूप से केवल ओओपी पर लागू होते हैं, उदाहरण के लिए वर्ग आरेख या ऑब्जेक्ट आरेख । लेकिन बाकी वस्तु-उन्मुख प्रणालियों की तुलना में अधिक व्यापक रूप से लागू है।

  • राज्य मशीन आरेख - FP राज्यों से नहीं बचता है, यह केवल उन्हें स्पष्ट करता है। एक राज्य मशीन आरेख नियंत्रण प्रवाह, या कार्यक्रम में विभिन्न राज्य संक्रमणों की व्याख्या करने के लिए उपयोगी हो सकता है।

  • गतिविधि आरेख - राज्य मशीन आरेख के लिए समान मामलों में उपयोगी हैं, लेकिन उच्च स्तर पर। उनका उपयोग विभिन्न उप-प्रणालियों के बीच डेटा के प्रवाह की व्याख्या करने के लिए, या बाहरी व्यावसायिक प्रक्रियाओं को मॉडल करने के लिए किया जा सकता है।

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

  • केस डायग्राम का उपयोग करें - ऐसे मामलों और आवश्यकताओं का उपयोग करें जो उन्हें संतुष्ट करने के लिए उपयोग की जाने वाली तकनीक से स्वतंत्र हों। OOP या FP यहाँ बिलकुल अप्रासंगिक है।

  • परिनियोजन आरेख - इस आरेख प्रकार का उपयोग रन करने योग्य सॉफ़्टवेयर और हार्डवेयर संसाधनों के बीच संबंध का वर्णन करने के लिए किया जाता है। चाहे वह सॉफ्टवेयर FP भाषा में लिखा गया हो, इससे कोई फर्क नहीं पड़ता।

  • घटक आरेख - अधिकांश कार्यात्मक भाषाओं में इन दिनों मॉड्यूलर प्रोग्रामिंग के लिए स्पष्ट समर्थन है। एक घटक आरेख घटकों / मॉड्यूल और उनके प्रस्तावित और आवश्यक इंटरफेस का वर्णन करता है। यह मुझे बहुत सारे OCaml के Functor मॉड्यूल की याद दिलाता है।

  • प्रोफ़ाइल आरेख - यूएमएल में ही एक्सटेंशन का वर्णन करते हैं और जैसे वास्तव में कभी उपयोग नहीं किए जाते हैं।

  • समग्र संरचना आरेख - कंपोजिट की संरचना का वर्णन करते हैं। इसका उपयोग डेटा संरचनाओं का वर्णन करने के लिए किया जा सकता है, या किसी फ़ंक्शन के इंटरैक्शन पॉइंट भी। विकिपीडिया एक उदाहरण के रूप में फाइबोनैचि फ़ंक्शन के लिए एक आरेख दिखाता है:

    एक फाइबोनैचि कवक के लिए समग्र संरचना आरेख

    स्रोत: https://commons.wikimedia.org/wiki/File:Composite_Structure_Diagram.png

    एक अर्थ में, यह एक वर्ग आरेख के बजाय कार्यात्मक प्रोग्रामर विकल्प होगा, लेकिन यह बहुत ही कठिन लगता है…।

  • पैकेज आरेख - पैकेज नामस्थान के यूएमएल समकक्ष हैं। यह आरेख प्रकार एक अलग आरेख प्रकार की तुलना में UML भाषा के बुनियादी ढांचे का अधिक हिस्सा है। उदाहरण के लिए, आप किसी बड़े उपयोग के मामले के आरेख को वर्गीकृत करने के लिए संकुल का उपयोग कर सकते हैं।

जैसा कि हमने देखा है, कार्यात्मक प्रोग्रामिंग करते समय विभिन्न यूएमएल आरेख प्रकार अभी भी उपयोगी हो सकते हैं।


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

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