क्या वाक्यांश "पहिया को कभी भी सुदृढ़ नहीं करना" छात्रों के लिए उपयुक्त है?


115

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

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

क्या यह "पहिया को सुदृढ़ करना" बुरा है? शायद मैं इसे गलत समझ रहा हूँ? हो सकता है कि एक तरीका है जिससे मैं पहिया को फिर से बनाने से बच सकता हूं और एक ही समय में बहुत कुछ सीख सकता हूं?


51
यदि आप अन्य लोगों को आपके लिए भार उठाने के लिए (जब तक कि आप एक आम बनना नहीं सीख रहे हों) आपको जिम में शामिल होने से बहुत लाभ नहीं होगा।
चार्ल्स ई। ग्रांट

82
जब आप पहियों का निर्माण करने जा रहे हों तो पहिया को फिर से लगाना ठीक रहेगा। जब आप घर बना रहे होते हैं, तो पहिया बनाने वालों को यह पता होना एक अच्छा विचार है कि वे क्या कर रहे हैं जो आप बेहतर कर रहे हैं।
zzzzBov

22
आपको कम से कम एक पहिया बनाने की कोशिश करने की ज़रूरत है! अन्यथा आपको नहीं पता कि आपको पूर्वनिर्मित एक का उपयोग क्यों करना चाहिए।

59
यह है कभी नहीं एक पूर्ण राज्य के लिए उचित। :)
एक CVn

2
जब आप अत्यंत अनुकूलित कोड बना रहे हों तो पहियों को फिर से लगाना ठीक हो सकता है। मानक पुस्तकालय बहुत उपयोगी होते हैं, लेकिन अक्सर कुछ ऐसा बनाना संभव होता है जो कम सामान्य लेकिन तेजी से होता है।
सिंह

जवाबों:


126

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

  1. पुन: लेखन कोड जो मौजूद है वह व्यर्थ प्रयास है जो आपके सिस्टम के अनूठे भागों पर उपयोग किया जा सकता है और परियोजना को आवश्यक से अधिक समय तक ले जाता है।
  2. किसी भी कोड के पहले संस्करण में बग / अप्रत्याशित समस्याएं होने की अधिक संभावना है। अधिकांश पुस्तकालयों और पुन: उपयोग करने योग्य घटकों को कई बार युद्ध परीक्षण और पैच किया गया है। यदि आप एक हैशिंग एल्गोरिथ्म का फिर से आविष्कार करते हैं या अपना खुद का आरडीबीएमएस बनाने की कोशिश करते हैं (जब तक कि यह परियोजना क्या है) अधिक बार नहीं तो आप हीन परिणामों को समाप्त करने जा रहे हैं।

उस ने कहा, एक शैक्षणिक माहौल में लक्ष्य सीखने के लिए होता है , न कि किसी बजट पर सॉफ्टवेयर देने के लिए। यह समझने के लिए कि लक्ष्य को पूरा करने के लिए प्रवक्ता या एक्सल कैसे काम करता है, यह समझने के लिए एक पहिया का पुनः आविष्कार करना। यही कारण है कि कई प्रोग्रामिंग पाठ्यक्रम में बिल्डिंग कंपाइलर पर एक वर्ग शामिल है जब बहुत कम काम करने वाले प्रोग्रामर को कभी ऐसा करने की आवश्यकता होती है।


37
मैं यह समझने के लिए सहमत हूं कि चीजें कैसे काम करती हैं, हालांकि मैं यह भी चाहता हूं कि प्रोग्रामिंग स्कूल तीसरे पक्ष के पुस्तकालयों का उपयोग कैसे करें और आपको क्यों करना चाहिए, यह जानने के लिए उनके पाठ्यक्रम में कुछ समय लगा। मुझे लगातार प्रोग्रामर और पेशेवर क्षमता के डेवलपर्स मिलते हैं जो ऐसा नहीं कर सकते हैं और पहिया को फिर से मजबूत कर सकते हैं।
Spoike

