विश्वविद्यालय सीएस पाठ्यक्रमों के लिए जावा या सी ++?


11

मैं खुद को सीएस की डिग्री प्राप्त करने के लिए स्कूल में दाखिला लेने की कोशिश में हूं। मैं जिस स्कूल को देख रहा हूँ, वह वास्तव में जावा- और C ++ - दोनों परिचयात्मक सॉफ्टवेयर डेवलपमेंट कोर्स (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग, डिज़ाइन पैटर्न, उस तरह की चीज़) के लिए उपलब्ध है। यह छात्र की पसंद है जो अनुसरण करने के लिए ट्रैक करता है, लेकिन केवल एक का पालन करने का समय है।

यह जानने के बाद कि अब आपके पास क्या है, अगर आपके पास विकल्प था, तो क्या आप जावा या सी ++ में अपना सीएस पाठ्यक्रम नींव रखेंगे?

वर्तमान में मेरी बहस इस तरह दिखती है:

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

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

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

या मैं बस इसके बारे में बहुत सोच रहा हो सकता है।

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


1
अकादमिक शोध के माहौल में हर कोई अभी से जावा का दोहन कर रहा है। इसके अलावा, भाषा की परवाह किए बिना आपको विश्वविद्यालय से सीखने की ज़रूरत है कि नई भाषाएँ कैसे सीखें। C ++ लगभग है जैसा कि जावा है, लेकिन यह दावा नहीं है कि वे 5 साल में होंगे। नई भाषाएँ / तकनीक हमेशा आती रहती हैं इसलिए आपको उन्हें लेने और जल्दी निपुण होने के लिए तैयार रहने की आवश्यकता है।
क्रिस

1
@ क्रिस: यही कारण है कि मेरी सिफारिश कुछ ऐसा सीखने की होगी जो आगे सीखने की सुविधा देती है, बजाय इसके कि कुछ लोकप्रिय हो। मैं या तो जावा के बजाय C ++ या पायथन की सलाह दूंगा (स्पष्ट रूप से विभिन्न कारणों से)।
डेविड थॉर्नले

यह बात उस भाषा की नहीं है। यह अमूर्त अवधारणा है। अवधारणा को सही तरीके से प्राप्त करें, ताकि छात्र अपने जीवन में बाद में आसानी से कुछ भी सीख सकें।
J-16 SDiZ

1
मैं इस तरह की स्थिति में हूं। (20 साल के बाद स्कूल से वापस सीएस के लिए स्कूल जाना)। मेरे स्कूल में Java / C ++ स्प्लिट ट्रैक भी है। यहां सब कुछ पढ़ने के बाद, और यहां तक ​​कि शीर्ष उत्तर के लिए +1 देने के बाद भी, मैं अभी भी जावा के साथ जा रहा हूं, और यहां क्यों, इस मामले में यह आपके लिए उपयोगी है: मैं वेब विकास (जावास्क्रिप्ट, पीएचपी, पायथन) से आ रहा हूं , इसलिए जावा पुस्तकालयों का समर्थन एक प्लस है। यह मानते हुए कि मैं ओओपी सिद्धांतों को वास्तव में पकड़ने के लिए समय लेता हूं, मुझे नहीं लगता कि सी ++ (यदि आवश्यक हो) के लिए आगे बढ़ना मुश्किल होगा। जावा स्क्रिप्टिंग और संकलन के बीच का मध्य-मैदान है।
17

2
मुझे लगता है कि मैं हर जवाब से असहमत हूं। यह वास्तव में कोई फर्क नहीं पड़ता । आप दोनों भाषाओं में समान अवधारणाओं को सीखेंगे, और आप अपनी पढ़ाई और करियर के माध्यम से अन्य भाषा को चुनेंगे जो आपने नहीं चुनीं और दूसरों ने भी सीखीं।
मत्स्येन्

जवाबों:


51

मैं व्यक्तिगत रूप से C ++ के साथ जाऊंगा क्योंकि यह आपको जानकारी देगा कि कैसे जावा के कुछ हिस्सों में हुड के नीचे काम होता है (उदाहरण के लिए पॉइंटर्स)। जावा से C ++ में जाना काफी तुच्छ है, जबकि अन्य तरीके से घूमना यकीनन अधिक कठिन है।

जावा इको-सिस्टम के बारे में वास्तव में मुश्किल बात यह है कि यह फ्रेमवर्क, लाइब्रेरी आदि की विशाल संख्या है - वे किसी भी तरह से विश्वविद्यालय में किसी भी तरह से कवर करने की संभावना नहीं रखते हैं।

