हम विश्वविद्यालय में जावा का अध्ययन क्यों करते हैं? [बन्द है]


25

जावा अक्सर अकादमिया में पाया जाता है। उसके पीछे क्या कारण है?


9
जावा आईडीई के लिए कोई लाइसेंस लागत नहीं हैं जैसे कि Microsoft पारिस्थितिकी तंत्र के लिए हैं। यूनी के लिए अपने बड़े पैमाने पर ट्यूशन फीस के अधिक।
मझिल्टन

16
क्या? आप मुफ्त में Microsoft Visual Studio Express प्राप्त कर सकते हैं।
मात्रा_देव

12
वास्तव में यदि आप एक छात्र और हर दूसरे Microsoft ऐप से अधिक समय के लिए विजुअल स्टूडियो मुफ्त में प्राप्त कर सकते हैं।
एरिन

5
क्योंकि आप पैसा बनाना चाहते हैं जब आप सही स्नातक हैं? 4 साल तक ऐसी चीजों का अध्ययन करना, जो realदुनिया में कोई भी उपयोग नहीं करता है, छात्रों या उन कंपनियों को लाभ नहीं है जो छात्रों को नौकरी देना चाहते हैं।

5
@JarrodRoberson, केवल कुछ कंपनियां जावा का उपयोग करती हैं, विश्वविद्यालयों को वास्तव में आपको विविध प्रकार की भाषाओं पर शिक्षित करना चाहिए ताकि आप वास्तविक दुनिया के लिए बेहतर तैयार हों। जब आप सोच और विकास के कई अन्य तरीके होते हैं, तो आप सिर्फ जावा प्रोग्रामर होने के कारण अटकना नहीं चाहते हैं।
कैफीक नेक

जवाबों:


73

एक कुछ विश्वविद्यालयों कोई ऐसा जो पर्याप्त रूप से अच्छी तरह से जाना जाता है कि कई (यदि नहीं सबसे) निर्णय के आसपास उस व्यक्ति की पसंद, नापसंद, राय, स्वाद, आदि बस घूमना उदाहरण के लिए, टेक्सास ए एंड एम कर्मचारियों पर Bjarne Stroustrup है है; यह शायद किसी को भी थोड़ा आश्चर्यचकित करता है कि उनके पाठ्यक्रम में C ++ पर जोर दिया गया है।

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

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

अंत में, भले ही यह आमतौर पर पिछले दो मानदंडों के अलगाव के विपरीत सीधे चलता है, उन्हें आम तौर पर (या कम से कम चाहते हैं) उद्योग की जरूरतों के लिए उत्तरदायी के रूप में देखा जाना चाहिए।

जावा इन तीनों का प्रतिच्छेदन है:

  1. 1980 तक हर अवधारणा को अच्छी तरह से जाना जाता था। ओओपी क्या है, इसकी सबसे बुनियादी धारणा से परे जानने के लिए बहुत कुछ नहीं है।
  2. यह बेस्वाद, गंधहीन, गैर विषैले, बायोडिग्रेडेबल, राजनीतिक रूप से सही विकल्प है।
  3. इतिहास की लगभग एकमात्र अन्य भाषा है जो लंबे समय तक अस्तित्व में रही है और (शायद) कम नवीन है। भले ही वे शायद ही हो जिसे आप तेजी से आगे बढ़ने वाले लक्ष्य कहेंगे, COBOL और फोरट्रान दोनों अभी भी जावा से अधिक नए हैं।
  4. इसका व्यापक रूप से उपयोग किया जाता है। जब आप इसके लिए नीचे आते हैं, तो प्रोफ और PHB के समान मापदंड होते हैं।

ध्यान दें कि मैं वास्तव में नहीं कह रहा हूं (उदाहरण के लिए) कि OOP के बारे में सबसे बुनियादी धारणा से जावा के बारे में जानने के लिए और कुछ भी नहीं है - केवल यही कि इसे सिखाने की स्वीकार्य नौकरी के लिए क्या करना चाहिए।


टिप्पणियों के आवंटन को यहां से हटा दिया गया था, क्योंकि इस उत्तर पर राय विभाजित हैं।
डिस्प्ले नेम

1
एफडब्ल्यूआईडब्ल्यू, मुझे वेनिला पसंद है।
मोनिका

मैंने आपके उत्तर को साइन अप करने के लिए साइन अप किया है
user2445942

