कार्यक्रम को सीखते समय भविष्य का प्रमाण देना


10

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

क्या मैं यह सोचने में सही रहूंगा कि बैक-एंड लॉजिक / लो लेवल प्रोग्रामिंग के लिए C / C ++ का ठोस ज्ञान होना चाहिए और जैसे, GUI के लिए जावा जैसी एक अत्यंत पोर्टेबल भाषा के साथ संयुक्त और इतने पर सॉफ्टवेयर विकास के लिए एक अच्छा आधार होगा। यह सिस्टम की सबसे अधिक मात्रा पर उपयोगी साबित होगा? - मैं डेस्कटॉप पीसी, टैबलेट, फोन पर बात कर रहा हूं।


11
ऐसा कुछ नहीं है
अय्यूब

एक मांद बनाएँ और उसे किताबों से भरें।
एडवर्ड स्ट्रेंज

4
एक मांद बनाएँ और उसमें डिब्बाबंद भोजन भरें। सबसे भविष्य प्रूफ प्रोग्रामर प्रोग्रामर है जो सर्वनाश के बाद जीवित है।
टॉम एंडरसन

1
प्रोग्रामिंग लैंग्वेज या कोडिंग न सीखें, लेकिन ज्यादातर प्रोग्रामिंग सीखें और जिसमें कई साल
लगें

जवाबों:


31

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

इसलिए API को आँख बंद करके न सीखें। जानें कि उनकी कल्पना कैसे की जाती है। दृश्य के पीछे के दर्शन क्या हैं? उनके फायदे और दोष क्या हैं? सामान्य रूप से सॉफ़्टवेयर के बारे में सोचें, एक विशिष्ट तकनीक नहीं।

आप अच्छे प्रोग्राम गर्भाधान पर भी काम कर सकते हैं, OOP और AOP में जाना एक अच्छा विकल्प IMO है। लेकिन तंत्र को ठीक से न समझें, तंत्र के पीछे के दर्शन पर काम करें।

सामान्य कंप्यूटर विज्ञान की उपेक्षा न करें, जैसे डेटा संरचनाएं और एल्गोरिदम, क्योंकि वे क्रॉस टेक्नोलॉजी ज्ञान हैं जो हमेशा उपयोगी होते हैं।

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

डिबग (लॉग और डीबगर का स्मार्ट उपयोग) और परीक्षण (कोड लिखने के लिए कैसे आसानी से परीक्षण किया जा सकता है और इन परीक्षणों को स्वचालित करने के लिए कैसे करें) के लिए प्रभावी तकनीकों को जानें।

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

अंत में, सीखना सीखें। यदि आप जानते हैं कि कैसे सीखना है, तो आप अनुकूलन कर सकते हैं।

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

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

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

इसलिए निश्चित रूप से, चीजों को प्राप्त करें, वे आपकी गलतियों से सीखते हैं। मैं और अधिक जोर देते हैं नहीं कर सकते हैं: कार्य पूरा करें !


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

चीजों को एक शुरुआती बिंदु के रूप में स्पष्ट करने के लिए एक संपादन जोड़ा गया।
deadalnix

4

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

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

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


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

4

@Deadalnix से जवाब अच्छा है। मैं इसमें तीन चीजें जोड़ूंगा:

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

महान परिवर्धन!
deadalnix

2

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

इसलिए, शुरुआत में 'फ्यूचर-प्रूफ' होने के बारे में बहुत ज्यादा न सोचें। हालाँकि, जैसा कि आप प्रगति करते हैं, उन भाषाओं में कुशल बनने की कोशिश करें जो एक दूसरे से बहुत अलग हैं। मूल रूप से, (जैसा कि आपने कहा था) आपको निम्न-स्तरीय (-ish) भाषा के साथ C / C ++, एक उच्च-स्तरीय प्रोग्रामिंग भाषा जैसे Java और एक स्क्रिप्टिंग भाषा (पायथन, रूबी, आदि) के साथ काम करना चाहिए। यदि आप वास्तव में उन्नत सामान में जाना चाहते हैं तो आपको विधानसभा को भी जानना चाहिए।

लेकिन अभी इस बारे में खुद को बहुत ज्यादा तनाव न दें। कार्यक्रम सीखने में वर्षों लगते हैं। फिलहाल, बस जावा या सी # या जो भी हो जैसी भाषा चुनें और उसके लिए जाएं। :)