3
संकलक के बारे में शानदार बात
चनी

1
मुझे लगता है कि पहिया को सुदृढ़ करना नहीं सीखना अधिक महत्वपूर्ण है। ऐसी कई चीजें हैं जो आप कर सकते हैं जो पहले से बनाई गई कुछ चीजों को शामिल नहीं करती हैं।
थॉमस बोनीनी

@ कर्क एक छात्र होने के दौरान, अवधारणाएं सबसे महत्वपूर्ण हिस्सा हैं। कई प्रोफेसर पुल सिद्धांत और अनुप्रयोग की अनुमति देने के लिए कोड नमूनों का उपयोग करते हैं। वे प्रकार के कार्यक्रम हैं जो पुस्तकालय को सुदृढ़ करने जा रहे हैं लेकिन यह सुनिश्चित करना है कि छात्र सामग्री को समझें।
16

2
एक छात्र के रूप में आपको पहिया को सुदृढ़ करने की आवश्यकता है यह देखने के लिए कि यह जितना तेज़ होता है, लेकिन पेशेवर के रूप में आपको व्यावसायिक पहियों का उपयोग करने की आवश्यकता होती है ताकि आप जितनी जल्दी हो सके जा सकें। दुर्भाग्य से, जैसा कि यह पता चला है, एसओ मुख्य रूप से पेशेवरों के लिए एक साइट है, छात्रों के लिए नहीं (वे थोड़ी देर के लिए [होमवर्क] पर प्रतिबंध नहीं लगाते हैं?)
टैकोरो

19

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


17

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

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

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


12

एक शिक्षक या प्रोग्रामिंग होने के नाते, मैं समस्या के विपरीत पक्ष के साथ लगातार लड़ाई करता हूं: जब मैं छात्रों से पहिया को फिर से लगाने के लिए कहता हूं?

इन सरल स्थितियों को लें: हम छँटाई एल्गोरिथ्म का अध्ययन कर रहे हैं, और मैंने कुछ डेटा को सॉर्ट करने वाले प्रोग्राम को लिखने के लिए कार्य निर्धारित किए हैं; या दिनांक कार्यक्षमता पर काम कर रहा है, और मैं एक कैलेंडर के लिए पूछना।

इन दोनों के लिए, अनगिनत तैयार पुस्तकालय और कार्यक्षमता उपलब्ध हैं; लेकिन मैं चाहता हूं कि छात्र उनसे बचें, और एक छँटाई एल्गोरिथम या एक कैलेंडर का अपना संस्करण विकसित करें।

अब इसे अन्य लें: मैंने शेड्यूलिंग अपॉइंटमेंट्स के लिए एक साधारण एप्लिकेशन लिखने का कार्य निर्धारित किया है। इसके लिए छँटाई की जरूरत है, और एक कैलेंडर, और बहुत कुछ। इस बार "पहिया को सुदृढ़ न करें" लागू होता है: मैं नहीं चाहता कि छात्र हल की गई समस्याओं से जूझें, बल्कि परिणाम प्राप्त करने के लिए मौजूदा कार्यक्षमता को इकट्ठा करें।

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

आपके प्रश्न का अधिक सीधे उत्तर देने के लिए, दो सुझाव:

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

6

अभ्यास करें मुझे संदेह है कि कोई भी लिखता है कोड की पहली 1000 लाइनें बहुत अनोखी हैं।

अपने टूलसेट का विस्तार करें एक रूपरेखा का उपयोग करने से अधिक लाभ होता है जब आप समझते हैं कि यह क्या कर रहा है (उस बिंदु पर सबसे पहले आप इसे स्वयं कर सकते हैं।) इसलिए आप इसे लागू करना जानते हैं।