दिन के अंत में यह मायने नहीं रखता कि आप कौन सी भाषा चुनते हैं, जब तक आप सिद्धांतों को सीखते हैं।

मेरा JUG C ++; एंडोर्सिंग के लिए मुझे मारने वाला है


1
जावा इको सिस्टम के आकार और संक्रमण स्पष्टीकरण के बारे में उत्कृष्ट बिंदु के लिए +1।
जैस

1
एक विश्वविद्यालय में एक बड़ा इको-सिस्टम सीखने के साथ समस्या यह है कि यह आपके पेशेवर कैरियर में उपयोगी नहीं होगा। आप कम पुस्तकालयों को सीखने और अवधारणाओं को सीखने या वास्तविक भाषा सुविधाओं से परिचित होने से बेहतर हैं।
डेविड थॉर्नले

2
C ++ के लिए एक और जंप-ऑफ यह है कि आप .NET फ्रेमवर्क पर C ++ को प्रबंधित कर सकते हैं, जिससे आपको C #, F #, और उस रनटाइम पर कोई अन्य भाषा सीखने के लिए एक लीड-इन मिल जाएगी। Java में JVM और Scala जैसी भाषाओं के लिए बहुत सीसा-इन है, लेकिन कोई भी JVM C ++ नहीं है जिसे मैं जानता हूं।
कोडेक्सआर्कनम

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

जावा से पहले हमारे कुछ दिनों में हमारे पास यह विकल्प नहीं था और हम सभी ने C ++ सीखा, इसलिए मुझे न तो अभी भी C ++ सीखने वाले लोगों के साथ कोई समस्या दिखाई देती है। मुझे लगता है कि जावा में परिचय टर्बो पास्कल में इंट्रो से बेहतर है।
Bratch

18

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

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

एक बार जब आप C ++ के साथ उचित रूप से प्रवीण हो जाते हैं, तो स्मृति प्रबंधन और एसटीएल के साथ आश्वस्त, जावा / सी # उठाकर एक हवा होना चाहिए।


सहमत हूं, मैं सकारात्मक हूं कि यदि आप पहले से ही C ++ में कुशल हैं तो जावा सीखना, C ++ सीखने की तुलना में बहुत आसान होगा, यदि आप जावा के साथ पहले से ही कुशल हैं।
कार्सन 63000

"सी ++ के साथ उचित रूप से कुशल बनने" के साथ समस्या यह है कि इसमें वर्षों लगेंगे और आप अभी भी केवल ओओपी के एक छोटे उपसमुच्चय को सीखेंगे।
हेनरी

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

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

9

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

इसका कारण निम्नलिखित है: प्रतिभाशाली छात्रों को छोड़कर, अधिकांश छात्र मॉड्यूलर प्रोग्रामिंग को समझे बिना ऑब्जेक्ट ओरिएंटेशन को समझ सकते हैं। और वे एक प्रक्रियात्मक भाषा में संरचित प्रोग्रामिंग को समझने के बिना मॉड्यूलर प्रोग्रामिंग को समझ नहीं सकते हैं। सादा और सरल। इसका वसीयतनामा (अन्य बातों के अलावा) यह है कि भले ही हम 3-4 दशकों से ओओ को जानते हैं, फिर भी लोग व्यवहार में हाइपर स्पेगेटी लिखते हैं।

इसके अलावा, एक व्यक्ति पूरी तरह से एक जीसी-आधारित भाषा (यह जावा या .NET है) पर निर्भर करता है, वास्तव में हार्डवेयर के करीब कभी नहीं पहुंच सकता है। जब तक आपकी पूरी महत्वाकांक्षा गतिशील वेब पेज बनाने के लिए नहीं है, तब तक क्या लगता है? आपको भाषा के करीब होने के साथ सहज होने की आवश्यकता है।

आप एक अच्छी तरह से राउंडेड कंप्यूटर वैज्ञानिक और प्रोग्रामर बनने के लिए एक CS स्कूल जाते हैं (उम्मीद है कि कई प्रोग्रामिंग भाषाओं में हैंड्स-ऑन प्रोग्रामिंग प्रैक्टिस के कुछ घंटों के क्रेडिट के साथ।) यदि आप सभी जानते हैं कि जावा (या .NET या C) या है। अजगर जो भी हो) तो आप एक "जावा प्रोग्रामर" हैं (एक प्रोग्रामर नहीं जो जावा पर काम कर सकता है, लेकिन एक "जावा प्रोग्रामर")। और यह कहना बहुत मायने रखता है कि आप "हथौड़ा बढ़ई" या "फिलिप स्क्रू ड्राइवर मैकेनिक" हैं, ऐसा नहीं है।

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

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

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

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

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

