नौसिखिया प्रोग्रामर की मदद करते समय उपयुक्त शब्दावली


9

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

उदाहरण के लिए: कोई फ़ंक्शन लिख सकता है, लेकिन यह नहीं समझ सकता है कि इसे निष्पादित क्यों नहीं किया गया है, न कि वे इसे कॉल करना भूल गए। अगर मैं जैसे वाक्यांशों का उपयोग करता हूं "(make a) call (to) the function/it"और "pass it the.."मुझे खाली दिखता है।

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

क्या नौसिखिया प्रोग्रामर की मदद करने के लिए शब्दावली के अन्य टुकड़े अधिक अनुकूल हैं? या यह संचार का मुद्दा नहीं है?


5
स्प्रेडशीट उपयोगकर्ता एक फ़ंक्शन को कॉल करना जानते हैं। कई अपना लिख ​​सकते हैं। यहां कुछ मौलिक रूप से गलत है।
जेएफओ

@ जेफ़ो मैं कुछ महसूस कर रहा था कि वह एमिस था, लेकिन उस मॉड्यूल और उन लोगों को संदेह का लाभ देना चाहता था
एंडी हंट

7
रुको क्या? प्रोग्रामर आप के साथ काम कर रहे हैं पता नहीं क्या 'एक समारोह बुला' और तर्क पारित करने का मतलब है? यह उतना ही बुनियादी है जितना कि आप उन्हें चित्र बनाए बिना और बिल्लियों और कुत्तों को शामिल करने वाले रूपकों का उपयोग किए बिना जा सकते हैं। यह एक संचार मुद्दे से परे है और दुर्भाग्य से ज्ञान की कमी के साथ एक मुद्दा हो सकता है। मैं आपके प्रश्न को फिर से पढ़ता हूं और ऐसा लगता है कि उन्होंने मूल रूप से एक परिचयात्मक स्तर का पाठ्यक्रम लिया है और यह है?
3

3
@AndyBursh: ऐसे छात्रों को दूसरे वर्ष में कैसे मिला? आशा है कि वे परीक्षा उत्तीर्ण नहीं करेंगे और सॉफ्टवेयर विकास के बाहर नौकरी चुनेंगे।
डॉक्टर ब्राउन

3
शायद जुर्राब की कठपुतलियाँ मदद
करेंगी

जवाबों:


15

उन्हें उचित शर्तों को अंततः सीखना होगा, जितनी जल्दी बेहतर होगा।

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


2
मैं लगभग उसी प्रतिक्रिया को पोस्ट करने वाला था जब आपका लोड हुआ था। :) +1
टॉम स्क्वायर्स

स्पष्टीकरण को उनके स्तर तक न लाएँ, उनके स्तर को ऊपर लाएँ।
बेंट

2

सामान्य रूप में

जब कोई व्यक्ति आपको नहीं समझता है, तो आपके पास दो विकल्प हैं:

  1. व्यक्ति जो जानता है या नहीं, उसके अनुसार शब्दावली को अनुकूलित करें,

  2. व्यक्ति को वह शर्तें समझाएं जो वह नहीं समझता है।

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

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

अपने सटीक मामले में, आप शायद ही पहले को चुन सकते हैं: "फ़ंक्शन को कॉल करें" किसी भी सरल तरीके से सुधार नहीं किया जा सकता है। एक कॉल एक कॉल है। आप इसे और सरल नहीं कर सकते।

इसका मतलब है कि आपको दूसरा तरीका चुनना होगा: व्यक्ति को प्रत्येक तकनीकी शब्द समझाएं।

  1. या तो व्यक्ति को एक शब्दकोश या विकिपीडिया पर इंगित करें, जो बुनियादी अवधारणाओं और शब्दावली के लिए बहुत अच्छी तरह से काम करता है।

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

  2. या अपने शब्दों में समझाएं

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

आपके विशेष मामले में

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

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


1

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

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

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

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

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

दूसरी ओर तर्क , वास्तविक जानकारी (मूल्य) हैं जो हम इन मापदंडों के लिए आपूर्ति करते हैं।

समानांतर निष्पादन के लिए, हम इसे इस तरह से सोच सकते हैं: कार्यक्रम (निर्देशों की सूची) को निष्पादित करने वाला हमेशा कोई (या कुछ ) होता है। यह या तो एक और इंसान है (क्या आप जानते हैं कि "कंप्यूटर" एक बार एक व्यक्ति के लिए एक नाम था जो गणना कर रहा था?), या एक मशीन। एक कार्यक्रम सिर्फ निर्देशों की एक सूची है, यह अपने आप काम नहीं करता है। कोई न कोई होना चाहिए जो कम्प्यूटेशनल प्रक्रिया को पूरा करेगा(इन कार्यों को सूची से निष्पादित करें)। और कभी-कभी ये क्रियाएं समानांतर में की जा सकती हैं - हम सूची की प्रतियां कई लोगों को वितरित कर सकते हैं और उनमें से प्रत्येक को सूची से कार्यों का एक अलग सेट करने देते हैं, जब तक वे एक दूसरे को बाधित नहीं करते हैं, या डॉन ' t किसी और के काम के परिणामों के लिए इंतजार करना होगा। यही कारण है कि है multithreading आप के लिए;)

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

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

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

एक विधि एक निश्चित अन्य तरीके से विशेष है: यह जानना है कि इसे किस विशेष वस्तु को संचालित किया जाना है / कहा जाना चाहिए ("यह" वस्तु)। इसलिए तरीकों को आमतौर पर एक अतिरिक्त छिपे हुए पैरामीटर से अलंकृत किया जाता है जो उस वस्तु के बारे में जानकारी संग्रहीत करता है जिस पर इसे ("यह" सूचक) कहा गया है। यह उस तरीके को जटिल करता है जिसे फ़ंक्शन को थोड़ा कहा जा रहा है, लेकिन यह एक "कार्यान्वयन विवरण" है जो एक प्रोग्रामर को बहुत परेशान नहीं करना चाहिए, जब तक कि वह जानता है कि वह क्या कर रहा है।

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