मैं अभी भी यह पता नहीं लगा सकता कि कैसे प्रोग्राम करें?


122

मैंने विभिन्न प्रोग्रामिंग भाषाओं, जावा, पायथन, सी, आदि के लिए बहुत सारी किताबें पढ़ी हैं। मैं सभी भाषाओं की मूल बातें समझता हूं और जानता हूं और मैं एल्गोरिदम और डेटा संरचनाओं को समझता हूं। (कंप्यूटर विज्ञान की कक्षाओं के दो साल के समतुल्य)

लेकिन, मैं अभी भी समझ नहीं पा रहा हूं कि एक प्रोग्राम कैसे लिखा जाए जो कुछ भी उपयोगी हो।

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

मैंने SourceForge पर ओपन-सोर्स कार्यक्रमों को देखा है , लेकिन वे मेरे लिए बहुत मायने नहीं रखते हैं। प्रत्येक प्रोग्राम में सैकड़ों फाइलें और कोड की हजारों लाइनें होती हैं। लेकिन मैं यह कैसे सीखूं? अमेज़न पर खरीद सकने वाली किसी भी किताब में ऐसा कुछ भी नहीं है जो मुझे इनमें से कोई भी प्रोग्राम लिखने के लिए टूल दे।

जावा या प्रोग्रामिंग पायथन, या सी प्रोग्रामिंग लैंग्वेज, आदि का परिचय पढ़ने से आप कैसे जा सकते हैं .. वास्तव में कहने में सक्षम होने के कारण, मेरे पास एक्स प्रोग्राम के लिए एक विचार है? क्या यह है कि मैं इसे कैसे विकसित करूं?

ऐसा लगता है कि एक कार्यक्रम लिखने में इतना अधिक शामिल है जितना आप एक किताब में या कक्षा से सीख सकते हैं। मुझे ऐसा लग रहा है कि कुछ है।

मुझे सही रास्ते पर कैसे रखा जा सकता है?


52
कुछ लोगों को बस कार्यक्रम के लिए नहीं हैं। केवल आप ही यह उत्तर दे सकते हैं कि क्या कोई वैकल्पिक मार्ग आपको छांटेगा या यदि कुछ और करने की कोशिश करने का समय है। आपको ऐसा उत्तर मिलने की संभावना नहीं है जो यहां उपयोगी होगा।
duffymo

3
क्या आप "उपयोगी" माना जाएगा?

7
@ मिकेल - I, एक के लिए, ऑफ-टॉपिक के रूप में मतदान किया, पी.एस.ई. मैंने सोचा कि प्रोग्रामिंग पर एक कैरियर और एक शिल्प के रूप में चर्चा के लिए अधिक उपयुक्त स्थान होगा।

12
@duffymo: और कुछ लोग प्रश्नों पर टिप्पणी करने के लिए नहीं हैं।
davidk01

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

जवाबों:


93

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

आपको यह पेज दिलचस्प लग सकता है "टेन योरसेल्फ प्रोग्रामिंग इन टेन इयर्स" http://norvig.com/21-days.html

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


13
+1 बिल ने क्या कहा और चर्चा के लिए "लेखक के ब्लॉक।"
डेविड वेसर

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

5
कहानी लिखने की सादृश्य के लिए +1। मेरे कार्यक्रम अभी भी एक बार "एक बार ..." मंच पर हैं।
एंडी

4
प्रोग्रामिंग के बारे में सबसे डरावनी चीजों में से एक एक खाली दस्तावेज़ है। एक बार जब आप उस बाधा को पार कर लेते हैं, तो आपने अच्छी प्रगति की है।
गैबलिन

1
लेखक के ब्लॉक। आप इसे वहाँ nailed!
हाबिल

70

मैं हमेशा बहुत बड़ी परियोजनाओं से अभिभूत था, जैसे कि आप SourceForge या GitHub पर पाते हैं। मैं सोचता था कि कोई भी, या यहां तक ​​कि एक टीम कैसे समझ सकती है कि 10 या 100 की फाइलों में क्या हो रहा है, हजारों और हजारों लाइनों के साथ।

कोई नहीं करता। कम से कम शुरू में।

प्रोजेक्ट ऑर्गेनिक चीजें हैं। क्या वास्तव में सरल विचार के रूप में शुरू होता है, जल्दी से एक बड़े पैमाने पर काम में विस्तार कर सकता है। यह है, मुझे लगता है, क्लासिक झरना दृष्टिकोण के बजाय पुनरावृत्ति विकास का मुख्य कारण है।

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

