मेरे लिए मैं C # और Java व्यक्ति हूं। मुझे लगता है कि ये 2 भाषाएँ काफी समान हैं इसलिए मेरे लिए एक दूसरे को क्रॉसओवर करना आसान है। मुझे यकीन नहीं है कि इसका अच्छा विचार अन्य विभिन्न भाषाओं को लेने के लिए है। कोई विचार?
मेरे लिए मैं C # और Java व्यक्ति हूं। मुझे लगता है कि ये 2 भाषाएँ काफी समान हैं इसलिए मेरे लिए एक दूसरे को क्रॉसओवर करना आसान है। मुझे यकीन नहीं है कि इसका अच्छा विचार अन्य विभिन्न भाषाओं को लेने के लिए है। कोई विचार?
जवाबों:
मैं एक भाषा सीखने के लिए कम से कम पांच कारणों के बारे में सोच सकता हूं, और ऐसा लगता है कि आपको अंततः इनमें से प्रत्येक के लिए एक सीखना चाहिए।
यह इस बारे में नहीं है कि आप कितनी भाषाएँ सीखते हैं। यह नई अवधारणाओं को सीखने के बारे में है। कुछ भाषाएँ आपको कई अवधारणाएँ सिखाने में सक्षम हो सकती हैं, जबकि अन्य केवल एक को सिखाने में सक्षम हो सकती हैं।
यदि आप C # जानते हैं, तो आप शायद जावा सीखकर बहुत कुछ नया नहीं सीखेंगे। लेकिन आप हास्केल सीखेंगे।
इसलिए जब आप सीखने के लिए एक नई भाषा चुनते हैं, तो कुछ ऐसा चुनें जो आपको ऐसी अवधारणाएँ सिखाएगा जो आप पहले से नहीं जानते हैं।
मैं कहूंगा कि सबसे महत्वपूर्ण चीज तेजी से सीखने की क्षमता है। उन्होंने कहा कि विभिन्न भाषाओं को जानना महत्वपूर्ण है जो विभिन्न उद्देश्यों के लिए उपयोग की जाती हैं। उदाहरण के लिए मुझे पता है:
1) स्क्रिप्टिंग भाषाओं की श्रेणी के लिए पायथन और पर्ल
2) C ++ को "फ्रेमवर्क" भाषा के रूप में
3) मोबाइल एप्लिकेशन के लिए जावा
4) विरासत कोड की बड़ी राशि के लिए सी
5) कुछ अप्रचलित भाषाएं जिन्हें मैं जानता था कि जब मैं छोटा था (बेसिक, पास्कल, क्लिपर आदि)
मैं कहूंगा कि आपको कम से कम एक मुख्य भाषा और एक स्क्रिप्टिंग की आवश्यकता है। C # जानने के बाद मैं आपको पायथन या पर्ल या रूबी सीखने की आवश्यकता होगी। (मैं अजगर के साथ जाऊंगा, लेकिन यह सिर्फ वरीयता का मामला है)।
हर साल एक नई प्रोग्रामिंग भाषा सीखना अच्छा है। लेकिन जैसा कि आप पहले से ही जानते हैं, कुछ वैसा ही सीखने के बजाय, मैं आपको सलाह दूंगा कि आप स्कला या एफ # जैसे कुछ अलग से सीखें। यह आपको चीजें करने के नए तरीके दिखाएगा और अंततः आपके प्रोग्रामिंग कौशल को समृद्ध करेगा।
आपको उन भाषाओं पर ध्यान केंद्रित करना चाहिए जिनकी आपको ज़रूरत है और जो आप कर रहे हैं उसका उपयोग करें । वास्तव में एक भाषा सीखना अभ्यास से आता है, इसलिए आपको उस भाषा का लाभ मिलता है जब आप इसका अभ्यास कर रहे होते हैं। यदि आप अपने खाली समय में एक नई भाषा सीखने जा रहे हैं, तो इसे बढ़ती जटिलता के कार्यों में लागू करके करें, ताकि आपको वास्तव में इस पर एक हैंडल मिल सके।
किसी पर ध्यान न दें। स्वच्छ कोड सीखने और लिखने पर ध्यान केंद्रित करना; स्पष्ट, अभिव्यंजक, सरल और, सबसे महत्वपूर्ण, डुप्लिकेट नहीं।
उस प्रकार के प्रोग्रामिंग के सिद्धांतों के लिए जाएं, मूल बातें (उदाहरण के लिए, ओओपी के लिए एनकैप्सुलेशन; इसका अर्थ क्या है और इसका क्या अर्थ है) और कुछ सिद्धांत सीखें
यह सामान आपके काम को आसान बना देगा। यह उन लोगों के लिए भी आसान बना देगा जो आपके या आपके बाद काम करते हैं।
फिर, आपको सिंटैक्स को भी अच्छी तरह से जानना होगा। लेकिन यह कुछ ऐसा नहीं है जो आपका ध्यान लंबे समय तक ले जाए
और फिर, आपको बहुत अच्छी तरह से समझ में आने वाली तकनीकों को भी समझना चाहिए। लेकिन जिन्हें आपके व्यवसाय के लिए आवश्यक जटिलता के स्तर के अनुसार प्राथमिकता दी जा सकती है।
अंतिम दो मुख्य फ़ोकस के नहीं हैं, बल्कि कुछ फ़ोकस के हैं
एक प्रोग्रामर को प्रोग्रामिंग पर नहीं बल्कि एक सहज भाषा / शब्द पर विचार करना होगा।
अपना काम करने के लिए जितने की जरूरत है।
लेकिन C # और Java यूके इंग्लिश और यूएस इंग्लिश के जितने करीब हैं। आप फिनिश या नवाजो के लिए जाकर कुछ नया सीख सकते हैं ।
मुझे नहीं लगता कि आप उस भाषा को "बाहर से" उस रूप में देखने के लिए अन्य भाषाओं की पर्याप्त समझ के बिना एक भाषा में महारत हासिल कर सकते हैं। प्रत्येक भिन्न भाषा तालिका में कुछ और लाती है और वे जो अवधारणाएँ लाती हैं वे ऐसी चीज़ें हैं जिन्हें आप मुख्य भाषाओं में वापस ले सकते हैं, जिनके साथ आप काम करते हैं।
तो अन्य भाषाओं का उपयोग करने के लिए सीखने में लगने वाला समय कभी भी व्यर्थ नहीं जाता है, भले ही आप उनका व्यावसायिक उपयोग करने की योजना न बना रहे हों।
पुरानी कहावत हर साल एक भाषा सीखना है और मैं निश्चित रूप से पहले दस वर्षों के लिए कहूंगा या इसलिए आपको ऐसा करने की आवश्यकता है। हो सकता है कि इससे आगे आप उनमें से कुछ का पता लगाने के बीच चयन कर सकते हैं जिन्हें आप पहले से अधिक गहराई में जानते हैं (शायद कुछ साल पहले आपने जो सीखा था, उसके बारे में अपने ज्ञान को अद्यतन करना) या विशेष पुस्तकालयों के साथ काम करने के बजाय केवल नई भाषाओं को अंतहीन रूप से संचय करना, लेकिन नज़र रखना विभिन्न भाषाओं के साथ काम करने के माध्यम से प्रोग्रामिंग के अभ्यास की खोज निश्चित रूप से एक प्रोग्रामर के रूप में आपके विकास के लिए एक सहायता है।
C # और Java जैसी लोकप्रिय प्रोग्रामिंग लैंग्वेज आपको ज़्यादा से ज़्यादा जगहों पर काम पर रखेंगी, लेकिन समस्याओं को सुलझाने के नए तरीके सीखने के लिए दोनों एक-दूसरे से अलग नहीं हैं। मुझे लगता है कि कुछ ऐसी भाषाएं हैं जिन्हें आप खाते हैं (जिनका उपयोग आप अपनी नौकरी करने के लिए करते हैं), और अन्य जो आप खेलते हैं। दोनों के अपने उद्देश्य हैं।
मैंने पाया है कि नई प्रोग्रामिंग भाषाओं को सीखने से, मैंने समस्याओं को हल करने के नए और अधिक सुरुचिपूर्ण तरीके सीखे हैं। यह भाषाओं की संख्या के बारे में नहीं है, या आप उन्हें कितनी बार उठाते हैं। सीखने के लायक प्रत्येक प्रोग्रामिंग भाषा में एक अनूठा दृष्टिकोण होता है, जो आपको अपनी समस्याओं को एक नई मानसिकता के साथ अपनाने के लिए मजबूर करता है। कई बार मूल्य उस मानसिकता को सीखने से आता है।
मैंने स्मॉलटाक के साथ खेला है, और मुझे बहुत अच्छा लगा। भाषा के विकास के लिए सिर्फ एक खुशी थी। एक बार जब आप मुहावरों के लिए अभ्यस्त हो गए, तो उन्होंने आपके कोड के साथ अधिक अभिव्यंजक होने में आपकी सहायता की। मुझे जावा / C ++ / C # में आपके पास मौजूद स्थिर टाइपिंग याद नहीं है। हम अपनी वैधानिक रूप से टाइप की गई भाषाओं के साथ जिस उदारता के साथ रहते हैं, वह वास्तव में स्थिर टाइपिंग थोपने वाली सीमाओं के आसपास काम करने के लिए बनती है।
मैं नियमित रूप से पटरियों पर रूबी और रूबी का उपयोग करता हूं, हालांकि अभी नौकरी देने के लिए नहीं। रूबी का डिजाइनिंग सिद्धांत "प्रोग्रामर खुशी को बढ़ाना" था। आप उस भावना को प्यार करेंगे, और अधिकांश भाग के लिए मुझे लगता है कि यह उद्धार करता है।
अंततः जावा लिस्प और स्मालटॉक के रास्ते पर जाएगा, और सी # सूट का पालन करेगा। उनकी जगह लेने के लिए वहाँ क्या होगा देखा जाना बाकी है। दिन के अंत में, यदि आप जानते हैं कि समस्याओं को कैसे हल किया जाए, और आपके पास समस्या को हल करने और बर्बाद करने के लिए कई तरीके हैं, तो आप नौकरी खोजने में सक्षम होंगे और इसके लिए आपको जिस भी भाषा की आवश्यकता होगी, उठा सकते हैं।
जब कौशल रखने की बात आती है, और लचीला होता है, तो मुझे लगता है कि आपको हर 6 महीने में कम से कम एक पूरी तरह से नई प्रोग्रामिंग भाषा सीखने की कोशिश करनी चाहिए। और मेरा मतलब एक ऐसी भाषा से है जो बहुत अलग है।
इसलिए C # या जावा फ्रेमवर्क का उपयोग करते हुए .net फ्रेमवर्क को अधिक सीखने के दौरान, अंग को बनाए रखने में मदद मिलती है, हास्केल, स्मॉलटाकल, स्काला, क्लॉजुर या रूबी सीखने से आपकी तकनीक का विस्तार होगा और आपको विभिन्न तरीकों से सोचने में मदद मिलेगी, जिनमें से कुछ को आप उपयोगी रूप से ले सकते हैं। आपकी मुख्य भाषा पर वापस, और जिनमें से कुछ आपको हिलाने में मदद कर सकते हैं यदि जावा पहाड़ी का राजा बनना बंद कर देता है।
यदि आपने कभी C नहीं सीखा है, तो हालांकि यह सिंटैक्स जावा में लाया गया है, मानसिकता काफी भिन्न हो सकती है। यह जानने योग्य है, गहराई से, और इससे भी बेहतर, यह समझना कि इस भाषा में ओओ कोड कैसे लिखा जा सकता है जो केवल प्रक्रियात्मक लगता है।
मैं ब्रूस टेट की पुस्तक "बियॉन्ड जावा" को पढ़ने की सलाह देता हूं, जो केवल एक भाषा पर होने के खतरों को बहुत अच्छी तरह से उजागर करती है, सी ++ के उदय और पतन को ध्यान में रखते हुए। हालाँकि C ++ अभी तक मृतकों से दूर है और दशकों बाकी हैं, यह केवल उन स्थितियों में उपयोग करने के लिए अधिक से अधिक प्रतिबंधित हो रहा है जो अन्य भाषाओं में उत्पादकता लाभ से लाभ नहीं उठा सकते हैं। इसके विपरीत, सिनात्रा, एक रूबी फ्रेमवर्क, आपको कोड की लगभग 6/7 पंक्तियों में एक साधारण वेब सेवा बनाने की अनुमति देता है, सी ++ समकक्ष इस से बड़ा परिमाण का एक आदेश हो सकता है।
जब आप एक देशी अंग्रेजी बोलने वाले नहीं होते हैं, तो कम से कम आपको अपनी अंग्रेजी सुधारने में ध्यान केंद्रित करना चाहिए । मैं कह रहा हूं कि मेरे अनुभव के आधार पर। उस भाषा को समझने से मुझे बहुत मदद मिली।
प्रोग्रामिंग भाषा सीखने के लिए सभी अच्छी सामग्री (किताबें, लेख, कोड आदि) अंग्रेजी में लिखी जाती हैं।
भाषाएं काम करवाने के लिए उपकरण हैं। कुछ भाषाएं कुछ प्रकार की समस्याओं के लिए अच्छी हैं, अन्य आमतौर पर सभी प्रकार की समस्याओं को हल करने में अच्छी हैं। मैं नई भाषाओं को सीखने की सलाह देता हूं क्योंकि वे बाहर आती हैं। इस महीने फैशनेबल क्या है, इस पर ध्यान न दें, लेकिन जानें कि वे क्या कर सकते हैं, वे क्या अच्छे हैं। मेरी सलाह प्रति वर्ष 1 नई भाषा है। वे इससे भी तेजी से बाहर आते हैं, लेकिन आप अपने टूलबॉक्स में नए टूल डालना चाहते हैं, न कि ब्लॉक पर फैशनेबल नए बच्चे।
एक निबंध जो भाषाओं में अंतर के बारे में बात करता है, वह पॉल ग्राहम का "बीइंग द एडवर्स" है। मैं इसे पढ़ने की सलाह देता हूं, लेकिन एक महत्वपूर्ण हिस्सा यहां है (वह एक काल्पनिक भाषा के रूप में "ब्लब" का उपयोग करता है ताकि आप इस बारे में बहस न करें कि आपका पसंदीदा लैंगेज क्या कर सकता है):
या पर्ल 4 के बारे में कैसे? पर्ल 4 और पर्ल 5 के बीच, शाब्दिक निकटता को भाषा में जोड़ा गया। अधिकांश पर्ल हैकर्स सहमत होंगे कि पर्ल 5 पर्ल 4 की तुलना में अधिक शक्तिशाली है। लेकिन एक बार जब आप इसे स्वीकार कर लेते हैं, तो आपने स्वीकार किया है कि एक उच्च स्तरीय भाषा दूसरे की तुलना में अधिक शक्तिशाली हो सकती है। और यह स्पष्ट रूप से अनुसरण करता है कि, विशेष मामलों को छोड़कर, आपको सबसे शक्तिशाली का उपयोग करना चाहिए।
इस विचार का शायद ही कभी इसके समापन के बाद पालन किया जाता है। एक निश्चित उम्र के बाद, प्रोग्रामर शायद ही कभी भाषाओं को स्वेच्छा से स्विच करते हैं। लोगों की जो भी भाषा होती है उसका उपयोग करने के लिए वे बहुत अच्छे विचार करते हैं।
{} स्निप
जब तक हमारे काल्पनिक ब्लब प्रोग्रामर को शक्ति निरंतरता दिख रही है, वह जानता है कि वह नीचे देख रहा है। ब्लाब की तुलना में कम शक्तिशाली भाषाएं स्पष्ट रूप से कम शक्तिशाली हैं, क्योंकि वे कुछ ऐसी सुविधा को याद कर रही हैं जिसका वह उपयोग कर रही हैं। लेकिन जब हमारा काल्पनिक ब्लब प्रोग्रामर दूसरी दिशा में दिखता है, तो शक्ति निरंतरता, वह महसूस नहीं करता है कि वह ऊपर देख रहा है। वह जो देखता है वह केवल अजीब भाषाएं हैं। वह शायद उन्हें ब्लब के बराबर शक्ति के बारे में समझता है, लेकिन इन सभी अन्य बालों वाली चीजों के साथ भी। ब्लब उसके लिए काफी अच्छा है, क्योंकि वह ब्लब में सोचता है।
जब हम किसी प्रोग्रामर को पावर कंटिनम से अधिक भाषाओं का उपयोग करते हुए देखने के बिंदु पर स्विच करते हैं, हालांकि, हम पाते हैं कि वह बदले में ब्लूब पर नीचे देखता है। आप ब्लब में कुछ भी कैसे प्राप्त कर सकते हैं? यह भी y नहीं है।
प्रेरण द्वारा, विभिन्न भाषाओं के बीच सत्ता में सभी अंतरों को देखने की स्थिति में एकमात्र प्रोग्रामर वे हैं जो सबसे शक्तिशाली एक को समझते हैं। (यह शायद एरिक रेमंड का मतलब है कि लिस्प आपको बेहतर प्रोग्रामर बनाने के बारे में है।) ब्लूब विरोधाभास के कारण आप दूसरों की राय पर भरोसा नहीं कर सकते हैं: वे जिस भी भाषा का उपयोग करते हैं उससे संतुष्ट हैं, क्योंकि यह तय करता है जिस तरह से वे कार्यक्रमों के बारे में सोचते हैं।
http://www.paulgraham.com/avg.html
हमारे द्वारा शिप किए गए अधिकांश एप्लिकेशन C # या VB में लिखे गए हैं। जब हमें किसी एप्लिकेशन में स्क्रिप्टिंग जोड़ने की जरूरत पड़ी, तो हमने पायथन को चुना (Lua रनर-अप पसंद था)। हम F # सीख रहे हैं क्योंकि वह कुछ बालों वाली नई चीजें कर सकता है, जिन्हें समझना और समझना मुश्किल है, अगर सभी को पता है कि C # / Java / VB है।
अच्छी तरह से सबसे पहले कई भाषाएं हैं जो अधिकांश प्रोग्रामर से बचने के लिए बहुत कठिन हैं: जावास्क्रिप्ट, एसक्यूएल, सी, आदि ताकि आप उनके साथ परिचित हो सकें, वे दूर नहीं जा रहे हैं।
डक-टाइप की गई स्क्रिप्टिंग भाषा को जानना भी एक अच्छा विचार है ... उदाहरण के लिए पर्ल, पाइथन, रूबी, लुआ आदि। ये सभी समस्याओं का एक विशाल सरणी के लिए अविश्वसनीय रूप से उपयोगी हैं, जिसमें आपकी खुद की दैनिक ड्रगरी भी शामिल हैं।
बेहतर या बदतर के लिए आप संभवतः कुछ बिंदु पर भी सी # और / या जावा में भाग लेंगे, वे काफी व्यापक हैं।
किसी भी मामले में, अपने आप को कृत्रिम रूप से सीमित न करें। उन कोडर्स को मैं जानता हूं जो स्पष्ट रूप से दिलचस्प टूल लेने से बचते हैं, लगता है कि क्लोइस्टेड वर्ल्डव्यू और सीमित प्रभाव है।
यह एक और विशेषज्ञ बनाम सामान्यवादी बहस एक अर्थ में बन सकता है। कुछ लोग एक भाषा को बहुत गहराई तक जानने में लंबा समय लगा सकते हैं जो उनके लिए ठीक काम करता है। अन्य लोग विभिन्न भाषाओं के एक समूह के बारे में थोड़ा जानना पसंद कर सकते हैं जो उनके लिए ठीक काम करता है। ज्यादातर लोग इन दो चरम सीमाओं के बीच हैं।
यदि आप चाहते हैं कि भाषाओं के सुझाव यहां दिए जाएं, तो कुछ विचार हैं:
कार्यात्मक प्रोग्रामिंग - हास्केल या लिस्प यहां के उदाहरण होंगे और प्रतिमान बदलाव कुछ हद तक एक हेड टर्नर हो सकता है।
डेटाबेस विशिष्ट - पीएल / एसक्यूएल या टी-एसक्यूएल कुछ के रूप में दिमाग में आते हैं जो उपयोगी हो सकते हैं यदि आप उन प्रणालियों के साथ अधिक बैक-एंड काम करना चाहते हैं जिनकी कुछ कार्यक्षमता के लिए डेटाबेस की आवश्यकता होती है।
यूआई वेब भाषाएँ - एक्शनस्क्रिप्ट या जावास्क्रिप्ट रिच इंटरनेट एप्लिकेशन में उपयोग की जाने वाली भाषाओं के उदाहरण हैं, हालांकि AIR कुछ डेस्कटॉप अनुप्रयोगों को कुछ मामलों में वेब कॉल का उपयोग कर सकते हैं जैसे ट्विटर एपीआई का उपयोग करना।
ये केवल विचार हैं और इस पर निर्भर करते हुए कि आप कहाँ होना चाहते हैं ये आपके लिए उपयोगी या बेकार हो सकता है। आप जो भी विकल्प बनाते हैं, उसके साथ शुभकामनाएँ।
एक प्रोग्रामर को तीन भाषाओं को जानने की जरूरत है: C, अंग्रेजी और कुछ और।
C एक बहुत ही मुख्य भाषा है, यह मशीन के करीब है और इसमें वाक्यविन्यास नियम हैं जो कई उच्च स्तरीय भाषाओं के लिए सामान्य हैं। सी आपको जावा की तुलना में बहुत अलग तरीके से डेटा संरचनाओं जैसी चीजों के बारे में सोचने के लिए मजबूर करता है। इसके अलावा, पायथन और रूबी vms दोनों C में बने हैं, और जब आप अपनी गति बढ़ाना चाहते हैं तो आप C को दोनों भाषाओं में इनलाइन कर सकते हैं।
अंग्रेजी प्रोग्रामिंग की आम भाषा है। ज्यादातर किताबें, तकनीकी रिपोर्ट, तकनीकी वेबसाइट और जर्नल पेपर पहले अंग्रेजी में और कभी-कभी विशेष रूप से अंग्रेजी में निकलते हैं। इसके अलावा, यदि अंग्रेजी आपकी पहली भाषा नहीं है, तो अंग्रेजी सीखने से अवधारणाओं में हेरफेर करने के लिए आपके टूलकिट का विस्तार होगा (यह अंग्रेजी बोलने वालों के लिए कुछ अन्य भाषा सीखने के लिए जाता है, निश्चित रूप से)।
समथिंग एल्स एक ऐसी भाषा होनी चाहिए जो प्रक्रियात्मक नहीं है, या वैधानिक रूप से टाइप नहीं है, या दृढ़ता से ऑब्जेक्ट ओरिएंटेड है, या किसी तरह से बस सी। हास्केल, स्काला, पायथन, रूबी, कुछ लिस्प बोली से मौलिक रूप से भिन्न है, जो भी हो ।
उसके बाद, आप अपनी विशिष्ट स्थिति के लिए कॉल कर सकते हैं, संभावित रूप से C # या जावा।