22

मैंने जावा के ठीक बाहर आने से पहले नब्बे के दशक के दौरान कंप्यूटर साइंस का अध्ययन किया था। हमारे प्रोफेसरों द्वारा पीछा किया गया दृष्टिकोण निम्नलिखित था।

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

दूसरे वर्ष के दौरान हमारे पास एक ऑपरेटिंग सिस्टम पाठ्यक्रम था जिसमें हमें सी और असेंबली में अभ्यास करने के लिए कहा गया था। प्रोफेसर ने हमें C (केवल कुछ पाठ) पर एक पूर्ण पाठ्यक्रम नहीं दिया क्योंकि (1) हमारे पास पहले से ही पहले वर्ष के दौरान प्रोग्रामिंग पर एक पाठ्यक्रम था और (2) उन्होंने कहा कि हर कंप्यूटर वैज्ञानिक जिसे प्रोग्रामिंग की अवधारणाओं को जानना चाहिए एक किताब पढ़ने और एक नई प्रोग्रामिंग भाषा सीखने में सक्षम हो। पाठ्यक्रम बहुत सुचारू रूप से चला गया और हम सभी ने सामान्य पाया कि सी और असेंबली व्यावहारिक विषय थे जो आप स्वयं सीखते हैं या अन्य छात्रों के साथ गलियारे में चर्चा करते हैं, लेकिन सार्थक पाठ्यक्रम नहीं बना रहे थे।

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

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

जावा पढ़ाने के सवाल पर वापस जाना। मुझे लगता है कि जावा का उपयोग अक्सर शिक्षण के लिए किया जाता है क्योंकि यह पर्याप्त तटस्थ है और यह एक ऐसी भाषा का उपयोग करके प्रोग्रामिंग के सिद्धांतों को समझाने की अनुमति देता है जो उद्योग की दुनिया के करीब भी है।

व्यक्तिगत रूप से मैं अभी भी पहले कोर्स के लिए पास्कल या इसी तरह की भाषा का उपयोग करूंगा, क्योंकि यह मुझे नियंत्रण संरचनाओं और डेटा संरचनाओं के बीच अंतर करने की अनुमति देगा, जो कि जावा / ऑब्जेक्ट-ओरिएंटेड भाषाओं में कसकर एकीकृत हैं। इसलिए, मेरी राय में, पास्कल प्रोग्रामिंग की मूल अवधारणाओं के लिए अधिक क्रमिक परिचय की अनुमति देगा।

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

यह सिर्फ मेरे अनुभव और राय हैं।


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

(+1) पास्कल से संबंधित प्रोग्रामिंग लैंग्वेज, प्रोग्रामिंग सिखाने के लिए इस्तेमाल किए जाने के लिए बेहतर हैं, क्योंकि इसके पिता "निकलॉस विर्थ" ध्यान से इन्हें पढ़ाने के लिए डिज़ाइन करते हैं। ;-)
umlcat

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

@ जियोर्जियो: मुझे लगता है कि छात्रों को पहले पास्कल, और बाद में, सी / सी ++ और बाद में जावा सिखाया जाना चाहिए। मेरा मतलब केवल एक या दूसरे से नहीं है, लेकिन, उनमें से सभी एक विशेष क्रम में हैं। कुछ स्कूल दूसरे के पक्ष में एक शिक्षण को छोड़ते हैं। मैं सी और जावा में भी काम करता हूं। आशा है कि यह मदद करता है ;-)
umlcat

@umlcat: मैं पूरी तरह से सहमत हूं। मैं कुछ लिस्प, हास्केल, प्रोलॉग भी जोड़ूंगा: जितना अधिक प्रोग्रामिंग प्रतिमानों को जानता है, उतना बेहतर है।
जियोर्जियो

10

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

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

यही हमें अगले कारण में लाता है। नियोक्ता कुछ भाषा अनुभव चाहते हैं, और उस समय C / C ++ था। लेकिन, C / C ++ सीखने के लिए बहुत अनुभव लेता है, और बहुत सारे कोने के मामले हैं और यदि ands या buts जो कि परेशान कर रहे हैं। हमने C / C ++ में पाठ्यक्रम सीखे, लेकिन निचले स्तरों पर नहीं। उस समय नियोक्ता सीएस कार्यक्रमों में पागल थे क्योंकि छात्र C / C ++ गुरु होने से बाहर नहीं आए थे।

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

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