उदाहरण:

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

फिर आप उस थ्रेडिंग के कारण समसामयिक मुद्दों में भागते हैं। तो आप समवर्ती डेटा संरचनाओं में बदलकर ठीक करते हैं।

अब यह प्रक्रिया धीमी हो गई है। इसलिए आप समवर्ती डेटा संरचनाओं को नियमित रूप से बदलते हैं, लेकिन सिंक्रनाइज़ेशन के लिए लॉकिंग तंत्र प्रदान करते हैं।

ऐसा लगता है कि सब कुछ ठीक चल रहा है, सिवाय इसके कि उपयोगकर्ता शिकायत करना शुरू कर दें कि ऑपरेशन परमाणु नहीं हैं, और डेटा दूषित हो रहा है।

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

इसलिए आप एक या दो हफ्ते उस इमारत में बिताते हैं, जिसमें लगभग एक समय होता है। इस समय, एक दोस्त आपकी मदद करने का फैसला करता है। आप इस पर एक साथ काम करते हैं, पूरा करते हैं और इसे जारी करते हैं।

दो टिकट खुले। सूची प्रसंस्करण में एक बग है, और कुछ दुर्लभ मामले हैं जो गतिरोध हैं।

आपका मित्र सूची प्रसंस्करण बग पर काम करता है, जबकि आप गतिरोध से निपटते हैं। आपको पता चलता है कि परमाणु परिचालनों के लिए एक महत्वपूर्ण पुन: लिखने की आवश्यकता है।

... और इस तरह से।

यह एक परियोजना कैसे बढ़ती है यह काफी विशिष्ट लगता है। 10 या तो फाइलें कुछ हफ़्ते में 20 हो गई हैं। नई सुविधाएँ जोड़ी गई हैं जो मूल योजना से अलग नहीं थीं। उल्टे बग फिक्स को जोड़ा जाता है जो कोड को अस्वाभाविक रूप से बड़ा करते हैं।

मेरी सलाह:

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


हाँ, यह लगभग वैसा ही है जैसा व्यक्तिगत अनुभव से आया है ...
NickAldwin

@ नहीं, क्या हम सभी को प्रोजेक्ट "X" के साथ "Y" और "Z" जैसी विशेषताओं के साथ समान अनुभव नहीं था? मेरे पास पिछले वर्ष के भीतर दो समान परियोजनाएं हैं। उनमें से न तो रेडिस = पी
जोश स्मेटन

यह लगभग हर कार्यक्रम का वर्णन करता है जो मैंने लिखा है।
टिम पोस्ट

तो यह जाता है। कर्ट वोनगुट कंप्यूटर प्रोग्रामिंग से मिलते हैं
ज़ूट

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

28

यहां तक ​​कि सबसे बड़ा कार्यक्रम एक विचार से शुरू होता है और एक समय में एक पंक्ति लिखा जाता है।

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

हालांकि, कुछ चीजें हैं जो आपको शुरू से ही सही होने के बारे में पता होना चाहिए:

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

6
"वास्तविक दुनिया के कार्यक्रमों को लिखने का तरीका सीखने का सबसे अच्छा (शायद एकमात्र) तरीका यह करना शुरू करना है।" कमोबेश मैं जो कहने जा रहा हूं। आप केवल पढ़ सकते हैं और "मूल बातें समझ सकते हैं" इतना ... रबर को कहीं न कहीं सड़क पर मारना पड़ता है।
वर्नरसीडी

1
+1 लाइन के लिए "इसे करना शुरू करें।" आप एक पुस्तक से अनुभव नहीं सीख सकते।
rivalk

"क्लीन कोड" पुस्तक का उल्लेख करने के लिए +1। आपको हमेशा अपना कोड पठनीय बनाना चाहिए। पढ़ने में आसान == समझने में आसान == संशोधित करने में आसान
इगोर पोपोव

15

आप जिस बारे में बात कर रहे हैं, वह प्रोग्रामिंग से अधिक सॉफ्टवेयर इंजीनियरिंग है। यह थोड़ा सा आर्किटेक्चर है, थोड़ा सा "बेस्ट प्रैक्टिस" और "डिजाइन पैटर्न", दूसरों के साथ थोड़ा सा काम करना। जबकि ऐसी किताबें हैं जो मदद कर सकती हैं, ज्यादातर यह अनुभव से आती है। Microsoft Word, कोई भी लिखना शुरू नहीं करता है ।

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

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

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

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

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

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

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

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

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


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

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