"पहियों" को समझें कि खराब तरीके से निर्मित और घिसे-पिटे पहिए का उपयोग करना या जो फिट नहीं होता है, नेत्रहीन रूप से इस नियम के अंगूठे से चिपके रहने का कोई बहाना नहीं है। आप समय, धन, विशेषज्ञता के लिए कम हो सकते हैं, इसलिए आप बस इसे पैच अप करें और यात्रा समाप्त करें।

कुछ निरपेक्ष हैं


1
+ विशेषकर अंतिम बिंदु के लिए।
माइक डनलैवी

कोड की पहली 1000 लाइनें जो भी लिखता है, वह रचनात्मक गलतियों के मामले में बहुत अनूठी है।
वामावर्तबाउट

@leftractionabout - मुझे लगता है कि मुझे उस कथन को कोड की पंक्तियों तक सीमित करना चाहिए जो संकलन कर सकते हैं।
जेएफओ

3

छात्रों के पास असाइनमेंट पूरा करने के लिए धन बजट नहीं है, लेकिन विचार करने के लिए नियत तारीखें हैं।

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

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

यदि आपको एसओ पर "लाइब्रेरी एक्स / फ्रेमवर्क वाई" ब्रश का उपयोग मिलता है, तो अपने प्रश्न को "मैं अपने बारे में अधिक जानने के लिए अपने द्वारा एक्स लिख रहा हूं" के साथ पेश करें।


"मैं इसके बारे में अधिक जानने के लिए अपने आप से एक्स लिख रहा हूं" के साथ अपने प्रश्न को प्रस्तुत करें। इस। +1।
boisvert

2

यदि आपके पास अपनी परियोजना, IMO के लिए एक निर्धारित समय सीमा नहीं है, तो पहिया को सुदृढ़ करना बेहतर है। यदि आपके पास नौकरी नहीं है, या आप केवल प्रोग्राम बनाना सीख रहे हैं , मनी प्रोग्रामिंग बनाने के लिए नहीं, तो शॉर्टकट का उपयोग करने का क्या मतलब है जो आपको एक बेहतर प्रोग्रामर नहीं बनाएगा, जो आपके प्रोजेक्ट को तेजी से पूरा करेंगे? हालांकि यह सच है, यह निश्चित रूप से एक अच्छा कौशल है कि पुस्तकालयों, रूपरेखाओं और अन्य लोगों के कोड का उपयोग कैसे करें।


यह कोड कटास की अवधारणा के पीछे का विचार है, इससे बेहतर और सीखने के लिए बार-बार कोड लिखना। मैं यह भी कहूंगा कि आपके कोड को बार-बार लिखने पर भी काम अच्छा है, और यदि आप और भी बेहतर हैं तो कई पेटेंट लागू कर सकते हैं।
Bill K

2

वास्तविक जीवन में, पहिया को बार-बार प्रबलित किया जाता है। यदि हम कारणों की तलाश करते हैं, तो हमें कुछ अंतर्दृष्टि मिल सकती है जब हमें प्रोग्रामिंग में पहिया को फिर से बनाने की आवश्यकता होती है।

सुमेरियन समय के बाद से, कई चीजें बदल गई हैं:

  • पत्थर, लकड़ी, धातु, कार्बन से: पहियों का निर्माण करने के लिए प्रयुक्त सामग्री ...
  • पहियों की आवश्यकता वाली वस्तुओं का आकार - चिकित्सा उपकरणों के लिए नैनोमीटर के आकार और भूरे रंग के कोयले की कमाई के लिए पहियों, आकार में 100 मी
  • उत्पादन पर्यावरण - हाथ से बनाया गया, या उद्योग उत्पादन
  • पहियों की शुद्धता की जरूरत है
  • आपके पहिए के चारों ओर सही स्थिति। आपकी नौकरी के लिए एक सही पहिया हो सकता है, लेकिन यह पेटेंट हो सकता है।
  • आपके पहिया के लिए चमक और पॉलिश। एक कैडिलैक VW गोल्फ की तुलना में एक और पहिया के लायक हो सकता है।
  • एक बच्चे के घुमक्कड़ के लिए इष्टतम पहिया कई मापदंडों पर निर्भर करता है: घुमक्कड़ का आकार और वजन (प्लस बेबी / ~ ies), जलवायु परिस्थितियों, तेल या प्राकृतिक रबर के लिए संसाधन मूल्य, पहियों और कारीगरों के निर्माण के लिए मशीनें, उत्पादन के लिए उपलब्ध। शीघ्र ही बोली जाने वाली: विश्व अर्थशास्त्र।

