विगत यदि कथन अर्र करते हैं, तो लूप ... अब क्या?


9

मैंने एक साल पहले जब मैंने इस दीवार से टकराना शुरू किया था, तब मैंने प्रोग्रामिंग करना छोड़ दिया था। मैं इस विषय पर फिर से विचार कर रहा हूं क्योंकि मैं बुनियादी एंड्रॉइड एप्लिकेशन बनाना चाहता हूं। लेकिन मुझे लगता है कि मेरा सीमित ज्ञान पर्याप्त नहीं होगा।

यहाँ मेरी समस्या है।

मैंने कुछ पुस्तकों को पढ़ा है और C # / Java पर वीडियो ट्यूटोरियल देखे हैं, उदाहरणों का अनुसरण किया, फिर पुस्तक को समाप्त किया। अंत में वे हमेशा मुझे छोड़ते दिखते हैं कि आगे क्या करना है।

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

क्या मुझसे कोई चूक हो रही है? मुझे पता है कि ये सभी कार्यक्रमों के निर्माण खंड हैं लेकिन मैंने जो किताबें पढ़ी हैं वे वास्तव में मुझे कभी नहीं दिखाती हैं कि आगे क्या करना है।

मुझे लगता है कि आसान जवाब 'कोडिंग शुरू' होगा, लेकिन कहां? मैंने उदाहरण के लिए "हेड फर्स्ट जावा" पढ़ा; भाग तक वे आपको बता रहे थे कि आपने जो कुछ भी सीखा है उसे लें और एक कुत्ते रेसिंग गेम बनाएं ...।

"धोखा देने की कोशिश न करें और प्रदान किए गए स्रोत कोड को देखें, आपको अब तक ऐसा करने में सक्षम होना चाहिए" _ यह सटीक उद्धरण नहीं है, लेकिन मूल रूप से यही मुझे बताया गया था ......।

आधे घंटे पहले वे सिर्फ यह बता रहे थे कि ऐरे कैसे करें, फिर बिना किसी सिद्धांत के मैं काम करने वाला खेल बनाने के लिए हूं?

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

किसी भी सलाह के लिए धन्यवाद


"डॉग रेसिंग गेम" का मतलब बहुत सारी चीजें हो सकती हैं। शुरुआत के लिए, क्या इसमें कोई ग्राफिक्स भी शामिल है? जब तक आप जो बना रहे हैं उसमें कोई ग्राफिक्स शामिल नहीं है तो मुझे लगता है कि यह एक शुरुआत के लिए पूरी तरह से उपयुक्त है। शायद केवल छवियों के बारे में सोचने से बचने के लिए जल्लाद करें ...
23

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

जवाबों:


10

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

क्या मुझसे कोई चूक हो रही है? मुझे पता है कि ये सभी कार्यक्रमों के निर्माण खंड हैं लेकिन मैंने जो किताबें पढ़ी हैं वे वास्तव में मुझे कभी नहीं दिखाती हैं कि आगे क्या करना है।

दरअसल नहीं। वे नहीं कर रहे हैं सभी कार्यक्रमों के भवन खंड अमूर्त और पुन: उपयोग हैं। प्रोग्रामिंग भाषाओं के बहुत सारे भी नहीं है है सरणियों या ifs या छोरों।

कुछ बेहतरीन किताबें हैं जो आपको सिखाती हैं कि कैसे प्रोग्राम करना है, एक विशेष प्रोग्रामिंग भाषा के विपरीत कैसे काम करता है, जो उन किताबों से लगता है जो आप पढ़ रहे हैं।

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

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

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

ध्यान दें कि HtDP कोई प्रोग्रामिंग ज्ञान नहीं मानता है और हाई स्कूल के छात्रों पर लक्षित है। लेकिन ऐसा न करें कि आपको रोकें: इसका मतलब है कि आप शायद कुछ शुरुआती अध्याय तेजी से खत्म कर पाएंगे, लेकिन मुझे नहीं लगता कि आप ऊबेंगे।

इसी तरह की नसों के साथ कंक्रीट एब्स्ट्रक्शन भी एक अच्छा पढ़ा जाता है। HtDP की तरह, यह किसी भी प्रोग्रामिंग ज्ञान को ग्रहण नहीं करता है।

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

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


1
मैंने कभी भी किसी बयान या किसी प्रकार के बिना प्रोग्रामिंग भाषा के बारे में नहीं सुना है : यह उनके बिना पूरा नहीं होगा। ifloop
मोनिका को पुनः स्थापित करें - एम। श्रोडर

@ मार्टिन श्रोडर: loopबयानों के बिना प्रोग्रामिंग भाषाएं मौजूद हैं और वे ट्यूरिंग पूरा कर रहे हैं।
जियोर्जियो

@ जियोर्जियो: उदाहरण के लिए? AFAIK आपको किसी प्रकार के लूप / गोटो की आवश्यकता है।
मोनिका को पुनः स्थापित करें - एम। श्रोडर

2
@ MartinSchröder: लैंबडा कैलकुलस ट्यूरिंग-पूर्ण है (वास्तव में, यह वह भाषा है जिसके लिए उस शब्द का आविष्कार किया गया था), और इसमें केवल एब्सट्रैक्शन और फंक्शन एप्लीकेशन है। इसमें रिकर्सन भी नहीं है, आपको एक सांकेतिक शब्दों में बदलने वाले कॉम्बिनेटर का उपयोग करना होगा! फ़्लिपसाइड पर: बहुत सारी प्रोग्रामिंग भाषाएं हैं जो ट्यूरिंग-पूर्ण नहीं हैं, जैसे एसक्यूएल (2003 से पहले), या अधिक सूक्ष्मता से, सी (ट्यूरिंग-पूर्णता के लिए अनंत भंडारण की आवश्यकता होती है, लेकिन सी गारंटी देता है कि आप किसी भी चीज़ का पता ले सकते हैं इसे एक छोटे आकार के चर में स्टोर करें)।
Jörg W Mittag