यदि आपका विद्यालय अभी भी 90 के दशक के मध्य में पास्कल का उपयोग कर रहा था, तो वे वैसे भी एक ओवरहाल के लिए अतिदेय थे। मेरी पहली सीएस कक्षाएं पास्कल में थीं, लेकिन वह 1980 में थी! दिलचस्प है, हालांकि, यह केवल परिचयात्मक पाठ्यक्रम था - ऊपरी-स्तरीय कक्षाएं सी (ओएस इंटर्नल के लिए), मोडुला (कंपाइलर डिजाइन के लिए), प्रोलॉग और कुछ स्नातक पाठ्यक्रमों में भी एडीए का उपयोग किया जाता था। मुझे समझ नहीं आता कि स्कूल अभी भी ऐसा क्यों नहीं करते हैं।
टीएमएन

1
अधिकांश या सभी अभी भी पास्कल का उपयोग 1995 के अंत में करते थे, कुछ मोडुला में चले गए। मेरा ने 1995 में वरिष्ठों के लिए पास्कल रखते हुए वरिष्ठों के लिए C ++ की शुरुआत की। मुझे लगता है कि उन्होंने अब तक पास्कल को जावा के साथ बदल दिया है (उन्हें निम्न स्तर की भाषा की आवश्यकता है क्योंकि बहुत सारे काम में हार्डवेयर के साथ सहभागिता शामिल है, इसलिए C ++ शायद अभी भी आसपास है)।
jwenting

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

8

इसके लिए कुछ कारण शामिल हैं:

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

ध्यान दें कि ऐसे कई स्कूल हैं जो C # को समान कारणों से पढ़ाते हैं। कई और कारण हैं, उनमें से कुछ विशेष रूप से व्यक्तिगत स्कूल के लिए हैं। संक्षेप में, जावा, युरेअरियर का ऑब्जेक्ट ओरिएंटेड "बेसिक" बन गया है।


महान जावा पुस्तकें हैं और साथ ही OOP जैसे कि जावा पहली वस्तु है जिसमें ब्लूज का उपयोग किया गया है। हालाँकि, C # में मैंने ऐसी सीखने वाली किताबें नहीं देखीं जो आपको स्क्रैच से निकालती हैं और आपको अच्छे तरीके से सीखाती हैं। क्या आप मेरी बात से सहमत हैं?
गोमा

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

"कचरा एकत्र किया गया है ताकि संकेत और मैनुअल मेमोरी प्रबंधन सिखाने की आवश्यकता न हो।" यदि आप एक सॉफ्टवेयर इंजीनियर के रूप में संकेत और स्मृति प्रबंधन के बारे में नहीं जानते हैं, या नहीं जानते कि वे कैसे काम करते हैं, तो आप कुछ बहुत महत्वपूर्ण ज्ञान को याद कर रहे हैं।
राइटफोल्ड

जावा में *सिंटैक्स नहीं हो सकता है , लेकिन पॉइंटर्स की बुनियादी समझ के बिना इसका उपयोग करना बहुत कठिन होगा ।
dan04

@TP और यही कारण है कि जावा का उपयोग अक्सर परिचयात्मक पाठ्यक्रमों (जहां पहले पास्कल या मोडुला का उपयोग किया गया था) के लिए किया जाता है, और बाद में सी (++) पेश किया जाता है।
14

6

मुझे जोएल स्पोलस्की की पोस्ट द पेरिल्स ऑफ जावा स्कूल पसंद है । मुझे लगता है कि बेरिन लोरिच इस बारे में सही है कि यह सिरिकुलम को सरल बना रहा है और यह वास्तविक दुनिया पर भी लागू हो रहा है।

मैंने निम्नलिखित कई बार सुना है: "कंप्यूटर विज्ञान की डिग्री प्रोग्रामिंग सीखने के लिए कोई डिग्री नहीं है, यह सिद्धांत सीखना है"। जब तक सिद्धांत सीखा जा रहा है तब तक भाषा को जरूरी नहीं है (हालांकि यह जोर से मिल जाए)। जावा अपेक्षाकृत आसान भाषा है, जो हर चीज के पीछे के सिद्धांत को सीखने में अधिक समय लगाती है। यह एक कारण है कि एमआईटी योजना का उपयोग करता है (इसलिए मैंने सुना है)।


