मुझे काम करने के लिए डिज़ाइन अभ्यास कहां मिल सकता है? [बन्द है]


16

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

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

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

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


जवाबों:


7

कोड काटा के बारे में कैसे । मैंने इनमें से कुछ किया है, और वे करने के लिए मज़ेदार हैं, और पर्याप्त चुनौतीपूर्ण है कि हमेशा सीखने के लिए कुछ है।

प्रत्येक काटा की टिप्पणियों में आम तौर पर आपके पास अटक जाने वाली किसी भी चीज़ का उत्तर देने में मदद करने के लिए पर्याप्त जानकारी होती है।


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

3

के साथ शुरू करो क्लासिक डिजाइन समस्या: KWIC।

डेविड परनास ने अपने क्लासिक पेपर में मॉड्यूलरिटी पर KWIC का इस्तेमाल किया: ऑन द क्राइटेरिया टू बी यूज़ इन डीकंपोज़िंग सिस्टम्स इन मॉड्यूल्स , जिसे हर किसी को शायद हर 10 साल में पढ़ना चाहिए।

KWIC, संदर्भ में की-वर्ड के लिए , एक सरल अनुक्रमण और सॉर्टिंग समस्या है जहां आप पाठ की पंक्तियों में पढ़ते हैं, और फिर कीवर्ड के आधार पर प्रत्येक पंक्ति को घुमाते हैं (उदाहरण के लिए, "", "को छोड़कर"), प्रत्येक पारी को एक में जोड़ते हुए सूची आप फिर क्रमबद्ध करें। विचार यह है कि KWIC का उपयोग करना एक पुस्तक के लिए एक सूचकांक बनाने के लिए उपयोगी होगा। अपने क्लासिक पेपर के समय, परनास ने कहा कि एक अनुभवी प्रोग्रामर इसे एक से दो सप्ताह में हल कर सकता है, लेकिन यानिस लॉ में कहा गया है कि अब इसे एक से दो घंटे में किया जा सकता है । [ऑपरेटिंग सिस्टम और मानक पुस्तकालय बहुत बेहतर हो गए हैं।]

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

KWIC उदाहरण जानने के बाद, आप इसका उपयोग करने वाले अन्य सॉफ़्टवेयर डिज़ाइन पेपर की सराहना कर पाएंगे। उदाहरण के लिए, माइकल वैनहिल्स के पेपर डिकॉउलिंग चेंज ऑफ़ डिज़ाइन से इसका उपयोग C ++ टेम्प्लेट का उपयोग करके वास्तव में दिलचस्प डिज़ाइन तकनीक दिखाने के लिए किया जाता है। और, जब तक हम C ++ टेम्पलेट और डिज़ाइन के बारे में बात कर रहे हैं, Czarnecki और Eisenecker के Synthesizing ऑब्जेक्ट्स पेपर पढ़ें ।

KWIC से आगे बढ़ना अन्य क्लासिक उदाहरण हैं, जैसे कि स्पेसवार उदाहरण , जिसे कई भाषाओं में चित्रित / पुन: डिज़ाइन किया गया है, जैसे कि पायथन और एस्पेक्टज

बेशक, किसी भी कार्यक्रम को एक डिजाइन अभ्यास के रूप में इस्तेमाल किया जा सकता है, लेकिन केडब्ल्यूआईसी और स्पेसवार ऐसे उदाहरण हैं जहां आप कई विकल्पों को देख सकते हैं।


पुन: आपका स्पष्टीकरण ... मैं यहाँ डिज़ाइन के व्हाइट-बोर्ड स्तर के बारे में बात कर रहा हूँ। लेकिन यह कोड स्तर तक भी खोदने के लिए सार्थक है, क्योंकि आप महसूस कर सकते हैं कि आपके कई डिजाइन समाधानों में दोष हैं जो उन्हें व्यक्त करने के लिए बहुत कठिन हैं।
मैकनील

1

मैंने इस तरह की बात को "प्रोग्रामिंग कटास" कहा है। काता आंदोलनों के एक रूप या अनुक्रम के लिए एक मार्शल आर्ट शब्द है जिसे बार-बार पूर्णता के लिए अभ्यास किया जाता है। अपनी पसंद की भाषा में कुछ खोज करें और मैं शर्त लगाता हूँ कि आप कुछ करेंगे। :)


1

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

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

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

यह रचनात्मक होने और मज़ेदार होने के बारे में है।

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