मुझे 'एक चुनना' पसंद है और इसके लिए मैं रवैया अपनाता हूं ... मैं शायद इसे अपनाऊंगा। एक निम्न स्तर की भाषा (C), एक उच्च स्तर (जावा) और एक स्क्रिप्टिंग (पायथन) भाषा को चुनने के लिए Y या nay और सभी को एक साथ 3 सीखना?
अनाम

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

मैं अभी शुरू करने के लिए नहीं कहूंगा - मैंने सालों से html / css जाना है (हालाँकि वे वास्तव में अप्रासंगिक / किसी प्रकार की योग्यता नहीं रखते हैं) और कुछ महीनों के लिए PHP / MySQL वेबसाइटों का निर्माण करते रहे हैं। वेब डेवलपमेंट मैं 'get-by' कर सकता हूं, यह सॉफ्टवेयर डेवलपमेंट है जिससे मैं निपट रहा हूं। हालांकि, आप जो भी कह रहे हैं, वह ध्यान देंगे।
बेनामी

If you want to go into the really advanced stuff you must also know Assembly- आप इसे किसी भी स्तर पर कर सकते हैं, चुनौतियां बस अलग हैं।
साठफुटेरसुडे

1

क्या मैं यह सोचने में सही रहूंगा कि बैक-एंड लॉजिक / लो लेवल प्रोग्रामिंग के लिए C / C ++ का ठोस ज्ञान होना चाहिए और जैसे, GUI के लिए जावा जैसी एक अत्यंत पोर्टेबल भाषा के साथ संयुक्त और इतने पर सॉफ्टवेयर विकास के लिए एक अच्छा आधार होगा। यह सिस्टम की सबसे अधिक मात्रा पर उपयोगी साबित होगा?

मैं डेस्कटॉप पीसी, टैबलेट, फोन पर बात कर रहा हूं।

नहीं, इससे कोई भी मदद नहीं मिलेगी।

डेटा संरचनाओं और एल्गोरिदम का एक ठोस ज्ञान - किसी भी विशिष्ट प्रोग्रामिंग भाषा से स्वतंत्र - "निम्न स्तर की प्रोग्रामिंग और पसंद" की तुलना में अधिक मूल्यवान है।

"जावा जैसी बेहद पोर्टेबल भाषा" सी की तरह ही पोर्टेबल है और इससे कोई मदद नहीं मिलती है। अगली बड़ी बात इन भाषाओं से इतना अलग है कि अपने सुपर पोर्टेबल जावा एक दायित्व है, नहीं एक परिसंपत्ति होगा किया जाएगा।

मैक ओएस (डेस्कटॉप, टैबलेट और फोन) सभी उद्देश्य सी में किया गया है।

विंडोज (डेस्कटॉप, टेबल और फोन) सभी C # में किया जाता है। यह एक जगह हो सकती है।


मैं जावा को C से पोर्टेबल भाषाओं के रूप में तुलना कर रहा था - जावा क्रमशः निम्न स्तर और उच्च स्तर पर होने के साथ, जो कि सही है ... जैसा कि आपने अभी खुद कहा है, मैक ओएस = ओबज-सी, विंडोज = सी #, जो है जहां मैं एक विशेषज्ञ नहीं होना चाहता और अपने विकल्पों को काट सकता हूं, या दोनों हो सकता है और यदि आप मेरे बहाव को पकड़ते हैं तो 'कोई नहीं' का स्वामी बन सकते हैं। मैं सराहना कर रहा हूं कि आप क्या कह रहे हैं, लेकिन एक प्रोग्रामिंग भाषा का ज्ञान नहीं होने के साथ डेटा संरचनाओं और एल्गोरिदम का एक ठोस ज्ञान उतना ही बेकार है जितना कि बिना बाद वाली प्रोग्रामिंग भाषा का ज्ञान।
बेनामी

@ क्रिस ब्रिजेट: आप बिंदु को पूरी तरह से गलत कर रहे हैं। सार्वभौमिक फंडामेंटल हैं, और एक प्रोग्रामिंग भाषा न तो है। सबसे पहले, बुनियादी बातों को जानें। फिर, एक भाषा (या एक ओएस) बस केक पर फ्रॉस्टिंग कर रही है। फंडामेंटल केक हैं और भविष्य के प्रमाण हैं।
एस.लॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.