+1 छोटी चीजों के बारे में सोचने से शुरू करने के लिए , और फिर उसी चीजों में और बड़ी चीजों के बारे में सोचने के लिए आगे बढ़ना ।
गाब्लिन डेस

1
GMail के साथ प्रतिस्पर्धा में क्या नुकसान है? यदि आपके द्वारा लिखी गई कुछ चीजें वास्तव में Google द्वारा जारी की गई किसी चीज़ से प्रतिस्पर्धा कर सकती हैं, तो आप अपने आप को एक बहुत अच्छा प्रोग्रामर मान सकते हैं।
गैबलिन

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

9

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

जमीनी स्तर। यह सब अभ्यास के बारे में है। बस खुदाई और कोड, कोड, कोड रखें।


7

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

सामान्य नियम यह है कि पर्याप्त सामग्री लिखने के बाद, किसी प्रकार का ज्ञान अपरिहार्य रूप से हो जाएगा।

शुरू करने के लिए एक अच्छा बिंदु (यदि आप सी की तरह महसूस करते हैं) http://gamedev.net/ है , विशेष रूप से http://nehe.gamedev.net/ । शुरू करने के लिए कई अन्य अच्छे बिंदु भी हैं: डी


4
(ओह और मुझे एहसास हुआ कि हर कोई खेल के साथ क्यों शुरू होता है। चमकदार और सुंदर चीजें प्रेरित कर रही हैं।)

10
सब लोग ? बोल्ड दावा।

4
मैंने एक खेल से शुरुआत नहीं की। मुझे लगता है कि जटिल से परे = पी
जोश स्मेटन

4
ज्यादातर लोग इन दिनों एक वेबएप के साथ शुरू करते हैं, प्रवेश के लिए बहुत कम बाधा (यह सिर्फ पाठ है)।
स्लीपबेटमैन

4
आपकी पहली टिप्पणी शायद आपके उत्तर से बेहतर थी - चमकदार और सुंदर चीजें प्रेरित कर रही हैं । कि क्या मायने रखती है।
स्कॉर्चियो

6

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

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


6

ड्राइविंग या खाना पकाने की तरह, प्रोग्रामिंग कुछ ऐसा है जिसे आप करना सीखते हैं। अभ्यास अपूरणीय है।

यदि पाठ्यपुस्तक के उदाहरण आपके लिए पहले से ही बुनियादी हैं, तो यह बहुत अच्छा है! कुछ और जटिल के लिए आगे बढ़ने का समय - और आप पहले से ही अपने लिए कुछ चुनौतीपूर्ण अभ्यासों का पता लगा सकते हैं।

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


5

200 लाइन की स्क्रिप्ट लिखें। फिर इसे सुधारना शुरू करें।

किसी भी समय में 100 स्रोत फ़ाइलों और कई सौ KLOC के लिए बाहर कर दिया जाएगा:


5

"वे आपको नहीं दिखाते हैं कि जटिल कार्यक्रमों को कैसे विकसित किया जाए जो वास्तव में कुछ भी उपयोगी हो!"

"उपयोगी" की परिभाषा के बिना वास्तव में बहुत कुछ नहीं है हम आपको "सही" ट्रैक पर लाने के लिए कर सकते हैं।

हम नहीं जानते कि आप कैसे असफल हो रहे हैं, या क्या गलत हो रहा है। हम नहीं बता सकते कि आप किस ट्रैक पर हैं।

किसी तरह, आपके सिर में एक धारणा है कि आप संवाद नहीं कर रहे हैं।

सॉफ्टवेयर - प्रोग्रामिंग - यह सब आपके सिर से कुछ भाषा (पायथन, जावा, अंग्रेजी, जो भी हो) में एक धारणा बनने के बारे में है।

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


वोट दिया, मैं वास्तव में इस विषय में ओपी के जवाब में दिलचस्पी रखता हूं।
23

5

मुझे यह सवाल हर समय मिलता है, जैसे कि कैसे शुरुआत करें। यह वास्तव में सरल है। यहाँ एक कदम से कदम है।

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

वर्कफ़्लो के लिए +1 - यह किसी तरह काम करना चाहिए। मैं नहीं बता सकता कि दूसरा कदम कितना महत्वपूर्ण है। हो सकता है कि वह कदम है जो तय करेगा कि आप कार्य को संभाल सकते हैं या नहीं।
स्कॉर्चियो

