
प्रवेश दहलीज: उच्च, निम्न, मध्यम
प्रोग्रामर अक्सर "एंट्री थ्रेशोल्ड" के बारे में बात करते हैं - एक अवधारणा जो किसी दिए गए "जूनियर डेवलपर" के लिए आवश्यक प्रयास की मात्रा को दर्शाती है ताकि वह अपने पहले गंभीर कार्यक्रम को लिखने और नौकरी खोजने के लिए पर्याप्त रूप से प्रोग्रामिंग भाषा में महारत हासिल कर सके। "प्रवेश सीमा" में ज्ञान शामिल है:- वाक्य-विन्यास की विशेषताएं और भाषा की बारीकियां
- पुस्तकालय
- एल्गोरिदम और डेटा संरचनाएं।
वेब या वेब नहीं?
वेब
वेब प्रोग्रामर को फ्रंटएंड और बैकएंड डेवलपर्स में विभाजित किया जा सकता है। आपको समझना चाहिए कि इन शर्तों का क्या मतलब है। फ्रंटएंड डेवलपर्स क्लाइंट साइड में शामिल होते हैं, यानी उपयोगकर्ता क्या देखता है। "बैकएंड" डेटा में हेरफेर करने और संग्रहीत करने के बारे में है - एक सर्वर पर चलने वाली सेवा का हिस्सा। एक फ्रंटएंड डेवलपर के लिए कौन सी प्रोग्रामिंग भाषा सीखनी है, यह तय करने के लिए जावास्क्रिप्ट और जावास्क्रिप्ट फ्रेमवर्क (एंगुलर जेएस, रिएक्ट और अन्य) आवश्यक हैं। JS बोलियाँ, जैसे कॉफ़ीस्क्रिप्ट और टाइपस्क्रिप्ट, अपने माता-पिता की तरह लोकप्रिय नहीं हैं, लेकिन वे उपयोगी भी हो सकते हैं। एक फ्लैश एएस भी है, और वहां जेस्क्रिप्ट और वीबीस्क्रिप्ट हुआ करते थे, लेकिन केवल डायनासोर ही इसे याद रखते हैं =) इन सबके अलावा, आपको HTML को समझने की जरूरत हैऔर सीएसएस ।
वेब नहीं (एंटरप्राइज़, डेस्कटॉप, मोबाइल)
मैंने जानबूझकर निम्नलिखित प्रोग्रामिंग भाषाओं को इस श्रेणी में एक अजीब नाम के साथ जोड़ दिया है। आप उनमें से अधिकांश का उपयोग उद्यम, डेस्कटॉप और यहां तक कि मोबाइल एप्लिकेशन लिखने के लिए कर सकते हैं। पायथन एक आसानी से समझ में आने वाली वस्तु-उन्मुख प्रोग्रामिंग भाषा है और हाल ही में ग्रोथ मशीन लर्निंग (एमएल) के कारण अविश्वसनीय रूप से लोकप्रिय हो गई है: एमएल डेवलपर्स पायथन का व्यापक उपयोग करते हैं। एमएलआईटी में एक बिल्कुल नया क्षेत्र है, और यद्यपि हमने पहले ही इसे फल देते देखा है, मैं प्रोग्रामिंग भाषा चुनते समय इस उद्योग में जल्दबाजी नहीं करूंगा। सबसे पहले, आपको गणित की उत्कृष्ट समझ की आवश्यकता होगी। दूसरा, लोकप्रियता की लहर उसी तरह से गुजर सकती है जैसे "ब्लॉकचैन" या "नैनो टेक्नोलॉजी" के लिए। उस ने कहा, आपको याद हो सकता है कि पायथन का उपयोग वेब विकास में किया जाता है। सी ++: एक क्लासिक भाषा जहां सब कुछ "प्लस-प्लस" ऑपरेटर पर बनाया गया है। यह भाषा सभी लोकप्रिय वस्तु-उन्मुख प्रोग्रामिंग भाषाओं की पूर्वज है, और एक शुरुआत करने वाले को निश्चित रूप से इस पर ध्यान देना चाहिए। इसका उपयोग करके कई लोकप्रिय एप्लिकेशन लिखे गए हैं। लेकिन "पैर में खुद को गोली मारने" का उत्कृष्ट मौका और समझने में मुश्किल सिंटैक्स इस संभावना को शून्य कर देता है कि एक नौसिखिया प्रोग्रामिंग के इस मास्टोडन को मास्टर करेगा। Kotlin, जो हिपस्टर्स के लिए जावा की तरह है, ओओपी और कार्यात्मक प्रोग्रामिंग का एक पागल मिश्रण है। यह हाल ही में इस तथ्य के कारण लोकप्रिय हुआ है कि जावा से कोटलिन में स्विच करने वाला एक अनुभवी डेवलपर गंभीरता से अपनी उत्पादकता में सुधार कर सकता है। एक अनुभवी डेवलपर जल्दी से इस प्रोग्रामिंग भाषा में सहज हो जाएगा। वैसे, यही बात स्काला पर भी लागू होती है, लेकिन एंड्रॉइड की दुनिया में कोटलिन लोकप्रिय है। शुरुआती लोगों के लिए जावा सीखना आसान है। विशेष रूप से CodeGym =) जावा सिंटैक्स की मदद से समझा जा सकता है और हालांकि इसमें "खुद को पैर पर मारने" का जोखिम है, यह महत्वपूर्ण नहीं है।ओओपी या पीओपी?
प्रक्रियात्मक दृष्टिकोण
प्रक्रिया-उन्मुख दृष्टिकोण में एक प्रोग्राम लिखना शामिल है जिसमें अनुक्रमिक विवरण शामिल होते हैं जिन्हें समस्याओं के एक विशिष्ट सेट को प्रभावी ढंग से हल करने के लिए एक एकीकृत पूरे में इकट्ठा किया जा सकता है। ऐसी भाषाओं में सी , प्योरबेसिक और पास्कल शामिल हैं । दूसरे शब्दों में, वे भाषाएँ जो हाई स्कूल के छात्रों और स्नातक से नीचे के छात्रों के लिए निराशा लाती हैं। अपेक्षाकृत युवा जीओ भी हैभाषा। उस ने कहा, संभावित डेवलपर के लिए प्रक्रियात्मक भाषाओं से परिचित होना बहुत उपयोगी है। प्रक्रियात्मक भाषाओं में मेरा विसर्जन वोल्फ्राम मैथमैटिका प्रणाली और विश्वविद्यालय अनुसंधान के साथ हुआ। उचित एल्गोरिदम और सरल प्रक्रियाओं, कार्यक्रम की शुरुआत से अंत तक रैखिक रूप से चलते हुए, मुझे आधुनिक सैद्धांतिक भौतिकी के लिए प्रासंगिक मूल्यों की गणना करने की अनुमति दी। यह "अनुक्रमिक" प्रोग्रामिंग भाषा केवल आपको यह समझने में मदद करने वाली चीज़ है कि कभी-कभी कोड लिखना आसान होता है जो मैन्युअल रूप से गणना करता है। सीखने की प्रक्रिया-उन्मुख प्रोग्रामिंग (पीओपी) अच्छा एल्गोरिथम प्रशिक्षण प्रदान करती है, जो एक नियोक्ता लगभग हमेशा नौकरी के उम्मीदवार में देखना चाहता है। आईटी में बिल्कुल सब कुछ प्रक्रियात्मक भाषाओं की नींव पर बनाया गया है, इसलिए उन्हें कम मत समझो। वैसे, कौन सी प्रोग्रामिंग भाषा सीखनी है, यह तय करने वाले शुरुआती लोग अक्सर सोचते हैं कि केवल OOP भाषाएँ ही मल्टीथ्रेडिंग का समर्थन करती हैं। यह सच नहीं है। प्रक्रियात्मक प्रोग्रामिंग भाषाएँ भी समानांतर संगणना की अनुमति देती हैं।
वस्तु-उन्मुख दृष्टिकोण
जिन लोगों ने प्रक्रियात्मक भाषाओं के साथ शुरुआत की, वे आमतौर पर गणित, एल्गोरिदम और डेटा संरचनाओं (इन क्षेत्रों पर तकनीकी विश्वविद्यालयों के जोर के कारण) में पारंगत होते हैं। फिर भी, आज वास्तविकता यह है कि सफल प्रोग्रामर आमतौर पर वे होते हैं जिन्होंने प्रोग्रामिंग के लिए एक अलग दृष्टिकोण में महारत हासिल की है: वस्तु-उन्मुख प्रतिमान। OOP विचारधारा आपको वास्तव में वैश्विक सिस्टम बनाने देती है। इस दृष्टिकोण की एक विशेषता वास्तविक दुनिया के साथ इसकी समानता है:- अलग-अलग वस्तुएं एक-दूसरे के साथ बातचीत करती हैं और एक-दूसरे से स्वतंत्र रूप से मौजूद रहती हैं।
- वस्तुओं का एक पदानुक्रम होता है और वे अपने पूर्वजों के व्यवहार को अपना सकते हैं या बदल सकते हैं।
- आप अमूर्त अवधारणाओं का उपयोग कर सकते हैं, लेकिन वास्तव में मौजूद वस्तुएं ही बातचीत कर सकती हैं।
उदाहरण प्रक्रिया-उन्मुख भाषाएँ विशिष्ट समस्याओं को हल करने के उपकरण हैं। यदि आपका कार्य थोड़ा सा भी बदल जाता है, तो आपको संभवतः सभी एल्गोरिदम को फिर से लिखने में समय और प्रयास खर्च करना होगा। एक ऐसे प्रोग्राम की कल्पना करें जो कार डीलरशिप का वर्णन करता है जो कारों और ट्रकों को बेचता है, दोनों नए और इस्तेमाल किए गए। एक प्रक्रियात्मक भाषा में, आपको उन कार्यों को परिभाषित करने की आवश्यकता होती है जो प्रत्येक इकाई के लिए डेटा के इनपुट या आउटपुट को संसाधित करते हैं: एक नई कार, एक नया ट्रक, एक प्रयुक्त कार और एक प्रयुक्त ट्रक। OOP क्या ऑफ़र करता है? वस्तु-उन्मुख दृष्टिकोण के साथ, हमें बस एक वाहन आधार वर्ग को परिभाषित करने की आवश्यकता है जो सभी प्रकार के वाहनों द्वारा साझा की गई विशेषताओं को संग्रहीत करता है:
और जानकारी लेने और बाहर भेजने के तरीके। फिर हम ऐसी वस्तुएँ बनाते हैं जो वाहन वर्ग की विशेषताओं को प्राप्त करती हैं: कार और ट्रक। उनमें ऐसी जानकारी होती है जो विशेष रूप से इस प्रकार के वाहनों से संबंधित होती है, साथ ही साथ इनपुट/आउटपुट विधियों से भी। अचानक, डीलरशिप का प्रबंधन मोटरसाइकिलों की पेशकश करके लाइनअप का विस्तार करने का निर्णय लेता है। प्रक्रियात्मक दृष्टिकोण के तहत, हमें नई और प्रयुक्त मोटरसाइकिलों के लिए सभी तर्कों को फिर से बनाना होगा, जबकि एक OOP भाषा हमें बस एक नई मोटरसाइकिल क्लास बनाने देती है जो वाहन सुपरक्लास की सभी विशेषताओं को प्राप्त करती है और जिसमें मोटरसाइकिल-विशिष्ट शोधन शामिल होते हैं। और अगर हम विभिन्न वाहनों को जोड़ दें तो क्या होगा? एक प्रक्रियात्मक कार्यान्वयन के लिए OOP की तुलना में अधिक कार्य की आवश्यकता होगी। क्या अधिक है, लाइनअप जितना बड़ा होगा, वस्तुओं से जुड़े कम संचालन की आवश्यकता होगी। |
- OOP में व्यक्तिगत मॉड्यूल का स्वतंत्र विकास शामिल है, जिससे एक प्रोग्रामर या टीम को संपर्क और सूचना के आदान-प्रदान की विधि और सीमाओं को चुनने की अनुमति मिलती है।
- अखंड प्रक्रियाओं की तुलना में छोटे मॉड्यूल में विभाजित कोड को पढ़ना बहुत आसान है। नतीजतन, एक बाहरी व्यक्ति आपके कोड को जल्दी से समझ सकता है, और इसी तरह, यदि आवश्यक हो तो आप एक नई परियोजना में शामिल हो सकते हैं।
- एक वर्ग को दूसरे की बातचीत को प्रभावित किए बिना बदला जा सकता है, लेकिन ऐसा परिवर्तन बाल वस्तुओं के पदानुक्रम को प्रभावित कर सकता है। एक बार जब आप इस दृष्टिकोण में महारत हासिल कर लेते हैं, तो प्रोग्राम का विस्तार और संशोधन तुच्छ हो जाता है।
-
क्रॉस-प्लेटफ़ॉर्म।
जावा वर्चुअल मशीन (JVM) की बदौलत जावा हर जगह काम करता है। इस भाषा के मुख्य लाभों में से एक इसकी क्रॉस-प्लेटफ़ॉर्म प्रकृति है: यह सोचने की ज़रूरत नहीं है कि किस लाइब्रेरी को जोड़ा जाए या किसी विशेष प्रोसेसर की वास्तुकला। "एक बार लिखो, कहीं भी दौड़ो।"
-
दस्तावेज़ीकरण।
एक विशाल दस्तावेज़ीकरण आधार है: आधिकारिक Oracle दस्तावेज़ीकरण, प्रशिक्षण पोर्टल, और एक निरंतर विकसित समुदाय। विकास के दौरान उठने वाले अधिकांश सवालों के जवाब कुछ ही मिनटों में मिल सकते हैं। मुख्य बात यह समझना है कि खोज इंजन में क्या दर्ज करना है =)
-
लोकप्रियता।
जावा दुनिया में सबसे लोकप्रिय प्रोग्रामिंग भाषा है: उपरोक्त एंड्रॉइड और वेब डेवलपर्स के अलावा, लगभग हर एंटरप्राइज़ डेवलपर जावा में लिखता है। उद्यम बड़े निगमों की जरूरतों के लिए आवश्यक आंतरिक कॉर्पोरेट विकास को संदर्भित करता है।
हर साल नफरत करने वाले "जावा की मौत" की भविष्यवाणी करते हैं। वे कहते हैं, " ओरेकल इसका समर्थन करना बंद कर देगा। आप पूरी तरह से अपना समय बर्बाद कर रहे हैं। " यह सच नहीं है! वे हर छह महीने में जावा के नए संस्करण जारी करने का वादा करते हैं।
मेरे लिए, जावा 8 में लैम्ब्डा एक्सप्रेशंस क्रांतिकारी और एक रहस्योद्घाटन थे, नए संस्करणों के बारे में कुछ नहीं कहना! मैं वर्तमान में एक "विरासत" परियोजना पर काम कर रहा हूं, इसलिए मैं नवीनतम नवाचारों में नहीं जाता हूं, लेकिन यह एक तथ्य है कि जावा जीवित है।
-
एंड्रॉयड।
पिछले 4 वर्षों से, एंड्रॉइड ने लगातार 80% से अधिक मोबाइल फोन बाजार पर कब्जा कर लिया है । टीवी, मीडिया प्लेयर और यहां तक कि कार इंफोटेनमेंट सिस्टम भी इस ऑपरेटिंग सिस्टम पर चलते हैं। और इस ओएस के लिए ऐप डेवलपमेंट मुख्य रूप से जावा में होता है। जरा उन संभावनाओं की कल्पना करें जो खुल रही हैं। जब मुझे Android डेवलपर के रूप में नौकरी मिली, तो मैंने सोचा कि मैं जो उत्पाद विकसित कर रहा था, वह कितना मूल्य का था? जैसा कि यह निकला, कीमत लगभग $ 5 प्रति वर्ष थी। यह सवाल पूछता है, "फिर इस कार्यालय, वेतन, स्नैक रूम, पिंग-पोंग टेबल, रोबोट और अन्य भत्तों के लिए पैसा कहां से आता है? इसका उत्तर मात्रा में निहित है: हमारे ऐप के 20 मिलियन उपयोगकर्ता हैं।
-
वेतन।
और अब सोने पर सुहागा: एक जावा डेवलपर का वेतन उद्योग में सबसे अधिक है। आखिरकार, आप एक विशिष्ट उद्देश्य के लिए प्रोग्रामिंग का अध्ययन करने की योजना बना रहे हैं: एक अच्छी नौकरी पाने के लिए।
प्रोग्रामिंग भाषा की लोकप्रियता
सूचना के आधिकारिक स्रोत हैं, तो चलिए उनकी ओर मुड़ते हैं। TIOBE के अनुसार , जावा अक्टूबर 2019 तक पहले स्थान पर है। PYPL रैंकिंग में, जावा जेएस से बहुत आगे और ट्रेंडी पायथन को टक्कर देते हुए दूसरे स्थान पर है।निष्कर्ष
एक नौसिखिए के रूप में एक प्रोग्रामिंग भाषा चुनने पर विचार करता है, तो उसे निम्नलिखित बातों पर ध्यान देना चाहिए:- लोकप्रियता (जावा लगातार एक अग्रणी स्थान रखता है)
- प्रवेश सीमा (जावा के लिए, यह माध्यम है: नियोक्ताओं को कौशल की एक विस्तृत श्रृंखला की आवश्यकता होती है)
- उपलब्ध सामग्री (CodeGym में आपका स्वागत है =))
- अनुप्रयोग के क्षेत्र: जितने अधिक क्षेत्रों में एक प्रोग्रामिंग भाषा का उपयोग किया जाता है, उतने ही अधिक विशेषज्ञों की बाजार में आवश्यकता होती है। मैंने पहले ही उल्लेख किया है कि कैसे जावा क्रॉस-प्लेटफ़ॉर्म विकास का समर्थन करता है, लेकिन मैं इसे दोहराते नहीं थकता।
GO TO FULL VERSION