2
@ MartinSchröder: या, एक और सौदा: प्रोग्रामिंग भाषाएं हैं जहां केवल कार्यक्रम को संकलित करने से कंपाइलर को मुश्किल समस्याओं को हल करने के लिए मजबूर किया जा सकता है। C # में आप 3-SAT समस्याओं को ओवरलोड रिज़ॉल्यूशन समस्याओं के रूप में एन्कोड कर सकते हैं और कंपाइलर को हल कर सकते हैं, और हास्केल में आप वास्तव में हॉल्टिंग प्रॉब्लम के समान समस्याओं को टाइप सिस्टम में एनकोड कर सकते हैं और कंपाइलर को हल कर सकते हैं। आपको लगता है कि "प्रोग्रामिंग भाषाओं" को अनिवार्य भाषा माना जा सकता है लेकिन कई गैर-अनिवार्य भाषाएं हैं जो जटिल गणनाओं का प्रतिनिधित्व कर सकती हैं।
एरिक लिपर्ट

5

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

  1. पुस्तक से सीखते समय, कुछ वास्तविक जीवन परिदृश्यों को खोजने की कोशिश करें जहां पुस्तक में कुछ कोड उदाहरण / तकनीक लागू की जा सकती है।
  2. पुस्तक में दिए गए उदाहरण कार्यक्रमों को कुछ ऐसा बनाने की कोशिश करें जो बड़ा और जटिल हो। उसके बाद कोड को छोटा करने का प्रयास करें और एक अलग कोड लिखें जो समान परिणाम देता है।
  3. विचाराधीन भाषा के लिए व्यावहारिक परियोजनाओं के लिए Google।
  4. यह सुनिश्चित करने के बाद कि आपने मूल भाषा तत्व सीख लिया है, अपनी पसंद के ढांचे के साथ प्रयोग करें। पहली बार, कुछ ऐसा चुना जो सीखने में आसान हो।
  5. कुछ मौजूदा प्रोजेक्ट के लिए देखें और इसके डिजाइन का अध्ययन करने का प्रयास करें।
  6. उन्नत पुस्तकों के लिए जाएं जो आपको अधिक अग्रिम एप्लिकेशन डिज़ाइन सामान सिखाती हैं जैसे कि आवेदन पैटर्न, OO डिज़ाइन और कार्यान्वयन आदि।

अंत में इसके सभी अभ्यास और अनुसंधान जो आपकी प्रोग्रामिंग कौशल को बढ़ाने में आपकी मदद करेंगे और अंततः आपको कई गगनचुंबी इमारतों का वास्तुकार बना देंगे।


2

इसे C # के लिए देखें। यह बहुत पूरा हो गया है: http://www.programmersheaven.com/ebooks/csharp_ebook.pdf मैंने उसे खुद इस्तेमाल किया है, सिर्फ आधा साल पहले। मैं उदाहरण के लिए इसके साथ #Develop संकलक का उपयोग करता हूं। मैं जावा के साथ आपकी बहुत मदद नहीं कर सकता क्योंकि मैंने शायद ही कभी इसका इस्तेमाल किया था।

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

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


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

1

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

कोई भी किताब आपको समस्याओं को हल करने का तरीका सिखाने वाली नहीं है।

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

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


1
"कोई पुस्तक यह नहीं बता रही है कि कार्यक्रमों को कैसे डिज़ाइन किया जाए" - हाउ टू डिज़ाइन प्रोग्राम्स के लेखक असहमत हो सकते हैं :-)
Jörg W Mittag

1
@ JörgWMittag: उनके पास कुछ सामान्य तकनीकें और विशिष्ट कार्यक्रमों का प्रदर्शन होगा, लेकिन कुछ भी गैर तुच्छ लोगों को बड़ी संख्या में सीखे जाने वाले मानवीय निर्णय की आवश्यकता होती है, जो कि 2013 के अनुसार अभी भी यंत्रीकृत नहीं किया जा सकता है।
whatsisname

1

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

सौभाग्य से पुस्तक में कुछ उदाहरण थे जिन्हें मैं टाइप करता था (हाँ, कोई डाउनलोड करने योग्य सोर्सकोड उदाहरण नहीं है) और फिर यह पता लगाने की कोशिश की कि यह कैसे काम करता है। यह प्रोग्रामिंग सीखने का इष्टतम तरीका नहीं है, लेकिन मेरे लिए उस समय मजेदार था।

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

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

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


1

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

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


+1। मैं ऐसे लोगों को जानता हूं जो एक भी बात किए बिना सम्मेलनों में जाते हैं। वे बस हॉल में बाहर घूमने के लिए जाते हैं और कुल अजनबियों के साथ समस्याओं पर चर्चा करते हैं, बस एक अलग दृष्टिकोण प्राप्त करने के लिए।
जोर्ग डब्ल्यू मित्तग

0

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

मैं वकालत नहीं कर रहा हूँ कि आप किसी व्यक्ति को ओपन सोर्स प्रोजेक्ट में परिवर्तित करें और उसे अपने होने का दावा करें।

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


-5

वह कोडर्स लाइफ है। आप एक तकनीक नहीं जानते हैं, लेकिन आप एक 'हैलो वर्ल्ड' विकसित करते हैं और आप एक विशेषज्ञ बन जाते हैं। कंपनियों (वास्तविक जीवन) में यह काम करता है। शुभ लाभ


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