क्या कोई संभावना है कि कोई व्यक्ति जो C ++ के सभी प्रमुख पहलुओं को जान चुका है और भाषा के मूल सिद्धांतों को बहुत अच्छी तरह से जानता है, अन्य भाषाओं (जैसे, पायथन, पर्ल, जावा) को तेजी से और आसानी से सीखेगा?
क्या कोई संभावना है कि कोई व्यक्ति जो C ++ के सभी प्रमुख पहलुओं को जान चुका है और भाषा के मूल सिद्धांतों को बहुत अच्छी तरह से जानता है, अन्य भाषाओं (जैसे, पायथन, पर्ल, जावा) को तेजी से और आसानी से सीखेगा?
जवाबों:
किसी भी प्रोग्रामिंग भाषा का गहन ज्ञान आपको अन्य भाषाओं को जल्दी से तैयार करने में मदद करने की संभावना है। यह इसलिए आंशिक रूप से है क्योंकि प्रोग्रामिंग सिंटैक्स सीखने की तुलना में अधिक सोचने का एक तरीका है । अधिकांश प्रोग्रामिंग प्रैक्टिस अधिकांश अन्य प्रोग्रामिंग भाषाओं के लिए सही होगी। यही कारण है कि लोग कहते हैं कि आप हमेशा पहले की तुलना में दूसरी प्रोग्रामिंग भाषा सीखते हैं।
C ++ एक ऐसी भाषा है जो अन्य भाषाओं की तुलना में बहुत अधिक 'नियंत्रण' की अनुमति देती है। यह अच्छा और बुरा दोनों हो सकता है। उदाहरण के लिए, जब आप जंगल में जाते हैं तो एक असली बंदूक हवा की तुलना में बेहतर होती है (क्योंकि आप वास्तव में इसके साथ कुछ नीचे गोली मार सकते हैं), लेकिन यह आपके और आपके आसपास के लोगों के लिए भी अधिक खतरनाक है। C ++ में मेमोरी मैनेजमेंट जैसी अवधारणाएँ हैं, जिनके बारे में आपको अधिकांश अन्य भाषाओं में चिंता करने की आवश्यकता नहीं है। हालांकि ऑटो मेमोरी मैनेजमेंट भाषाओं के साथ काम करने के दौरान भी इन अवधारणाओं का दृढ़ होना व्यर्थ है। आप बिटवाइज़ ऑपरेशंस भी कर सकते हैं और C ++ जैसी भाषा के साथ 'मेटल' में बहुत नीचे जा सकते हैं। यहां तक कि उन क्षेत्रों में एक बुनियादी समझ किसी भी भाषा में एक प्रोग्रामर के रूप में आपकी बहुत मदद कर सकती है।
मैंने C ++ सीखने से पहले व्यक्तिगत रूप से जावा को लगभग 3 साल पहले सीखा था, और मुझे यह कहना चाहिए कि मुझे इसका पछतावा है (uni course ...)। इसने C ++ सीख लिया (मैं अभी भी सीख रहा हूँ - 'गहन' ज्ञान से दूर: D) उतना सरल नहीं है जितना कि मैं इसे पसंद करूँगा। अगर मैंने इसे दूसरे तरीके से किया होता तो मैं कहता कि यह मेरे लिए बहुत आसान होता। खासकर जब आप जानते हैं कि कुछ विशिष्ट तरीके से क्यों किया जाता है, और न केवल भाषा के ऑटो-जादू पर बाकी का आश्वासन दिया जाता है। यदि मुझे एक राय देने की अनुमति दी जाए तो मैं सुझाव दूंगा: C (बुनियादी और सार्वभौमिक प्रोग्रामिंग प्रतिमानों के लिए) -> C ++ (स्मृति प्रबंधन के साथ OOP की बुनियादी समझ के लिए) -> फिर आप किसी भी 'वास्तविक' OOP भाषा में जा सकते हैं अच्छी नींव या आप C ++ में अधिक उन्नत विषयों के साथ जारी रख सकते हैं, यह सब आप पर निर्भर करता है '
OR
औरAND
दुर्भाग्यवश नहीं। प्रोग्रामिंग कक्षाओं, विशेष रूप से शुरुआती स्तर की कक्षाओं में C ++ पढ़ाने के दौरान यह वास्तव में एक बड़ी समस्या है: आप प्रोग्रामिंग सिद्धांतों को सीख सकते हैं, या आप C ++ भाषा सीख सकते हैं, लेकिन C ++ भाषा में बहुत प्रभावी रूप से दोनों के भीतर सीखने के लिए बहुत कम नुकसान और बेवकूफियां हैं एक सेमेस्टर वर्ग का दायरा!
कई चीजें हैं जो C ++ में आजमाई गईं और आखिरकार सरासर जड़ता के माध्यम से भाषा में मुहावरा बन गईं, जो कि हर दूसरी भाषा में देखी गई और खारिज कर दी गई क्योंकि यह एक बहुत बड़ी गलती थी। इनमें से प्रमुख हैं C ++ के टेम्प्लेट्स और C ++ की ऑब्जेक्ट मॉडल (ऑब्जेक्ट प्रकार के रूप में ऑब्जेक्ट कभी भी अच्छी चीज नहीं होते हैं, क्योंकि यह लिस्कोव प्रतिस्थापन और डीओपी खुद को तोड़ता है।)
इसलिए यदि आपको पहले C ++ का गहन ज्ञान है, और फिर आप अन्य प्रोग्रामिंग भाषाओं को सीखना चाहते हैं, तो पूरी तरह से हानिकारक और प्रतिकारक क्रूड होने वाला है, अन्य प्रोग्रामिंग भाषाओं में प्रभावी होने के लिए आपको अनजान होना पड़ेगा ।
नहीं, C ++ को अच्छी तरह से जानने से अन्य भाषाओं को सीखना आसान हो जाएगा जो C ++ की तरह हैं। लेकिन वह उबाऊ होगा। आप दो भाषाओं को क्यों जानना चाहेंगे जो समान हैं? यह आपको कुछ भी नहीं खरीदता है। (ध्यान दें कि यह C ++ के लिए विशिष्ट नहीं है। यह किसी भी भाषा पर लागू होता है। प्राकृतिक भाषाओं के साथ तुलना करें: इतालवी सीखने से अन्य भाषाओं को सीखना आसान नहीं होगा। इससे स्पेनिश, फ्रेंच या पुर्तगाली सीखना आसान हो जाएगा, और तीन सीखना होगा उनमें से चौथे को सीखना आसान हो जाएगा, लेकिन यहां तक कि सभी रोमांस भाषाओं को सीखने से आपको फिनिश, चीनी, हिंदी, हिब्रू, अरबी, पश्तू, ग्रीक, आदि सीखने में मदद नहीं मिलेगी।)
प्रोग्रामिंग भाषाएँ प्रतिमानों को लागू करती हैं। पीटर वैन रॉय ने 34 प्रमुख प्रोग्रामिंग प्रतिमानों का एक पोस्टर एकत्र किया है ।
प्रतिमान, बदले में, अवधारणाओं से बने होते हैं। उस पोस्टर में लगभग 18 अवधारणाएँ हैं।
सभी प्रतिमान (या पोस्टर में कम से कम वाले) उन अवधारणाओं से बने हैं। सभी भाषाओं उन अवधारणाओं से बना एक या अधिक मानदंड लागू करते हैं। इसलिए, यदि आप उन अवधारणाओं को सीखते हैं, तो आप (कुछ अर्थों में) हर प्रोग्रामिंग भाषा को एक ही बार में सीखेंगे।
अभी भी बहुत सारी भाषा-विशिष्ट क्विर्क (उनके बीच वाक्य रचना) हैं। इसके अलावा, वह पोस्टर पूरी तरह से टाइपिंग को नजरअंदाज करता है, और निश्चित रूप से सिस्टम एफ के बीच एक महत्वपूर्ण अंतर है <: a -स्टाइल प्रकार प्रणाली, एक स्काला-शैली प्रकार प्रणाली, या एक गतिशील बतख-टाइप प्रकार प्रणाली, अकेले एक आश्रित प्रकार की प्रणाली आ ला इदरीस, एजडा, कोक, गुरु या एटीएस।
मैं कहूंगा कि किसी भी प्रोग्रामिंग भाषा को गहराई से जानने से दूसरों को सीखने में मदद मिलेगी, एक ही परिवार में कम से कम अन्य भाषाएं। उदाहरण के लिए, C ++ ज्ञान LISP या हास्केल के साथ ज्यादा मदद नहीं करेगा, लेकिन वस्तु उन्मुख प्रक्रियात्मक भाषाओं के लिए, यह होगा। मेरा दृष्टिकोण अच्छी तरह से भाषाओं के विभिन्न परिवारों (प्रक्रियात्मक, कार्यात्मक, वस्तु उन्मुख, आदि) में से प्रत्येक से एक भाषा को सीखने और सीखने का रहा है, फिर यह ज्ञान उस परिवार में अन्य भाषाओं में ले जा सकता है। दूसरी ओर, एपीएल का गहरा ज्ञान किसी और चीज़ में मदद नहीं करेगा ...
मैं यहां एक अलग व्याख्या लेने जा रहा हूं।
सी ++, स्मृति और डेटा संरचनाओं के बारे में सीखने के बाद से यह बलों आप वस्तु स्वामित्व और उम्र की तरह अवधारणाओं के बारे में ध्यान से सोचने के लिए के लिए एक अच्छा भाषा है। और मेमोरी और डेटा संरचनाओं के बारे में सीखना किसी भी सॉफ्टवेयर इंजीनियरिंग पाठ्यक्रम के आवश्यक भागों में से एक है।
लेकिन आप डेटा संरचनाओं के बारे में सीखने किया जाना है। यदि आप अभी "C ++ सीखते हैं," तो आप वास्तव में बहुत अधिक लाभ प्राप्त नहीं करेंगे, और यह अल्पावधि में अन्य भाषाओं को सीखने की प्रक्रिया को धीमा कर सकता है।
जब मैं कॉलेज में था, डेटा स्ट्रक्चर्स एक आवश्यक नए स्तर का कोर्स था, जिसे CS1 के बाद लिया गया था (जो कम से कम आधी कक्षा से बाहर रखा गया था)। यह कठिन था। पाठ्यक्रम का प्रारूप मूल रूप से "यहां एक डेटा संरचना है जिसे आपने पहले कभी नहीं देखा था [उदाहरण के लिए एक वामपंथी ढेर ]। इसे एक हफ्ते में सी ++ में लागू करें और अपने आउटपुट को हमारे अपेक्षित आउटपुट से बिल्कुल बाइट-फॉर-बाइट से मेल खाएं, इसलिए हम इसे स्वचालित रूप से ग्रेड कर सकते हैं। " फिर, अगले सप्ताह आपको एक नई डेटा संरचना और एक नया असाइनमेंट मिलेगा। मैंने अपने सभी अन्य पाठ्यक्रमों में संयुक्त रूप से जितना किया है, उससे अधिक शायद मैंने एक कोर्स में सीखा है।
इस तरह के सीखने के लिए आपको मूल्यवान होने के लिए C ++ करने की आवश्यकता है।
आपके द्वारा सीखी जाने वाली प्रत्येक भाषा सीखने के लिए अगले को आसान बनाती है, विशेषकर उसी प्रतिमान के भीतर। वे एक-दूसरे से भारी मात्रा में उधार लेते हैं, और थोड़ी देर बाद आप उस बिंदु पर पहुंच जाते हैं जहां एक नई भाषा कुछ अद्वितीय मोड़ के साथ अन्य भाषाओं की सुविधाओं का एक संग्रह जैसा दिखता है।
मुझे नहीं लगता कि सी ++ उस संबंध में किसी भी अन्य भाषा से बेहतर या बदतर है। यह उन अधिक मौखिक भाषाओं में से एक है जिन्हें मैं जानता हूं, और कुछ चीजों को कठिन बनाता है जो कि अन्य अन्य भाषाओं में आसान हैं, लेकिन यह जरूरी नहीं कि अगली भाषा सीखने में आसान हो । यह आम तौर पर अगली भाषा का उपयोग करना आसान बनाता है , हालांकि। वहाँ एक अंतर है।
नहीं। C का गहरा ज्ञान , या C ++ के सबसेट का जो "मूल रूप से C" है, अन्य भाषाओं को सीखने में मदद करेगा, कम से कम जब यह चित्रित होगा कि उनके कार्यान्वयन क्या हो रहे हैं। दूसरी ओर C ++ का गहरा ज्ञान , ज्यादातर ऐसी जानकारी होगी जो अन्य भाषाओं को सीखने के दौरान भ्रमित या अप्रासंगिक हो; यदि आप C ++ के ऑब्जेक्ट ओरिएंटेशन को एक सतह स्तर से अधिक पर सीखते हैं, उदाहरण के लिए, जब आप पर्ल / पायथन / रूबी की ओर बढ़ते हैं तो आप अधिक समय संयुक्त राष्ट्र के सीखने में बिताएंगे जो आप इसका उपयोग करने से जानते हैं, क्योंकि उन भाषाओं में ऑब्जेक्ट लागू होते हैं। एक पूरी तरह से अलग तरीका हैC ++ की तुलना में। यही बात अधिकांश अन्य भाषाओं के लिए अधिक या कम हद तक सही है, और अन्य भाषा सुविधाओं के लिए (उदाहरण के लिए, C ++ टेम्पलेट और हास्केल बहुरूपता मूल रूप से एक ही विशेषता है, फिर से, पूरी तरह से अलग कार्यान्वयन)। C ++ का इतना गहरा ज्ञान ज्यादातर C ++ - विशिष्ट होने जा रहा है।