सॉफ्टवेयर की दुनिया में इसका अनुवाद कैसे होता है? कुंआ,

  • एक वेबसर्वर हो सकता है, लेकिन दुर्भाग्य से यह PHP में लिखा गया है। आप उस भाषा में रहना पसंद करेंगे, जिसमें आप धाराप्रवाह हैं
  • एक छँटाई एल्गोरिथ्म 10 तत्वों के लिए ओवरसाइज़ किया जा सकता है, लेकिन 1T तक के तत्वों को स्केल नहीं करता है
  • आपको एक समाधान की आवश्यकता हो सकती है जो स्वयं दूसरे प्रोग्राम द्वारा उत्पन्न होता है
  • सटीकता अक्सर सॉफ़्टवेयर भूमि में एक डिजिटल प्रश्न होता है, अगर एल्गोरिथ्म एक सूची को छाँटता है जो इसे क्रमबद्ध करता है - ज्यादातर सॉर्ट नहीं किया जाता है। लेकिन प्रदर्शन, कोड आकार, मेमोरी उपयोग या अन्य प्रतिबंधों के बगल में हो सकता है
  • मुझे और स्पष्टीकरण की आवश्यकता नहीं है, मुझे लगता है।
  • लुक और फीलिंग किसी चीज को फिर से बढ़ाने का एक निरंतर कारण है - ड्रापडाउन ललिस्ट (कॉम्बो बॉक्स)।
  • वैश्विक आर्थिक स्थिति आपके सॉफ़्टवेयर-व्हील को प्रभावित कर सकती है: क्या यह क्लाउड व्हील, ओपन सोर्स व्हील, ब्राउज़र-व्हील या ऐप व्हील होगा?
  • और निश्चित रूप से अपना स्वयं का पहिया बनाने का सबसे प्रसिद्ध कारण: आप इसे सीखना पसंद करते हैं।

2

मैं एक नया शिक्षित छात्र हूँ। जिस स्कूल में हम asp.net और C # सीख रहे थे, उन 2 वर्षों में जो शिक्षा ली गई थी, हमने कभी भी अपना ईमेल सिस्टम, लॉगिन सिस्टम या CMS बनाने की कोशिश नहीं की .. सब कुछ बस खींच रहा था, और डिजाइन दृश्य में नियंत्रण छोड़ रहा था ।

हमने 102 छात्रों को शुरू किया, 23 ने पूरा किया। 4 लोगों के पास काम है। कारण ?: उन 4 लोगों (मेरे सहित) को पता था कि शिक्षा पर वास्तव में शुरू होने से पहले हमें कैसे प्रोग्राम करना था।

बाकी लोग खो गए हैं। क्योंकि हमने कभी 'पहिए को फिर से नहीं लगाया'। हमें कभी यह पता नहीं चला कि कोड वास्तव में कैसे काम करता है। उपयोगकर्ता प्रबंधन के साथ एक पूर्ण लॉगिन प्रणाली का निर्माण करना काफी सरल है - लेकिन मेरी शिक्षा से छात्रों को पता नहीं है कि ऐसा कैसे करना है। क्योंकि वे नहीं जानते कि लॉगिन सिस्टम वास्तव में कैसे काम करता है।