मेरा सुझाव है कि आप "जावा स्कूल" पर जोएल स्पोल्स्की का एक टुकड़ा पढ़ेंगे।

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

सारांश में, यदि वे आपको एक प्रक्रियात्मक प्रोग्रामिंग भाषा नहीं सिखाते हैं (जैसे कि यह C या Ada की तरह एक औद्योगिक है या पास्कल की तरह शिक्षण के लिए पर्याप्त है), और वे आपको C ++ (यदि आप भाग्यशाली हैं) या Java / C # (यदि आप बदकिस्मत हैं), तो मैं दूसरे स्कूल की तलाश करूंगा। सादा और सरल, एक ऐसे व्यक्ति से जो वास्तविक समय में जावा का उपयोग कर रहा है।


किसी ऐसे व्यक्ति से, जो जावा, सी और सी ++ को अच्छी तरह से जानता है और जिसने बहुत पहले स्नातक नहीं किया था, मैं असहमत हूं। C (या C ++) VS जावा - जावा रास्ता 'आसान' है। हो सकता है कि अगर मैंने C ++ (जो मुझे लगता है कि बहुत बढ़िया है (लेकिन आसान नहीं है) btw के बजाय (डेल्फी (eww) +) जावा के साथ) शुरू किया है तो यह पूरी तरह से संभव है कि मैंने एक डेमोक्रेटिक दिया होगा, दिया और प्रोग्रामर नहीं बन सकता (हालांकि शायद हमारे पास एक खराब C ++ शिक्षक था)। लेकिन हां, जावा के इंटर्ल्स को समझने के लिए C ++ सीखना बिल्कुल अमूल्य था। और मुझे लगता है कि इन दिनों लगभग 95% प्रोग्रामर "हार्डवेयर के करीब कभी नहीं पहुंचते हैं"।
Dukeling

" C (या C ++) VS जावा - जावा रास्ता 'आसान' है - अच्छी तरह से, यह एक अच्छी तरह से जाना जाता है। मुझे यकीन नहीं है कि मेरे पोस्ट के साथ क्या करना है, हालांकि (?????)
luis.espinal

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

समझने और सिखाने में आसान जरूरी नहीं कि शैक्षणिक उद्देश्यों के लिए पर्याप्त भाषा हो। जावा के साथ काम करने के 12 साल बाद, मैं इस बारे में आश्वस्त हूं। उदाहरण के लिए, C या C ++ की तुलना में आसान एक बेहतर शैक्षणिक भाषा पाइथन होगी ... या कोई भी भाषा जो प्रत्येक विधि को एक कक्षा में रखने के लिए बाध्य नहीं करती है, अर्थात, एक ऐसी भाषा जो वास्तव में बहु-प्रतिमान है जैसे कि विरोध जावा जहां सब कुछ "माना जाता है" एक वस्तु है, जहां वर्गों और पैकेजों से परे स्कूप करने के लिए कोई अच्छा विकल्प नहीं है, और इसी तरह और इतने पर। यह उचित मॉडलिंग सिखाने की क्षमता को सीमित करता है।
luis.espinal

जावा, आपको संज्ञा-उन्मुख, सब कुछ-ऑब्जेक्ट-मोड में प्रोग्रामिंग सीखने के लिए मजबूर करके, यह अन्य प्रतिमानों के लिए खराब मॉडलिंग रूपक प्रदान करता है जो वास्तविक विश्व मॉडलिंग के लिए अधिक उपयुक्त हैं। खाइयों से एक पेशेवर डेवलपर उस सीमा के आसपास काम कर सकता है। छात्र मुझे माफ नहीं करते और माफ कर देते हैं, लेकिन बहुत कम कॉलेज के प्रोफेसरों के पास भेद जानने का अनुभव है। मैं जावा के ऊपर पायथन या रूबी (या वास्तव में लिस्प या बेसिक) चुनूंगा यदि C / C ++ बहुत कट्टर है।
luis.espinal

4

मुझे लगता है कि आपके व्यक्तित्व पर बहुत कुछ निर्भर करता है। कम से कम मेरे दृष्टिकोण से, जावा और सी ++ में मौलिक रूप से अलग-अलग झुकाव हैं जो लोगों को काफी भिन्न प्रकार से अपील करते हैं।

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

