मानविकी प्रोग्रामिंग कैसे सिखाना है

सभी को बधाई!

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

छवि

मेरा अनुभव, जिसके आधार पर मैंने वर्णित निष्कर्ष निकाला, लगभग 6 साल के कुल काम से पैदा हुए लोगों के साथ जो चाहते थे या सोचते थे कि वे प्रोग्रामिंग सीखना चाहते हैं। इस प्रक्रिया में, छात्रों और 16 से 26 वर्ष की आयु के छात्रों के साथ समूह और व्यक्तिगत कक्षाएं आयोजित की गईं, समूहों का आकार औसतन 11 लोगों के बारे में था, समानांतर में कई समूह।

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

यह ध्यान देने योग्य है कि मैं कार्य के समाधान को "मानवता से बाहर एक प्रोग्रामर बनाने के लिए" 3 बड़े प्रश्नों में विभाजित करता हूं।
1. प्रेरणा का सवाल, या "मुझे इसकी आवश्यकता क्यों है?"
2. प्रशिक्षण की विधि का प्रश्न, या "मैं कंप्यूटर को कैसे समझूं?"
3. एक प्रविष्टि बिंदु खोजने का सवाल, या "जब मुझे एक विशिष्ट कार्य का सामना करना पड़ा तो कहां से शुरू करें?"

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

मुझे तुरंत यह कहना चाहिए कि मैं किसी भी तरह से अंतिम या कठिन उदाहरण, या व्यापक, सामान्यीकृत दृष्टिकोण में सच्चाई का ढोंग नहीं कर सकता: मैं बताऊंगा कि मैं मानवतावादी, मुख्य रूप से एक दार्शनिक को पढ़ाने के लिए सबसे प्रभावी तरीके का एक खाता हूं, कैसे प्रोग्राम करूं। अलग-अलग लोगों के अपने मतभेद हैं, लेख केवल उन मुख्य लोगों को सूचीबद्ध करेगा जो मानविकी के अधिकांश छात्रों की विशेषता है जो मैंने सामना किया है।

प्रेरणा का मुद्दा


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

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

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

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

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

व्यावहारिक अनुप्रयोग पर अभिविन्यास के माध्यम से प्रेरित करने का कोई भी प्रयास - इसलिए बोलने के लिए, कम से कम कुछ सामग्री जो उनकी गतिविधि का प्रत्यक्ष उत्पाद होगा - भी विफल हो जाएगी। इस प्रत्यक्ष व्यावहारिक अनुप्रयोग ने मुफ्त में नहीं दिया ...

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

सीखने का प्रश्न तरीका


तो, मानविकी को इकट्ठा किया जाता है, प्रशिक्षण के लिए तैयार होता है और ज्ञान के लिए तरसता है। कहाँ से शुरू करें?

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

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

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

तो, यह है कि यह कैसे काम करता है - ज़ाहिर है, तकनीकी के साथ - और केवल मानविकी के तीसरे भाग के साथ सबसे अच्छे मामले में।

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

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

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

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

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

समस्या संख्या 2: एक सटीक एल्गोरिथ्म या भगवान की मनाही, फ्लोचार्ट्स को चित्रित किए बिना वैचारिक स्तर पर इस समस्या को हल करने का प्रस्ताव है। यह "कैबिनेट को देखने" के चरण तक पहुंचने के लिए पर्याप्त है, एक पंक्ति में पुस्तकों के माध्यम से छंटनी। जब भी हमें इस लेखक की कोई पुस्तक मिलती है, हम अपनी उंगली मोड़ लेते हैं। फिर तुरन्त (हम अभी भी वयस्कों के बारे में बात कर रहे हैं), विचार आता है कि आप किसी भी बड़ी संख्या में पुस्तकों को ध्यान में रखने के लिए अपनी उंगली को झुकने के बजाय कागज के एक टुकड़े पर एक छड़ी खींच सकते हैं।
टास्क नंबर 3: एक समस्या का समाधान प्रस्तुत करने के लिए जिसे पहले ही एक वैचारिक स्तर पर खोजा जा चुका है, पर ... एल्गोरिथ्म नहीं। फ्लो चार्ट नहीं। तुरंत उस भाषा में जिसमें कोई व्यक्ति प्रोग्राम करना सीखता है।

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

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

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

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

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

स्टैकिंग शंकु, निश्चित रूप से, कार्यक्रम में त्रुटियों के कारण होता है।एक घात यहाँ इंतजार कर रहा है: आपको संकलक / दुभाषिया की भाषा में पढ़ने के लिए नौसिखिए प्रोग्रामर को प्रशिक्षित करना होगा (बाद में बस एक संकलक, क्योंकि अभ्यास से पता चलता है कि दुभाषिया मानविकी को कई कारणों से विचारशील बनाता है, जिनमें से एक यह है कि "अगर वह सब कुछ कदम से कदम मिलाकर करता है, तो हमें क्यों करना चाहिए?" और जब हम आवश्यक कदमों को स्वयं पूरा कर सकते हैं, तो एक कार्यक्रम लिखें। "इसके अलावा, कंपाइलर्स के साथ भाषाओं में त्रुटियों की तलाश करना आसान है: यह मानवता के लिए गलत प्रकार के मूल्य को एक चर में डालने के लिए नहीं होगा, उदाहरण के लिए; वे जिज्ञासा रखते हैं। t एक पूरी तरह से अलग प्रकृति)। संकलक, एक नियम के रूप में, सच का प्रदर्शन करने में बहुत अनुकूल नहीं हैकार्यक्रम में त्रुटियाँ, अधिक बार ये "अप्रत्याशित अल्पविराम" की भावना में त्रुटियां हैं। ऐसे मामलों में, यह सीखने वाले को पहले से लिखे गए कोड की समान संरचना के उदाहरणों को देखने और काम करने में मदद करता है। यह महत्वपूर्ण है कि कोड हमेशा एक ही शैली में लिखा जाए। मैं इसके साथ मानवता की समस्याओं के साथ नहीं मिला हूं। निश्चित रूप से।इस शैली में लिखने के लिए कहा जाता है - वे इस में लिखेंगे। फिर वे इसे सही करेंगे, अगर यह किसी तरह उनके लिए अधिक सुविधाजनक है।

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

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

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

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

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

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

प्रवेश बिंदु खोज प्रश्न


यह प्रशिक्षण की शुरुआत में सबसे कठिन मुद्दों में से एक है।

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

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

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

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

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

लेख की सामग्री संक्षेप में


और परिणामस्वरूप, मुझे "संकेत" की एक छोटी सूची मिली है जो मैं पहुंच चुका हूं। अचानक यह किसी के काम आएगा अगर आपको तुरंत तैयारी करने की आवश्यकता है।


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

पुनश्च अगर किसी और ने इस अनुशासन का अध्ययन करने के लिए मानविकी को अच्छी तरह से प्रेरित करने के तरीके ढूंढे हैं - तो मुझे सुनकर खुशी होगी।

Source: https://habr.com/ru/post/In209284/


All Articles