मुझे दुख होता है, कि कुछ बिंदु पर, वास्तव में 2 साल बर्बाद हो गए, कुछ भी नहीं सीखना। - काश, दुनिया भर के शिक्षक कहते हैं कि: हाँ, हम जानते हैं कि रूपरेखाएँ हैं, जहाँ कोड मौजूद है, आप वास्तविक जीवन में उनका उपयोग कर सकते हैं .. लेकिन इस शिक्षा पर आप सीखेंगे कि प्रोग्रामिंग कैसे करें ..

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


1

यह वास्तव में आप क्या कर रहे हैं पर निर्भर करता है। यदि आप पहियों को समझने की कोशिश कर रहे हैं, तो उन्हें खुद को सुदृढ़ करना एक अच्छा विचार है। यदि आप कारों को समझने की कोशिश कर रहे हैं, तो पहिया या आंतरिक दहन इंजन को सुदृढ़ करना आमतौर पर बेकार और विचलित करने वाला होता है।

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


1

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

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

छात्रों के लिए, इसका मतलब यह नहीं है कि दूसरों ने क्या लिखा है, इसका मतलब यह नहीं है कि जो आपने पहले ही महारत हासिल कर ली है - उस समय को उस पर बेहतर तरीके से खर्च किया जा सकता है जिसमें आपने महारत हासिल नहीं की है।


सिवाय अगर 25 वाँ रीराइट कुछ प्रोग्रामिंग लैंग्वेज के लिए प्रैक्टिस है तो आप नई सीख रहे हैं।
leftaroundabout

1

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

  1. आप या तो समझते हैं कि चीजें किस तरह से हैं।
  2. आप इसे अनुकूलित कर सकते हैं और इसे बेहतर बना सकते हैं
  3. आप इसे खराब कर सकते हैं और सीख सकते हैं कि उस चीज़ को कैसे नहीं करना चाहिए।

मेरे लिए छात्र को पहिया को सुदृढ़ नहीं करना चाहिए, लेकिन इसे उल्टा करने की कोशिश करें और निहितार्थ को समझें।


1

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

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

एक बार आपके पास अच्छा काम करने का ज्ञान होने के बाद, उन्हें महसूस करने के लिए वापस जाना और नई संरचनाओं / एल्गोरिदम को लागू करना भी महत्वपूर्ण (और मजेदार) हो सकता है। जब तक यह आपका काम नहीं है या आप वास्तव में अच्छे हैं, तब तक मैं आपके कोड में मौजूदा का उपयोग कर रहा हूं।


1

जवाब इस बात पर निर्भर करता है कि आप सीखना चाहते हैं या बनाना चाहते हैं।

यदि सीखना उद्देश्य है, तो "पहिए को फिर से मजबूत करना" आपको मौजूदा पहिए (पुस्तकालय कार्यों) का उपयोग करने की तुलना में अधिक अंतर्दृष्टि और बेहतर समझ दे सकता है।

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

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


1

वैसे, इसके दो पहलू हैं।

सबसे पहले, यदि आप सीखने की कोशिश कर रहे हैं, तो यह खरोंच से कुछ चीजें करने के लिए उपयोगी हो सकता है , या आवश्यकता से कम स्तर के इंटरफेस का उपयोग कर सकता है। हालाँकि, यह जानना आवश्यक है कि आप क्या सीख रहे हैं: यदि आप एचटीटीपी प्रोटोकॉल के बारे में सीखना चाहते हैं, तो आपको स्वयं प्रोग्रामिंग करने की आवश्यकता नहीं है। केवल उन चीजों को सुदृढ़ करें जिनके बारे में आप सीख रहे हैं , और केवल ऐसा वास्तव में उनका पता लगाने और समझने के लिए करते हैं।

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

अंत में, प्रोग्रामिंग पर्याप्त सैद्धांतिक आधार पर टिकी हुई है। आपको थ्योरी सीखने के लिए, पढ़ने के साथ युग्मित दोनों व्यावहारिक अभ्यासों का उपयोग करना होगा।