C ++ पूर्व लिखित कोड प्रदान करने पर बहुत कम जोर देता है। हालांकि इसमें एक लाइब्रेरी (STL 1 ) शामिल है, लेकिन लाइब्रेरी उस कोड के बारे में कम है जो इसमें शामिल है, क्योंकि यह एक शैली और सिद्धांतों के सेट के बारे में है। यह पूरी तरह से कोड लिखना संभव है जो स्पष्ट रूप से और आसानी से पहचाने जाने योग्य "एसटीएल" कोड के रूप में हो, भले ही यह पहले से लिखे गए कोड में से बहुत कम या कोई भी उपयोग नहीं करता हो।

भाषाओं का उपयोग कैसे किया जाता है, इसमें भी काफी अंतर है। जावा ने भाषा को सरल रखने पर भारी जोर दिया है। इससे उन टूल्स का निर्माण करना आसान हो जाता है जो जावा कोड को विभिन्न तरीकों से जोड़ते हैं (उदाहरण के लिए, रिफैक्टरिंग के लिए)। इसका मतलब यह भी है कि आपको ऐसे उपकरणों की आवश्यकता है जो ऐसा कर सकते हैं, क्योंकि अक्सर रिफैक्टिंग में बड़ी मात्रा में कोड में काफी महत्वपूर्ण परिवर्तन होते हैं।

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

जावा सीखने में आसान होने पर अधिक जोर देता है। C ++ उपयोग करने में आसान होने पर बहुत अधिक जोर देता है - लेकिन (दुर्भाग्य से) केवल अगर आप वास्तव में जानते हैं कि आप क्या कर रहे हैं।

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

1 हां, मुझे पता है कि यह वास्तव में सटीक नहीं है, लेकिन मैं इसे एक किताब में बदलने से रोकने की कोशिश कर रहा हूं ...


3

मैं विश्वास नहीं कर सकता कि लोग पहली भाषा के रूप में C ++ की वकालत कर रहे हैं! आप अपना अधिकांश समय बॉयलर प्लेट लिखने और वास्तव में प्रोग्राम बनाने के तरीके सीखने की तुलना में भाषा में सीमाओं और मछली हुक के आसपास बिताने की कोशिश करेंगे।

जावा एक बहुत सरल भाषा है और आपके सीखने के तरीके में नहीं आएगी।

यदि आप C ++ सीखना चाहते हैं, तो जावा के साथ अवधारणाओं को जानें और फिर C ++ में जाएं, या यदि आप मैक सॉफ्टवेयर लिखना चाहते हैं, तो OBJ-C बेहतर है। जावा और OBJ-C बहुत अधिक भिन्न नहीं हैं।

FYI करें मैंने एक वाणिज्यिक C ++ डेवलपर के रूप में 10 साल बिताए हैं।


यह मेरी पहली भाषा नहीं होगी। मैं एक प्रोग्रामर हूं जो अब वास्तव में डिग्री प्राप्त करने के लिए स्कूल जा रहा हूं। सी ++ और जावा के साथ मेरा अनुभव सीमित है, लेकिन मेरे पास सी और ऑब्जेक्टिव-सी के साथ अनुभव है। लेकिन जवाब देने के लिए समय निकालने के लिए धन्यवाद।
फिलिप रेगन

3
जावा होगा अपने सीखने के रास्ते में। यह आपको भाषा-स्वतंत्र अवधारणाओं के बारे में कुल गैर-सत्य सिखाएगा।
16:16 बजे डेडएमजी

2

मैं C ++ की सलाह दूंगा। मेरे पास जावा में कुछ कक्षाएं थीं, और कॉलेज में सी ++ में कुछ, और सी ++ से मैंने जो भाषा विशिष्ट कौशल सीखे, उससे मुझे अतिरिक्त भाषाओं को सीखने में मदद मिली है। इसके अतिरिक्त, हालांकि मुझे C ++ नौकरी के उद्घाटन की तुलना में बहुत अधिक जावा दिखाई देता है, अधिकांश पूर्ण जावा स्टैक की तलाश में हैं, जैसे:

  • EJB 1.x / 2.0, JNDI, JMS, JTA / JTS, RMI, JDBC, सर्वलेट्स, JSP, SAX / DOM, वेब सर्विसेज, SOAP, WSDL, UDDI, JAXB, JavaMail, WAP, WML, HTML
  • टॉमकैट, अपाचे ज़ालान, अपाचे ज़ेर्सेस, जेस्र्व, जेरुन, जेबर्स्टल, टुगेदर, वेब लॉजिक 5.x / 6.x, वेबस्पेयर 3.5 / 4

