कागज पर मेरी समस्या हल करने का तरीका लिखना? [बन्द है]


54

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

हो सकता है कि ऐसा इसलिए हो क्योंकि मुझे इससे पहले कि लोग प्रयोगशालाओं को हल करते हुए देखें। या हो सकता है कि यह कलम और कागज का तरीका हो।

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

संपादित करें: अस्पष्ट होने के लिए क्षमा करें, लेकिन जब मैंने कहा कि कागज पर लिखने का मेरा मतलब मेरी समस्या को हल करने का दृष्टिकोण है (उदाहरणों को लिखना, मूल्यों के साथ तालिकाओं को बनाना, आदि) मेरा वास्तविक कोड नहीं। मैं सिर्फ अपने विचारों को बाहर लाने के लिए कागज का उपयोग करता हूं।


28
मैं पहले कागज पर समस्या के माध्यम से कुछ भी गलत नहीं देख सकता।
जूलियन गुर्टॉल्ट


34
वह व्यक्ति गलत है। ज्यादातर यूएमएल या स्यूडोकोड ब्लॉक जैसे शॉर्टहैंड का उपयोग करते हैं, लेकिन जो भी विधि आप उपयोग करते हैं, वह आपके दिमाग की तरह काम करता है और जाहिर तौर पर आपके लिए कागज की जरूरत है =) मुझे लगता है कि फेनमैन को भौतिक विज्ञानी नहीं होना चाहिए क्योंकि वह ब्लैकबोर्ड पर समीकरण लिखते हैं, है ना?
पैट्रिक ह्यूजेस

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

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

जवाबों:


70

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

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

उदाहरण के लिए, यदि मैं किसी लिंक की गई सूची के बीच से किसी तत्व को हटा रहा हूं, तो मैं कुछ इस तरह शुरू कर सकता हूं:

// find the element
// point the previous element to the next element
//    How do I get a pointer to the previous element?
//        doubly-linked list?
//        another find?
//        keep track during the first find?
// delete the element

तब मैं // find the elementएक फ़ंक्शन को अधिक स्यूडोकोड के साथ बदल सकता हूं , और जब तक मेरे पास पूर्ण समाधान न हो जाए, तब तक इसे जारी रखें। मत सोचो कि कोड को एक रैखिक तरीके से लिखा जाना चाहिए।


अच्छी सलाह कार्ल।
andy256

2
मैं रबड़ की डक समस्या को हल करने के साथ उपरोक्त विधि को जोड़ती हूं (मेरा सबसे जटिल काम करने के लिए मेरा एक SuSE आलीशान है)। मेरे पास एक व्हाइटबोर्ड भी है जिसमें बहुत सारी चीजें हैं।
डेको

+1। प्रश्न लिखना और फिर उत्तर देना कि मैं अक्सर चीजों को कैसे हल करता हूं। यह मुझे अपनी योजनाओं में नुकसान और आघात के लिए मजबूर करता है।
एंडी हंट

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

1
इस तकनीक का वास्तव में एक नाम है:
छद्मकोड

15

इसका लाभ उठाएं! अगर हम आपको जो सोच रहे हैं और आपके समाधान को डिजाइन कर रहे हैं उसे कॉल करते हैं, तो यह समझ में आता है कि आपकी प्रक्रिया सिर्फ कोड ब्लास्ट करने की तुलना में बहुत तेज होगी।

लोग सोचना पसंद करते हैं (और शोर करने वाले हमें बताना पसंद करते हैं) कि उनके काम करने का तरीका बेहतर है। लेकिन सभी की क्षमता और कौशल का मिश्रण अलग है। तो वही करें जो आपके काम आए। जैसा कि आप अभ्यास प्राप्त करते हैं, आप संभवतः अपने सिर में डिजाइन के अधिक काम करने के लिए स्विच करेंगे, और बड़ी समस्याओं के लिए कागज का उपयोग करेंगे।

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


1
मैं लंबे समय में कम समय लेने वाले समाधान को सोचने और डिजाइन करने के लिए वाउच कर सकता हूं। बहुत बार, विश्वविद्यालय में, मैं लोगों (खुद को शामिल) को क्लैकिंग के 2 घंटे में लॉन्च करता देखूंगा, केवल यह पता लगाने के लिए कि उनका समाधान टूट गया था। समस्या के माध्यम से डिजाइन और काम करने के लिए समय लेने से एक सरल समाधान खोजने में मदद मिलेगी। हमारे पास व्हाइटबोर्ड, नोटबुक और "व्यंजन" हैं जहां मैं इस कारण से काम करता हूं।
जेमी टेलर 14

6

मैं कागज पर वास्तविक कोड नहीं डालता , लेकिन कुछ भी गैर-तुच्छ के लिए मैं लगभग हमेशा एक व्हाइटबोर्ड या नोटबुक पर शुरू करता हूं। मैं आमतौर पर स्केच करता हूं:

  • एल्गोरिदम / प्रक्रिया / नियंत्रण प्रवाह
  • डेटा संरचनाएं
  • रिश्तों
  • घटक (मैं इस समस्या को कैसे तोड़ूँ)