"लगता है कि आपके पास पहले से ही ऐसा है।" मैं उस पर विवाद करूंगा। यदि कोई विचार था, तो यह प्रश्न का हिस्सा होगा।
३.३४

दरअसल, imho, आपको ऐप के लिए तर्क लिखकर शुरू करना चाहिए, फिर उसमें यूआई जोड़ें। यह सरल है।
कैफ़ीक

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

1
@ क्या मैं आपसे असहमत हूं। नोब्स के लिए, तर्क सार है, लेकिन यूआई को समझना आसान है। रिवर्स अनुभव के साथ आता है।
एंग्रीहैकर

4

कुछ छोटा सामान बनाएँ। बुरा मत मानना, कि आपका कार्यक्रम 1000 वाँ होगा।

कुछ विचार:

  • एक घड़ी (पहले डिजिटल, फिर एनालॉग-लुक),
  • स्वचालित लेबिरिंथ निर्माता,
  • निर्देशिका संरचना प्रदर्शक,
  • एमपी 3 एल्बम लिस्टर,
  • आदि।

प्लेटफ़ॉर्म चुनना, उपकरण कार्य का हिस्सा हैं।


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

@ जोश, एमपी डिकोडिंग एक शुरुआत प्रोग्रामर के लिए सही पाने के लिए गैर-तुच्छ है।

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

@Josh, मुझे अभी भी नहीं लगता कि एक एमपी डिकोडर छोटा सामान है और इस उद्देश्य के लिए उपयुक्त है।

3

ठीक है, चलो प्रोग्राम एक्स के लिए अपने विचार के साथ शुरू करते हैं जो कुछ उपयोगी है और चलो इसे तोड़ देते हैं:

  • प्रोग्राम के लॉजिकल फ्लो / फ्लो (ओं) को लेआउट करने के लिए पेपर, माइंड-मैपिंग या डायग्रामिंग सॉफ्टवेयर का उपयोग करें।

  • चूंकि आप केवल उन वस्तुओं में से एक को चुनना शुरू कर रहे हैं (अधिमानतः शुरुआत के पास) और इसे आगे भी तोड़ दें।

  • इसके लिए अपना कोड लिखें और इसे बनाने के लिए उपयोग करें

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

जैसा कि कहा जाता है - सूक्ति एक दिन में नहीं बनाया गया था :-)


3

(पहले ही टिप्पणियों में ऊपर जवाब दिया गया था। प्रश्न को फिर से खोलने के बाद इसे उत्तर के रूप में प्रस्तुत करने का सुझाव दिया गया था।)

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

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

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


3

जब आप एक शुरुआत कर रहे हैं, तो सबसे कठिन चीजों में से एक यथार्थवादी लक्ष्य निर्धारित कर रहा है कि "मैं कैसे सुधार कर सकता हूं" -सेक्स को आपके वर्तमान स्तर पर होना चाहिए।

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

मेरा सुझाव है कि आप http://projecteuler.net/ पर बहुत करीब से नज़र रखेंगे, जिसमें बहुत सारे व्यायाम और एक स्वचालित "चेक उत्तर" प्रणाली है, जिससे आप अपनी गति से काम कर सकते हैं। अभ्यास अच्छी तरह से शब्दबद्ध हैं, लेकिन आपको सोचने की आवश्यकता हो सकती है। कुछ को आपको बहुत सोचने की भी आवश्यकता हो सकती है, लेकिन यहां तक ​​कि उन को हल करने में विफल होने पर, आपको कुछ उपयोगी सिखाएगा।

समस्या 1 का पूरा शब्द है:

यदि हम 10 से नीचे की सभी प्राकृतिक संख्याओं को सूचीबद्ध करते हैं जो 3 या 5 के गुणक हैं, तो हमें 3, 5, 6 और 9 मिलते हैं। इन गुणकों का योग 23 है।

1000 के नीचे 3 या 5 के सभी गुणकों का योग ज्ञात कीजिए।

क्या आपको लगता है कि आप इसे हल कर सकते हैं? तो यह करो!


3

आपको वास्तविक दुनिया के अनुभव की आवश्यकता है !! । कोई किताब आपको यह नहीं सिखा सकती है कि!

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

आपको यह समझना होगा कि किताबें बहुत विशिष्ट हैं और कुछ लोगों के लिए जो पहले से ही जानते हैं कि सॉफ्टवेयर कैसे विकसित किया जाए।

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