2
कुछ साल पहले स्कीम का इस्तेमाल बंद कर दिया - cemerick.com) / 2009/03/24 /…
nate c

@nate c - ya मुझे यकीन नहीं था। फिर भी, पायथन सीखने के लिए बहुत आसान है। इस लिखाई के लिए धन्यवाद!
जेटी

अगर मैं क्लास पढ़ा रहा होता तो मैं अपने छात्रों से पूरी तरह से पंगा ले लेता। मैं आपकी स्वयं की प्रोग्रामिंग भाषा लिखने को प्रोत्साहित करूंगा और आप केवल कक्षा के पाठ्यक्रम के माध्यम से उस प्रोग्रामिंग भाषा का उपयोग कर सकते हैं।
बेर्लिनब्रो 2

1
@ ब्रेलिन - मुझे लगता है कि आप शिक्षक नहीं हैं, तब :)
जेटी १11'११

3

ऊपर दिए गए कई उत्तर अच्छे हैं, लेकिन वे कुछ छोड़ देते हैं।

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

यह जावा का वास्तविक महत्व था जब वह बाहर आया था। मजाक था "कोड एक बार, हर जगह डिबग", लेकिन यह वास्तव में समीकरण से हार्डवेयर और ऑपरेटिंग सिस्टम लेता है।


शायद यह बताता है कि जावा को C, C ++, या C # पर क्यों चुना गया है, लेकिन Ruby और Python (दूसरों के बीच) बस क्रॉस प्लेटफॉर्म का काम करते हैं।
एरिक विल्सन

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

1

मैंने सुना है प्रोफेसरों का कहना है कि वे जावा का उपयोग करते हैं क्योंकि वे पढ़ाने के लिए:

  • नए प्रतिमान का उपयोग करता है (OOP, कुछ जेनरिक)
  • वाक्यविन्यास बहुत सरल है, हालांकि काफी क्रिया है
  • कोई उन्नत अवधारणाएँ जैसे उच्चतर क्रम के कार्य, क्लोज़र, करी या निरंतरता जो लोगों को भ्रमित कर सकती हैं, वे अभी भी बुनियादी अवधारणाओं को सीख रहे हैं
  • इसके लिए बहुत सारे पुस्तकालय लिखे गए हैं
  • छात्रों को डिबगिंग मेमोरी लीक में फंसने की कोई जरूरत नहीं है क्योंकि एक जीसी है

व्यक्तिगत रूप से मुझे खुशी है कि मैं सीएस को बर्कले में ले गया, जब उन्होंने सिखाने के लिए योजना का इस्तेमाल किया। हालाँकि मुझे इस बात का एहसास नहीं था कि कुछ साल बाद तक यह वास्तव में कितनी खूबसूरत थी।


1

थोड़ी पृष्ठभूमि

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

मैं कंप्यूटर इंजीनियरिंग कर रहा था, इसलिए मैंने पहले असेंबली प्रोग्रामिंग की और फिर सी और फिर सी ++, स्कीम और उस एक जावा कोर्स की। यह ज्यादातर सी उन्मुख स्कूल कार्यक्रम था। एल्गोरिदम वर्ग को सी का उपयोग करके सिखाया गया था।

जब मैं उद्योग में गया, तो जावा स्पष्ट रूप से प्रमुख खिलाड़ी था। शायद यह बैकबैंक कॉबोल सिस्टम से जावा वेब बिजनेस एप्लिकेशन में रूपांतरण के दौरान एकमात्र खिलाड़ी था। 2000 के शुरुआती दिनों में जावा ने व्यापार की दुनिया में बहुत प्रगति की।

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

पूर्वव्यापी में, मुझे नहीं लगता कि यह मायने रखता है।

आपके प्रश्न का उत्तर देने के लिए: हम विश्वविद्यालय में जावा का अध्ययन क्यों करते हैं?

जावा को सिखाया जाना चाहिए लेकिन सभी पाठ्यक्रमों में उपयोग नहीं किया जाता है:

यदि आप कंप्यूटर विज्ञान सीख रहे हैं, तो आपको कॉलेज के किसी बिंदु पर जावा सीखना चाहिए। यह व्यापार की दुनिया में लोकप्रिय है। आपको जावा और शायद सी # सीखना चाहिए। मैं ABSOLUTELY जावा को परिचयात्मक प्रोग्रामिंग पाठ्यक्रम के रूप में नहीं सिखाऊँगा। और जावा निश्चित रूप से सभी पाठ्यक्रमों में उपयोग की जाने वाली प्राथमिक भाषा नहीं होनी चाहिए।