और संभावना है कि जावा आधारित पाठ्यक्रम आपको C ++ की तुलना में बेहतर तरीके से तैयार नहीं करेगा जो कि इस तरह की सूची के खिलाफ होगा।


1
मुझे लगता है कि (कम से कम मेरे क्षेत्र में) सी ++ नौकरियां भी जावा नौकरियों (उद्देश्य) की तुलना में काफी बेहतर भुगतान करती हैं और आम तौर पर अधिक दिलचस्प (व्यक्तिपरक) हैं।
Cercerilla

2

यह मुश्किल है क्योंकि जावा सीखना आसान नहीं है। आप जल्द ही जावा के साथ और अधिक काम करेंगे।

C ++ के साथ काम करने के लिए बहुत अधिक कठिन भाषा है। पॉइंटर्स और मेमोरी मैनेजमेंट के साथ काम करने के लिए वैचारिक और व्यावहारिक रूप से मुश्किल हैं। C ++ आपको कोई सुरक्षा जाल प्रदान नहीं करता है।

दीर्घकालिक में उन सभी चीजों को समझना उपयोगी होगा जो C ++ आपको सिखाती है। इसके अलावा C ++ से जावा में संक्रमण दूसरी दिशा की तुलना में कहीं अधिक आसान है।

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

इसका दूसरा पक्ष यह है कि यदि वे परीक्षण आपको पूरी तरह से तौलिया में फेंकने का कारण नहीं बनाते हैं, तो यदि आप C ++ में महारत हासिल कर चुके हैं, तो वे आपको एक बेहतर प्रोग्रामर बना देंगे। और अगर आपका करियर C # या Java या अजगर के साथ है और आपको अपने जीवन में कभी भी किसी अन्य पॉइंटर को नहीं छूना है, तो आप इसकी पूरी सराहना करेंगे ...


2

C ++ अधिक लचीला है और समझ को गहरा प्रदान करता है। निर्विवाद रूप से, आप जावा से C ++ से अधिक लाभ प्राप्त करेंगे। C ++ भी कठिन है, क्योंकि यह अधिक जटिल है।

उस ने कहा, C ++ जॉब्स लगभग उतनी सामान्य नहीं हैं जितनी कि जावा जॉब्स।

जावा और इसके वंशज, C #, एंटरप्राइज़ / कॉरपोरेट बिग-आयरन कोडिंग स्पेस के लिए मानक समाधान हैं। मैं दृढ़ता से आपके दूसरे वर्ष में दोनों में से एक को सीखने की सलाह देता हूं और जब तक आप अपनी डिग्री पूरी नहीं कर लेते हैं, तब तक बहुत सहज होते हैं। यह आपको नौकरियों को बहुत आसान बना देगा। इसका मतलब यह नहीं है कि मुझे लगता है कि उन नौकरियों में औसतन महत्वपूर्ण बौद्धिक रुचि है। मैंने हाल ही में रॉकी पर्वत में क्रैजीलिस्ट सॉफ्टवेयर नौकरियों के माध्यम से एक पास बनाया है और अधिकांश नौकरियां सी # / जावा थीं और जिसे " सीआरयूडी " सॉफ्टवेयर कहा जाता है ; IMO जो बहुत उबाऊ है।


1

कॉलेज स्तर पर C ++ और Java दोनों पढ़ाया जाता है, मैं दृढ़ता से जावा की सिफारिश करूंगा ।

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

जावा के लिए आईडीई शुरुआत और जारी रखने वाले दोनों छात्रों के लिए सहायता प्रदान करता है। बातचीत के दौरान (उदाहरण के लिए ओओपी पर चर्चा करते हुए) शक्तिशाली रीफैक्टरिंग टूल लाने से छात्रों को बनाए रखने योग्य कोड लिखने में मदद मिलेगी।

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


2
यदि आप बफर ओवरफ्लो और मेमोरी प्रबंधन के साथ गंभीर समस्याओं में भाग लेते हैं, तो आप C ++ गलत सिखा रहे हैं। कौन सा मानक कंटेनर बफर की तरह बह सकता है?
डेविड थॉर्नले

सरणी? मैं वास्तव में, C ++ गलत सिखा रहा हूँ; यह एक दशक पहले अच्छी तरह से था।
एलेक्स फेइमैन

0

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

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


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