मैं सहमत हूँ। इसीलिए हर समय बहुत सारे नए पहले से मौजूद सॉफ्टवेयर फ्रेमवर्क और लाइब्रेरी बनाए जा रहे हैं :)
gbjbaanb

0

मैंने उसी स्थिति का सामना किया है। यह उद्योग और शिक्षाविदों में धारणा के अंतर के कारण है।

यदि आप "पहिया को सुदृढ़ नहीं करते हैं" तो आप स्कूल में किसी भी चीज का अध्ययन नहीं कर सकते हैं या यह नहीं समझ सकते हैं कि कुछ कैसे काम करता है।

जबकि एक उद्योग में उद्देश्य एक उत्पाद को कम से कम समय और प्रयास में लाना है।

निजी तौर पर, मैं खरगोश के छेद के नीचे जाना पसंद करता हूं और मैं उद्योग दर्शन का पता लगाता हूं, लेकिन व्यवसाय कैसे किया जाता है और आप शिकायत नहीं कर सकते।


0

हैकर शब्दजाल Lexikon पर एक बहुत अच्छा टिप्पणी पहिया पुनर्रचना :

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

इसलिए पहिया को फिर से लगाना अच्छा हो सकता है, लेकिन यह सुनिश्चित करें कि आप इसे करने से पहले या बाद में अन्य समाधानों को देखें।


0

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


-1

यदि आप एक छात्र हैं, और इसलिए आपके प्रोजेक्ट के लिए कोई समय सीमा निर्धारित नहीं है, तो "पहिया को फिर से स्थापित करना" बेहतर है। यदि आप अभी प्रोग्रामिंग करना सीख रहे हैं, तो प्रोग्राम कैसे करें, और पैसे कमाने के लिए नहीं, ऐसे शॉर्टकट क्यों लें जो आपको सीखने में मदद न करें? यह कठिन रास्ता क्यों नहीं है? लेकिन, जब आप एक कामकाजी प्रोग्रामर बन जाते हैं, तो लोगों को संदेह होगा कि क्या आप फ्रेमवर्क या लाइब्रेरीज़ का उपयोग करना नहीं जानते ...


10
मुझे नहीं पता कि आपने किस स्कूल में भाग लिया, लेकिन मैं जहां गया, असाइनमेंट के लिए समय सीमा सामान्य थी।
बजे एक CVn

-2

असाइनमेंट / प्रश्न / परीक्षा वह करें जो आप करने के लिए कहते हैं।

वर्षों पहले मैं सी प्रोग्रामिंग क्लास के लिए टीए था। एक परीक्षा का प्रश्न था 'फाइल कॉपी करने का प्रोग्राम लिखें'। कई छात्रों ने एक ही प्रकार का प्रश्न पूछा - क्या वे एक प्रक्रिया को आगे बढ़ा सकते हैं और OS cp कमांड चला सकते हैं?

हमने उनसे जो पूछा वह 'क्या आपका प्रोग्राम फ़ाइल की नकल करेगा?'

परीक्षा प्रश्न ने उन्हें एक फाइल कॉपी करने के लिए कोड लिखने के लिए कहा। यदि उत्तर में सी कोड नहीं था जो फाइल की नकल करता था (जैसे ओपन इनपुट, ओपन आउटपुट, बाइट्स पढ़ने / लिखने के लिए एक लूप, क्लोज इनपुट, क्लोज आउटपुट) तो यह फाइल कॉपी नहीं करता था।

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

नौकरी के साक्षात्कार में लोकप्रिय रूपरेखाओं का ज्ञान आपको सवालों के जवाब देने में मदद करेगा। सीखने के लिए अपने स्वयं के प्रोजेक्ट बनाएं। तुम्हारी पढ़ाई के लिए शुभकामनाएं।


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