जावा आलोचना पर:

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

इसके अलावा, डेवलपर्स C या C ++ पर हमला क्यों नहीं करते? या कम से कम सी ++। अनिवार्य प्रोग्रामिंग प्रतिमान बहुत समान हैं। और मैं कभी भी C ++ में वेबएप लिखने पर विचार नहीं करूंगा लेकिन मैं जावा के साथ हो सकता हूं।

यहाँ बताया गया है कि मैं किस प्रकार एक पाठ्यक्रम की स्थापना करूँगा:

  1. परिचयात्मक पाठ्यक्रम: योजना, पायथन, विधानसभा भाषा, सी (तीनों)
  2. एल्गोरिथम कोर्स: सी, हास्केल, पायथन (तीनों)
  3. ऑपरेटिंग सिस्टम कोर्स / नेटवर्किंग कोर्स: C / C ++
  4. GUI डेवलपमेंट: Win32 पर जावा स्विंग, C ++
  5. ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग: (यह मुश्किल है, मेरे पास OOP कोर्स नहीं होगा)। सी ++, जावा, सी #
  6. Enterprise? विकास: जावा, सी #, पायथन
  7. भाषा डिजाइन, संकलनकर्ता: हास्केल, स्काला, सी, असेंबली, स्कीम, कॉमन लिस्प, प्रोलॉग।

मैंने अपने पाठ्यक्रम में जिन भाषाओं को सूचीबद्ध किया है वे बहुत सामान्य हैं। बहुत सारे स्कूल बिना किसी समस्या के कई भाषाओं को पढ़ा रहे हैं। उद्योग में, आप कई अलग-अलग प्रोग्रामिंग भाषाओं का उपयोग करेंगे। आप उन भाषाओं का उपयोग करेंगे जिनके बारे में आपने सुना भी नहीं है।

स्कूलों में जावा का विषय तब तक कोई समस्या नहीं है जब तक वे आपको जावा से पूरी तरह से अलग नहीं करना चाहते हैं या वे केवल जावा को पढ़ाना चाहते हैं। दोनों ही मामलों में, स्कूल अनुचित हैं।

(सॉरी रूबी लंग)


(-1) "असेंबली लैंग्वेज" "इंट्रोडक्टरी कोर्स" के लिए बहुत जटिल है। मेरा मतलब यह नहीं है कि "इसे मत सिखाओ", मेरा मतलब है "हम इसे पढ़ाएंगे, बाद में"
umlcat

1

क्षमा करें, केवल लंबे बोरिंग उत्तर:

(१) क्या आपका मतलब है:

"हम पहली प्रोग्रामिंग भाषा के रूप में विश्वविद्यालय में जावा का अध्ययन क्यों करते हैं?"

(२) या आपका मतलब है:

"हम विश्वविद्यालय में जावा का अध्ययन क्यों करते हैं, वैसे भी, अगर हम जावा से पहले, अन्य प्रोग्रामिंग भाषा सीखते हैं?"

लगता है जैसे आप वास्तव में दोनों सवालों का मतलब है।

(1) के मामले में:

मुझे नहीं लगता कि जावा (या .NET सी # और विज़ुअल बेसिक) को पहली प्रोग्रामिंग भाषाओं के रूप में पढ़ाया जाना चाहिए। संरचित और मॉड्यूलर पास्कल पहले होना चाहिए, भले ही यह पुराना और पुराना लगता हो।

बहुत से लोग सोचते हैं कि हमें लोगों को ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग या फंक्शनल प्रोग्रामिंग सिखाना चाहिए, सिर्फ इसलिए कि इसका "हाइप" या "ट्रेंड" है।

मैं स्ट्रक्चर्ड पास्कल को "ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग" के एक छोटे संस्करण के रूप में सीखता हूं, कुछ इसी तरह के रूप में नहीं। मैं एक छोटी सी वस्तु के रूप में एक संरचित कार्यक्रम देखता हूं।

उसके बाद, मेरा सुझाव है कि कार्यात्मक भाषाएं और ऑब्जेक्ट पास्कल जारी रखें।

और बाद में, C, C ++, C #, VB.Net, Java।

मुख्य कारण जिन्हें मैं जावा या सी # पसंद नहीं करता, पहली प्रोग्रामिंग लैंग्वेज के रूप में, इसके कि उनके पास "पॉइंटर्स", "पॉइंटर्स टू ऑब्जेक्ट्स" और "ऑब्जेक्ट्स" खुद ("रेफरेंस") कॉन्सेप्ट्स हैं।

मेरा मानना ​​है कि छात्रों को उन अवधारणाओं के बीच अंतर, समानताएं और समानताएं ध्यान में रखनी चाहिए। जावा में स्ट्रिंग्स वस्तुओं की तुलना उस विषमता का एक अच्छा उदाहरण है:

String A = "Mars";
String A = "Venus";

// pointer comparison or object comparison ???
if (A == B)
{
  DoSomething();
}

(2) के मामले में:

मुझे लगता है कि जावा या सी # को स्कूल में पढ़ाया जाना चाहिए, क्योंकि उनके पास कई अद्यतन अच्छी विशेषताएं हैं, और साथ ही, उनके पास वास्तविक दुनिया का उपयोग है।


0

यदि आप कंप्यूटर विज्ञान सीख रहे हैं, तो आपको कॉलेज के किसी बिंदु पर जावा सीखना चाहिए। यह व्यापार की दुनिया में लोकप्रिय है। आपको जावा और शायद सी # सीखना चाहिए। मैं ABSOLUTELY जावा को परिचयात्मक प्रोग्रामिंग पाठ्यक्रम के रूप में नहीं सिखाऊँगा। और जावा निश्चित रूप से सभी पाठ्यक्रमों में उपयोग की जाने वाली प्राथमिक भाषा नहीं होनी चाहिए।

मैं इससे ज्यादा असहमत नहीं हो सकता। मेरे कॉलेज में जावा भाषा थी जिसे आपको मेरे स्कूल में CS & E प्रोग्राम में लाने के लिए लेना था। जावा सिखाना बेहद आसान है। क्योंकि आप अपने आप को कुछ अवधारणाओं तक सीमित कर सकते हैं जो "गैर-प्रोग्रामर" सीख सकते हैं।

मैं यह भी नहीं बता सकता कि आप एक परिचयात्मक प्रोग्रामिंग कोर्स के रूप में जावा को सिखाएंगे या नहीं। आपने मूल रूप से कहा था कि आप इसे पढ़ाना नहीं छोड़ेंगे

सरल कारण पहले ही समझाया जा चुका है। जावा की कोई लाइसेंस फीस नहीं है। आप इसे एक मूल परीक्षण संपादक का उपयोग करके सिखा सकते हैं। इसका उपयोग निश्चित रूप से गलत कारणों के लिए किया जाता है।

मैं एक पिछले उत्तर से असहमत हूं, कि जावा ने छात्रों को "डम्बर" पास नहीं किया है, यह वास्तव में दिखाता है जब उन्हें सी + + में सरणियों और सूचियों जैसी वास्तविक सरल अवधारणाओं के साथ समस्या होती है।


मैं इंगित करता हूं कि अज्ञानता "गूंगा" होने के समान नहीं है। "पासिंग" जावा वाले लोग उन "सरल अवधारणाओं" को नहीं जान सकते क्योंकि उन्हें सिखाया नहीं गया था। इसका मतलब यह नहीं है कि अगर उन्हें यह पता लगाने में कुछ समय लगता है, कि उन्हें यह नहीं मिलेगा।
जेटी १

0

C से Java का स्विच गलत समय पर हुआ ।

कहीं 2000 के आसपास। मैं अपने विश्वविद्यालय में अंतिम सी कक्षा में था।

  • C ++ में बहुत सारी विशेषताएं थीं जो नौसिखिए को भ्रमित नहीं करने के लिए थीं । (और यह अभी भी करता है। और कुछ को जोड़ने की योजना है।)

  • .NET पर्याप्त परिपक्व नहीं था और आज की तुलना में अधिक महंगा था।

  • ऑब्जेक्टिव C पुराना था और Apple का इसका उपयोग रडार के नीचे उड़ रहा था ( आसपास कोई iPhone नहीं था )


समय पर अन्य .NET मुद्दे? कोई पोर्टेबल रनटाइम - कोई मोनो उपलब्ध नहीं था ।
ZJR

कोई पाठ-संपादक तटस्थता नहीं। ( पाठ संपादक युद्ध बदसूरत हैं, लेकिन वास्तविक हैं) और एक डिफ़ॉल्ट आईडीई जो छात्रों को बॉयलरप्लेटिंग में लिप्त बनाता है ।
ZJR

BTW, मुझे लगता है कि दुनिया ने ऑब्जेक्टिव C का रास्ता अपनाया होगा, Apple उस बॉलपार्क में अकेला बच्चा नहीं होगा और यहां तक ​​कि उसका बिजनेस मॉडल भी थोड़ा कम नहीं होगा।
जेडजेआर

0

मैं यहाँ उत्तरों को जोड़ने के लिए मजबूर महसूस करता हूँ क्योंकि मैं वास्तव में इनमें से किसी भी उत्तर को वास्तव में अपने परिप्रेक्ष्य को कवर नहीं करता हूँ।

मैं एक शौक़ीन प्रोग्रामर हूँ। जब यह 'कंप्यूटर' और 'प्रोग्रामिंग' की बात आई तो मैं कर्व से आगे था। मैंने अपना अंडरग्रेजुएट - बैचलर्स - 2007 में और मास्टर्स लगभग दो साल बाद - 2009 में पूरा किया। मैंने असेंबली, क्विकबैसिक, सी, सी ++, जावा, पीएचपी, पर्ल, पायथन, बैश स्क्रिप्स, जावास्क्रिप्ट, कोबोल आदि भाषाओं के ढेरों के साथ काम किया है। ।

IMHO, छात्रों को प्रोग्रामिंग सिखाने के लिए जिस भाषा का उपयोग किया जाता है, वह उस समय का सूचक है, जिस समय हम वर्तमान में रह रहे हैं। उदाहरण के लिए, 1980 के दशक के दौरान, असेंबली निम्न-स्तरीय भाषा थी, जबकि C को एक उच्च स्तरीय भाषा माना जाता था।

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

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

मैं एक और बात का भी उल्लेख करना चाहूंगा कि सी को चीजों को सही करने के लिए बहुत अनुशासन की आवश्यकता है जबकि जावा जैसी भाषाएं इस तरह की बाधाओं के बारे में थोड़ा आराम करती हैं। किसी छात्र के कार्यक्रम को डिबग करने के लिए GDB लॉन्च करने के लिए RA / TAs की आवश्यकता के बिना पाठ्यक्रम का संचालन करना आसान बनाता है :)