यह आमतौर पर रेखाचित्रों, स्यूडोकोड और अंग्रेजी का संयोजन है।

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

मैमोरी रिटेंशन के लिए पेपर पर कुछ करना एक जबरदस्त मदद है। नोटबुक्स के फील्ड नोट्स ब्रांड की टैगलाइन यह है:

मैं इसे बाद में याद करने के लिए नहीं लिख रहा हूँ, मैं इसे अब याद करने के लिए लिख रहा हूँ।

कागज पर चीजों को लिखने के लिए और अधिक ध्यान केंद्रित करने के बाद, भले ही मैं अपने फोन पर टूडो ऐप में एक क्षण बाद प्रवेश करता हूं, मुझे लगता है कि इलेक्ट्रॉनिक नोट बनाने की तुलना में मेरे दिमाग में यह सोच कहीं ज्यादा बेहतर है। IOW, कागज / व्हाइटबोर्ड पर मेरी कोडिंग की योजना बनाकर, विचार मेरे दिमाग में बेहतर बने रहते हैं।

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


5

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

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

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


3

समस्या को हल करना और कोड लिखना जो आपके समाधान को लागू करता है, दो अलग-अलग गतिविधियां हैं।

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

(व्यक्तिगत रूप से, मैं खुद को कंप्यूटर से दूर हो रहा हूं और अपने दिमाग में एक समाधान बनाने के लिए हलकों में घूम रहा हूं)


2

आप इक्का साक्षात्कार करेंगे! वे आपको कागज़ या व्हाइटबोर्ड पर कोड लिखते हैं। मैं इसके ठीक विपरीत हूं। एक ब्रेसिज़ लिखने या कलम के साथ कट एंड पेस्ट करने की कोशिश करना बहुत कठिन है!

मेरे पिता ने COBOL की प्रोग्रामिंग करते समय बहुत सारे कागज का इस्तेमाल किया। मुझे लगता है कि यह सिर्फ आपकी सोचने की शैली है।


0

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


0

आप जो भी कर रहे हैं, उसमें कुछ भी गलत नहीं है, मैंने कागज और कलम के साथ ही प्रोग्राम करना सीखा।

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

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

आपके प्रश्न के माध्यम से पढ़ना मुझे आश्चर्य है कि क्या आपकी कुछ समस्याएं ध्यान केंद्रित करने के कारण हो सकती हैं। यदि एक शांत वातावरण में कलम और कागज का उपयोग करने से आपको ध्यान केंद्रित करने में मदद मिलती है तो महान।

आप अभी भी कॉलेज में हैं और आप अभी भी सीख रहे हैं। अंततः, आप जो कर रहे हैं वह आपके लिए काम करता है। यदि कागज और कलम का उपयोग करके आप अपने विचारों और विचारों को स्पष्ट और शांति से आदेश दे रहे हैं तो आप प्रोग्रामिंग कर रहे हैं।


1
यह पूछे गए प्रश्न का उत्तर कैसे देता है?
gnat

ओपी पूछ रहा है कि क्या पेन और पेपर का उपयोग करना ठीक है क्योंकि उसने पढ़ा 'किसी ने लिखा है कि यदि आपको अपने प्रोग्राम को कागज पर लिखना है तो आपको प्रोग्रामर नहीं होना चाहिए।' वह यह भी कहता है कि वह कॉलेज में है इसलिए अभी भी सीख रहा है। मेरा इरादा यह दिखाना था कि जो वह कर रहा है उसमें कुछ भी गलत नहीं है और मैंने कागज और कलम का उपयोग करके कार्यक्रम करना सीखा।
डैनियल हॉलिनरेके

-1

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


-1

करो जो तुम्हारे लिए काम आता हो। मैं कागज पर कोड नहीं लिखूंगा। मैं स्यूडोकोड लिखता हूं और कागज पर फ्लोचार्ट खींचता हूं, लेकिन पूर्ण कोड लिखना समय की बर्बादी जैसा लगता है।


-2

मैं तकनीकी कौशल सीखने के अपने शुरुआती दिन में भी इसी समस्या का सामना कर रहा हूं।

लेकिन इस प्रकार के अभ्यास से 100% सफलता नहीं मिलनी चाहिए क्योंकि अगर हम पेपर पर कोड लिख रहे हैं तो बग फिक्सिंग का कोई मौका नहीं है, पेपर वर्क करने के दौरान त्रुटियों और अपवादों को हल करने का मौका है।

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

मैं कागजी काम भी कर रहा हूं लेकिन जब अपनी कार्यक्षमता को लागू करने से पहले बस मोटे तौर पर अनुमान लगाऊंगा तो इसके बाद मैं सिस्टम पर अपना कार्यान्वयन शुरू करूंगा।

कृपया सिस्टम अभ्यास पर अधिक समय बिताने की कोशिश करें। यह 100% आत्मविश्वास और परिणाम देगा।

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