अपनी पुस्तकों को पढ़ते रहें, आपको पता चलेगा, हर साल आप एक ही विषय को थोड़ा और अधिक (या अलग तरह से) समझते हैं, क्योंकि आप इसे अनुभव के गिलास से देख सकते हैं।

यदि आप प्रतिभाशाली डेवलपर्स के साथ नौकरी पाने का प्रबंधन करते हैं, तो बेहतर है। उनसे सीखें, गलती करने से न डरें।

जब तक आपको अपने पहले लाइव-प्रोडक्शन तत्काल बग को ठीक नहीं करना है, आपको पता नहीं चलेगा कि सॉफ्टवेयर बग क्या है!

:)


2

ओपन सोर्स प्रोजेक्ट आज़माएं, देखें कि क्या आप इसमें फिट हो सकते हैं। स्रोत डाउनलोड करके प्रारंभ करें, और देखें कि क्या आप कुछ टिकट ले सकते हैं


15
नौसिखिए प्रोग्रामर को एक ओपन सोर्स प्रोजेक्ट में शामिल होने की कोशिश नहीं करनी चाहिए; आप बस रास्ते में मिल जाएगा । ओपन सोर्स प्रोजेक्ट्स ट्यूटर शुरुआती के लिए नहीं हैं।

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

3
@ जेलीफ़िशट्री, अगर आप प्रोग्राम नहीं कर सकते जो थोड़ा अधिक हो सकता है।

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

@ जेलीफ़िश, निश्चित, और मुझे यकीन है कि यह एक अच्छा कदम है, लेकिन अभी तक इस मामले में नहीं है।

2

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

यह बहुत उपयोगी नहीं है, लेकिन आप बहुत कुछ सीखते हैं और यह देखने में सुंदर है।


मुझे यह पसंद है - एक नई भाषा सीखने के लिए काफी काव्यात्मक तरीका। लेकिन मुझे नहीं पता कि क्या हमें इसकी शुरुआत के लिए सिफारिश करनी चाहिए: D
Scorchio

2

प्रोग्रामिंग समस्या समाधान और संचार के बारे में है, बहुत सारे कोड नहीं लिख रहा है। कोड केवल एक आवश्यकता है, आपको आमतौर पर कम कोड लिखने की कोशिश करनी चाहिए, अधिक नहीं।

यदि आप नहीं जानते कि कहाँ से शुरू करें, तो शायद आपको कोई समस्या न हो!

लिनक्स और अन्य यूनिक्स जैसी प्रणालियों को देखें: वे सभी कई छोटे अनुप्रयोगों से मिलकर होते हैं जो केवल एक ही काम करते हैं, लेकिन यह अच्छी तरह से करते हैं

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

कोड की हजारों लाइनों वाले कार्यक्रम आमतौर पर एक से अधिक प्रोग्रामर द्वारा लिखे जाते हैं। आप पूरे ऑपरेटिंग सिस्टम को अकेले नहीं लिख पाएंगे और आपको इसकी आवश्यकता नहीं है। वे अक्सर संस्करण नियंत्रण और इकाई परीक्षण जैसे धोखा देती हैं ।


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

@ सोरशियो मेरा सिर्फ यह मतलब था कि संस्करण नियंत्रण और इकाई परीक्षण का उपयोग आपको ऐसे लोगों पर लाभ दे रहा है जो उनका उपयोग नहीं करते हैं (पर्याप्त)। खासकर जब बड़ी परियोजनाओं के साथ काम कर रहे हों।
कोलबोस

2

विभाजन और जीत।

यह उतना ही सरल या कठिन है।


2

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

काफी स्वाभाविक रूप से, मेरा पहला खेल एक पाठ साहसिक था। इसी तरह, आप एक प्रश्नोत्तरी या कुछ, या अनुमान लगाने वाले खेलों के साथ शुरू कर सकते हैं।

इसके अलावा, आप कुछ के साथ शुरू कर सकते हैं, एक स्लॉट मशीन की तरह (आपको वास्तव में एनिमेशन या चित्रों की आवश्यकता नहीं है। बस ए = सेब, एल = नींबू, एस = स्टार्ट, पी = प्लम आदि) का उपयोग करें।

यह आपको कुछ उपयोगकर्ता इनपुट को संभालने, गेम की स्थिति को बनाए रखने और तदनुसार आउटपुट उत्पन्न करने की मूल बातें सिखाएगा।

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

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

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

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


2

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

मैं निम्नलिखित में से एक या अधिक सुझाव देना चाहूंगा:

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

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

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

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