0

मुझे लगता है कि इसका एक बड़ा हिस्सा उद्योग में इसका इस्तेमाल हो रहा है।

मेरे सीएस कार्यक्रम में एक औद्योगिक सलाहकार बोर्ड था, जो स्थानीय तकनीक और एयरोस्पेस कंपनियों के वरिष्ठ कर्मचारियों से बना था, और उनके पास पाठ्यक्रम में बहुत सारे इनपुट थे। इंट्रो सीएस क्लासेस ने पास्कल को उस साल सी के पक्ष में गिरा दिया, जिसे मैंने (1986) शुरू किया था, मोटे तौर पर आईएबी के इशारे पर। इसी तरह, कुछ उच्च-स्तरीय पाठ्यक्रमों में एडीए को पढ़ाने के लिए एक धक्का था क्योंकि स्थानीय एयरोस्पेस कंपनियों को इसे DoD कार्य के लिए उपयोग करना था।

जावा के सुंदर सर्वव्यापी, विशेष रूप से अब जब कि एंड्रॉइड डिवाइस बंद हो रहे हैं। यह एक शिक्षाप्रद दृष्टिकोण से बेकार है, लेकिन तब, सी।


0

क्योंकि उन्हें उम्मीद है कि कम छात्र पाठ्यक्रम को विफल कर देंगे, जो कि अपने आप में एक विफलता है, IMHO। शायद कारणों में से एक है कि लगभग कोई भी विश्वविद्यालय की डिग्री को गंभीरता से नहीं लेता है, कम से कम यहां।

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

हां, यह OOP अवधारणाओं और खिलौने की समस्याओं के लिए अच्छा है, लेकिन यह गलत कोण से समस्याओं का दृष्टिकोण करना सिखाता है। यहां स्वच्छ निर्माण का उपयोग करें, बाकी को पेंच करें।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.