अंत में, आप जो कुछ भी करते हैं, आपको संभवतः एक बुनियादी एमवीसी (मॉडल, व्यू, कंट्रोलर) डिजाइन पैटर्न का उपयोग करना चाहिए। बहुत विस्तार में जाने के बिना, अपने दृश्य (UI) को 1+ कक्षाओं में, अपने नियंत्रक (इनपुट, आउटपुट, आदि) को 1+ कक्षाओं में, और अपने मॉडल (तर्क, डेटा, मूल रूप से सब कुछ) को कई वर्गों में डालें। यह मूल संगठन पाने का एक आसान तरीका है।

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


2

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

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

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

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

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


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

1

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


1

तो जवाब के एक टन रहे हैं तो मुझे माफ कर दो अगर मैं पहले से ही कहा गया है के बहुत दोहराने, लेकिन यहाँ मेरे 2 सेंट है।

पहले एक विचार उठाओ। कोई भी विचार ठीक होगा, कुछ सरल तो शायद बेहतर होगा। परियोजनाओं में उनके दायरे में बहुत तेज़ी से बढ़ने की प्रवृत्ति होती है (कुछ इसे फीचर क्रीप कहते हैं)।

अगला परियोजना के लिए एक कंकाल बनाओ। इसके लिए थोड़े से आर्किटेक्चर और डिज़ाइन के ज्ञान की आवश्यकता होगी और आप शायद इसे पहले दस बार आजमाएँगे - यह मैंने किया। बस एक सभ्य फ़ाइल संरचना और शायद कोड का एक छोटा कंकाल बिछाना जो सिस्टम के महत्वपूर्ण भागों को दर्शाता है।

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

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

अपने सिस्टम का निर्माण करें। यह स्वचालित निर्माण प्रणाली और निरंतर एकीकरण प्राप्त करने का एक अच्छा समय होगा। यदि आप नहीं जानते कि वे क्या हैं तो इसे सीखें और कोशिश करें, या बस अपने जोखिम पर जारी रखें; किसी भी तरह से काम करते रहो।

अब दूसरी सुविधा चुनें और दोहराएं और दोहराएं।

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

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

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


1

जो कुछ मदद कर सकता है वह एक साधारण समस्या के बारे में सोचें जो आपके लिए दिन है जहां कुछ आप पेंसिल और कागज द्वारा कर सकते हैं एक कार्यक्रम द्वारा प्रतिस्थापित किया जा सकता है।

यह आपको एक ज्ञात समाधान के साथ एक अपेक्षाकृत सरल समस्या देता है जिसे बस स्वचालन के स्तर की आवश्यकता होती है। ध्यान रखें कि यह अगले एमएस वर्ड / वर्डपैड / नोटपैड की आवश्यकता नहीं है; बस कुछ है जो आपकी (सरल) समस्या को हल करता है।

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


1

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


1

मुझे लगता है कि आपकी समस्या आती है: 1. सिद्धांत और व्यवहार के बीच का अंतर है, और यह भी कि ... 2. ... आपको महसूस करना होगा कि आपका कोड अन्य कोड द्वारा चलाया जाएगा। 3. यदि आप इस बारे में कुछ नहीं जानते हैं कि आप क्या कर सकते हैं, इसके बारे में आपको कोई जानकारी नहीं है। 4. आप आधी मुश्किल जानते हैं

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

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

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

  4. वास्तव में सिद्धांत का अभ्यास करना आवश्यक है, लेकिन यह सब नहीं है: एल्गोरिदम और टेकनीक प्रोग्रामिंग के सिद्धांत का हिस्सा नहीं हैं, आपके कोड को करने के लिए बहुत सारे प्रतिमान और अन्य "मानक" तरीके हैं: डिज़ाइन पैटर्न, लिंक की गई सूचियाँ, आदि आदि।


1

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

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

एक शब्द में, यदि आप एक त्वरित तरीके से प्रोग्रामिंग शुरू करना चाहते हैं, तो एक स्क्रिप्टिंग भाषा एक अच्छा विकल्प हो सकती है :-)


1

एक विनिर्देश लिखें। आप अपने कार्यक्रम को क्या करना चाहते हैं? स्क्रीन (यदि यह यूआई आधारित कार्यक्रम है) तर्क, इनपुट / आउटपुट आदि, तो गुंजाइश को सीमित रखें जो आप उचित समय (एक सप्ताह? एक महीने?) में कर सकते हैं।

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

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

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

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