हर कंप्यूटर साइंस छात्र को कौन सी प्रोग्रामिंग लैंग्वेज सिखाई जानी चाहिए?


13

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

नोट / स्पष्टीकरण : यह सवाल कंप्यूटर विज्ञान के बारे में है कि सॉफ्टवेयर इंजीनियरिंग पर भारी ध्यान दिया जाता है, न कि शुद्ध कंप्यूटर विज्ञान पर। यह अभी भी कंप्यूटर विज्ञान की शिक्षा है, न कि सॉफ्टवेयर इंजीनियरिंग शिक्षा का जो फोकस है।


13
सीएस के लिए पुसीडो-कोड पर्याप्त होना चाहिए।
15

12
@Xepoch - असहमत। यह छद्म कोड का उपयोग करते हुए उत्सुक बनाम आलसी मूल्यांकन शब्दार्थ, सह-हस्ताक्षर / श्रेणी सिद्धांत, श्रेणी सिद्धांत आदि में व्यक्त करने के लिए विशेष रूप से स्वाभाविक नहीं है। छद्म कोड एल्गोरिदम और डेटा संरचनाओं का वर्णन करने के लिए बहुत अच्छा है, लेकिन सीएस की तुलना में बहुत अधिक है।
ऐदन कल्ली

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

2
उन्हें सभी । यदि समय सीमित है, तो वर्णमाला के अक्षरों में शुरू करें। ए +, बी, सी, सी #, डी, ई, एफ #, जे, के, क्यू, आर, टी ... यह एक बुरी सूची नहीं है, वास्तव में।
जेसी मिलिकन

6
"कौन सी भाषा" के एक और संस्करण की खोज के लिए बधाई? सवाल। मैं सभी राय पढ़ने के लिए इंतजार नहीं कर सकता। SICP के संदर्भ को न भूलें। ओह रुको, वहाँ यह है।
कॉर्बिन मार्च

जवाबों:


21

मैं एक सूची देने जा रहा हूँ:

  • सभा (एक अपेक्षाकृत सरल बोली): यह कम से कम एक समझना महत्वपूर्ण है थोड़ा बुनियादी बातों की
  • सी: प्रक्रियात्मक भाषा, कई स्थानों पर उपयोग की जाती है। नए छात्रों पर एक साथ OOD जैसी नई अवधारणाओं का बोझ नहीं डालता।
  • जावा / सी # / एफिल / सी ++: कुछ ऑब्जेक्ट ओरिएंटेड अच्छा है, इनमें से कोई भी छात्रों को ओओडी सिखाने का लक्ष्य पूरा करेगा और एक बार इन भाषाओं में से किसी एक को समझने के बाद, उन्हें दूसरों को सीखने में सक्षम होना चाहिए .. कई हैं अच्छी भाषाएं, मैंने एफिल को सूचीबद्ध किया क्योंकि इसमें डिज़ाइन-बाय-कॉन्ट्रैक्ट भी है।
  • LISP और प्रोलॉग: छात्रों को सोचने के लिए एक नया तरीका सिखाता है, जो कि बहुत ही गलत है, भले ही वे "वास्तविक दुनिया में" इन दोनों में से किसी का भी उपयोग न करें।
  • SQL और XML: डेटा के बारे में सोचने और इसे पुनः प्राप्त करने और इसे प्रबंधित करने के नए तरीकों का परिचय देता है।

छात्रों को इन सभी प्रतिमानों से बहुत कम से कम अवगत कराया जाना चाहिए । सिर्फ एक या दो नहीं।

मुझे लगता है कि कई लोग पायथन को प्रक्रियात्मक शैली, ओओपी शैली, और शायद दूसरों को कवर करने का सुझाव देंगे, लेकिन मेरे पास पर्याप्त व्यक्तिगत अनुभव नहीं है कि मैं विश्वास करने में सक्षम हो।


मैं वास्तव में चाहता हूं कि मेरा स्कूल एक्सएमएल और एसक्यूएल पर अधिक विस्तार से चला गया था, हमारे पास एक वर्ग था जो दोनों में चला गया और यह टेररिड था।

मैं लुआ, पायथन, जावास्क्रिप्ट आदि जैसी आधुनिक गतिशील भाषाओं को जोड़ूंगा
जेवियर

4
आह, कुछ हार्डकोर फंक्शनल भी, जैसे हैस्केल और इरलैंग बहुत शैक्षिक हैं
जेवियर

1
एसक्यूएल लिस्टिंग के लिए +1। कम से कम आप संबंधपरक बीजगणित के बारे में सोच रहे हैं।
जेई कतार

1
मैं अनवांटेड OO, C ++ और Java से अलग प्रबंधित करूंगा । जबकि मैंने कभी भी मॉल, ढेर और स्टैक के बारे में जानने के बिना यूआई के बाद से सी ++ का उपयोग नहीं किया है, आप कभी भी ओओ को अच्छी तरह से समझ नहीं पाएंगे।
1

45

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


2
+1 मेरी प्रोग्रामिंग लैंग्वेज क्लास आसानी से मेरे द्वारा ली गई सबसे मूल्यवान क्लास थी।
HappyCodeMonkey

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

1
कुछ हद तक संबंधित: youtube.com/watch?v=Ps8jOj7diA0 स्टैनफोर्ड ने YouTube पर अपने संपूर्ण प्रोग्रामिंग पैराडाइम 2008 व्याख्यान दिए हैं।
इनामाथी

4
सूची में घोषणात्मक जोड़ें (प्रस्तावना)। इसके अलावा कुछ भाषाएँ स्पष्ट रूप से समानांतर हैं (ओकाम)। छात्रों को यह सिखाना कि समानता कैसे काम करती है, यह अच्छा होगा (कोई भी इसे सही नहीं करेगा)।
मार्टिन यॉर्क

1
@ मर्टिन यॉर्क: प्रोलॉग एक लॉजिक प्रोग्रामिंग भाषा है, जो एक प्रकार की घोषणात्मक भाषा है। (मैं इसे कार्यात्मक प्रोग्रामिंग भाषाओं के रूप में भी घोषित करता हूं, आम तौर पर बोल रहा हूं।)
मिपाड़ी

33

मुझे लगता है कि एक अच्छी तरह से संतुलित सीएस छात्र को 4 प्रोग्रामिंग भाषाओं में से प्रत्येक में एक भाषा सिखाई जानी चाहिए:

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

ऑब्जेक्ट-ओरिएंटेड - अपनी पिक लें। सी # / जावा / पायथन / रूबी / यद्दा यद्दा यद्दा। इस प्रकार को केवल इसलिए सिखाया जाना चाहिए क्योंकि यही आधुनिक व्यवसाय चाहता है।

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

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


6
आप उस सूची में प्रोटोटाइप जोड़ना चाह सकते हैं - उदाहरण के लिए, जावास्क्रिप्ट।
स्टसमिथ

@stusmith - प्रोटोटाइप एक उल्लेख के लायक है, लेकिन यह वास्तव में ऑब्जेक्ट-ओरिएंटेड भाषाओं का सबसेट है, और जावास्क्रिप्ट सबसे अच्छा एक सीमित उदाहरण है। मैं इसे प्रोग्रामिंग भाषाओं के पाठ्यक्रम में शायद एक होमवर्क असाइनमेंट मानूंगा, लेकिन फोकस नहीं।
जोएल एथरटन

1
प्रोलॉग के लिए +1। मैंने इसका व्यावहारिक उपयोग देखा है और मैं नियमित रूप से प्रोटोटाइप एल्गोरिदम का उपयोग करता हूं।
फ्रेड फू

@larsmans - मुझे इसके उपयोग के बारे में सुनने में दिलचस्पी होगी। मैंने इसे कई वर्षों में नहीं छुआ है इसलिए मैं इसके अच्छे व्यावहारिक अनुप्रयोगों पर फ़र्ज़ी हूं। क्या आपके पास वाइटपर या इसी तरह के लेख के लिए कोई लिंक है?
जोएल एथरटन

ECLiPSe ( eclipseclp.org ) की जांच करें , एक खुला स्रोत प्रोलॉग बोली कई बड़ी यूरोपीय कंपनियों (फ्रांसीसी रेलवे कंपनी एसएनसीएफ के एओ द्वारा औद्योगिक रूप से उपयोग की जाती है, अगर मुझे सही याद है, तो मैं कोशिश करूँगा और एक संदर्भ पाऊंगा)।
फ्रेड फू

6

# 1 भाषा जिसे हर स्नातक सीएस को जानना चाहिए वह वह है जो किसी महान नौकरी के लिए अपनी क्षमता को अधिकतम करता है। यह समय के साथ बदलने जा रहा है, यह महान काम की व्यक्तिगत परिभाषा के आधार पर बदलने जा रहा है , और यह भौगोलिक क्षेत्र के अनुसार भिन्न होने जा रहा है।

फिलहाल, मैं कहूंगा कि अंग्रेजी # 1 भाषा है जिसे हर सीएस को जानना चाहिए (यह, निश्चित रूप से, भिन्न होता है)।


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

2
अंग्रेजी के लिए +1। कंप्यूटर भाषा कार्यान्वयन विवरण हैं।
व्याट बार्नेट

+1। अगर कोई अच्छी तरह से अंग्रेजी सीख सकता है, तो वह अच्छी तरह से मैनुअल सीख सकता है। मैं अंग्रेजी अच्छी तरह से जानता था। मुझे कोई भी भाषा सीखने में कोई समस्या नहीं थी।
शिप्लू मोकादिम

4

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

  • एक भाषा के साथ अनुभव का कुछ स्तर जहां आपको स्मृति प्रबंधन पर ध्यान देना होगा (C / C ++ और कई अन्य)
  • API उपयोग और उपलब्ध विभिन्न सार (C ++ / Java) पर अपेक्षाओं के साथ एक वस्तु उन्मुख भाषा के साथ अनुभव का कुछ स्तर
  • एक "खिंचाव" भाषा - ऐसा कुछ जो अजीब, कठोर और चुनौतीपूर्ण है। मैं भाड़े पर नहीं जा रहा हूं क्योंकि कोई व्यक्ति LISP, असेंबली या किसी अन्य चुनौतीपूर्ण भाषा को जानता है, लेकिन मैं यह देखना चाहता हूं कि इंजीनियर को किसी तरह की चुनौती का सामना करना पड़ा जिसमें गंभीर समस्या को हल करना और "क्या यह बिल्ली है?" क्षणों।

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


4

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

  • योजना, बेहतर ढंग से लंबोतरा पथरी को समझने के लिए
  • एर्लांग, अभिनेता मॉडल को समझने के लिए
  • प्रस्तावना, तर्क और प्रमाण प्रणाली को विधेय के लिए
  • Haskell, प्रकार / श्रेणी के सिद्धांत के लिए, और क्योंकि आलसी मूल्यांकन भाषा में पूरी तरह से व्यक्त किया गया है
  • कम से कम एक विधानसभा भाषा - यदि आप इसे इस बैनर के तहत गिनना चाहते हैं, तो मैं भी बाइट-कोड भाषा में जावा या सीएलआर बाइट-कोड और LLVM IR की तरह फेंक दूंगा
  • शायद एक हार्डवेयर परिभाषा भाषा, जैसे वेरिलोग, या वीएचडीएल
  • संकलक-निर्माण वर्ग के लिए बायसन
  • एक गतिशील प्रकार प्रणाली के साथ कुछ (रूबी मन में आता है) ...

सूची इस तरह से चल सकती है, लेकिन मौलिक विचार बहुत सरल है: छात्रों को प्रोग्रामिंग भाषा सिखाएं जो कि अवधारणाओं को पढ़ाने के तरीके के लिए सबसे उपयुक्त होगी।


3

याक

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


2

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


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

2

मुझे लगता है कि भाषा उतनी महत्वपूर्ण नहीं है जितना लोग मानते हैं।

हां, आपको यह जानने की जरूरत है कि कैसे प्रोग्राम किया जाए आदि, लेकिन कई महान प्रोग्रामर अपने वास्तविक दुनिया के अनुभवों पर स्वयं-सिखाया ड्राइंग हैं जो उन्हें विकसित करने में मदद करते हैं।

छात्र वास्तविक दुनिया में प्रोग्रामिंग के बारे में कुछ सबक के साथ कर सकते हैं और न केवल पुस्तक के तरीकों से, यह उन्हें और अधिक "गोल" और मेरे विकल्प में बेहतर डेवलपर्स / स्नातक बना देगा।

मैंने विश्वविद्यालय छोड़ने और काम शुरू करने के बाद प्रोग्रामिंग और सॉफ्टवेयर विकास के बारे में अधिक जानकारी प्राप्त की!


2

क्या यह वास्तव में मायने रखता है ?

आमतौर पर इस सवाल के पीछे की खुजली है "मैं अपने रेज़्यूमे पर क्या बोल सकता हूं जो मुझे सबसे आकर्षक / दिलचस्प / चुनौतीपूर्ण / आसान काम देगा?" यद्यपि प्रश्न में योग्यता होती है, लेकिन सबसे पहले फिर से शुरू एचआर लोगों द्वारा जांच की जाती है कि वे क्या देख रहे हैं, इसकी कोई समझ नहीं है। लेकिन यह बहुत उथला है, क्योंकि एक बार जब आप गेट्स पास कर लेते हैं तो आपको सामान देने की आवश्यकता होती है।

यह नहीं है कि आप कौन सी भाषाएं जानते हैं जो आपको एक अच्छा या बुरा प्रोग्रामर बनाती हैं, यह है कि आप इसका उपयोग कैसे कर सकते हैं। इसके लिए मूल रूप से प्रोग्रामर की दो श्रेणियां हैं:

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

  2. फिर ऐसे लोग हैं जो तकनीक और प्रतिमानों के बारे में सीखना चाहते हैं। वे किस भाषा का उपयोग करते हैं, यह वास्तव में तब तक मायने नहीं रखता है जब तक कि यह उनकी मानसिक तस्वीर को सुरुचिपूर्ण ढंग से व्यक्त कर सके। चरम पर ये यूएमएल या अन्य ऐसी प्रणालियों का उपयोग करने की उम्मीद करेंगे, जो दूसरों से यह उम्मीद करेंगे कि यह कोडिंग का गंभीर काम करेंगे।

मेरी राय में आपको दोनों की आवश्यकता है। # 1 अल्पावधि कौशल प्रदान करेगा और जब बुद्धिमानी से चुना जाएगा तो आपको एचआर फाटकों के माध्यम से आसानी होगी लेकिन # 2 आपके पूरे करियर में आपके साथ रहेगा और आपको एक प्रोग्रामर के रूप में परिभाषित करेगा।

# 2 मार्गदर्शन प्रदान करेगा और हाथ में समस्या के समाधान के लिए विचार की अपनी ट्रेन को व्यवस्थित करेगा लेकिन 1 के बिना यह एक विचार है, हमेशा के लिए वाष्पवेयर स्वर्ग (या जहां आप इसे देखते हैं उसके आधार पर नरक) के अंगों में तैर रहा है।

# 1 आपको विचारों को वास्तविक कार्य प्रणालियों में लागू करने का साधन देगा लेकिन 2 के बिना आपके सिस्टम कैंसर रहित आकारहीन राक्षसों की ओर बढ़ेंगे।


हाँ, यह मायने रखता है। आपके द्वारा सीखी जाने वाली पहली भाषा आपके मस्तिष्क को इस बारे में बताती है कि आप भविष्य की भाषाओं को कैसे देखेंगे।

1

मेरा मानना ​​है कि आपने आंशिक रूप से अपने प्रश्न का उत्तर दिया।

वास्तविक महत्व छात्रों को कई प्रतिमानों के संपर्क में आने का अवसर देना है, वास्तविक भाषाओं को कोई फर्क नहीं पड़ता।

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

इसलिए संक्षिप्त:

OOP: .NET या Java

छात्र को अन्य तरीकों से अवगत कराने के लिए कम से कम 1 अतिरिक्त प्रोग्रामिंग प्रतिमान।

कार्यात्मक: लिस्प?


कार्यात्मक, नहीं, कृपया, LISP नहीं। बल्कि: हैस्केल।
मारीतोमो

1

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

बुनियादी या लोगो या चीख़ (et.al.), यदि वे कभी समझना चाहते हैं कि छोटे बच्चों को कुछ कंप्यूटर साक्षरता कैसे सिखाई जाए।

फोरट्रान, कोबोल और लिस्प, अगर वे प्रोग्रामिंग भाषाओं के इतिहास को समझना चाहते हैं, और क्या वास्तविक समस्याएं हैं जो आधुनिक प्रथाओं को ठीक करती हैं।


और सी, इसलिए आप सभी खुले स्रोत कोड के 90% को समझते हैं जो आप अध्ययन कर सकते हैं।
राइटफॉल्ड

1

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


1

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

क्लासिक भाषा फोर्थ है , लेकिन इन दिनों मेरी गो- फैक्टर है । यह भी जाँच के लायक है जोय और कैटसुरीली भाषा विकि को याद न करें । यह हथौड़ों से भरे बैग से ज्यादा मजेदार है!


0

कुछ कार्यात्मक, हास्केल या लिस्प मेरी पहली पसंद होगी, लेकिन शायद एर्लैंग। कार्यात्मक भाषाएं वास्तव में आपको सिखाती हैं कि बहुत शक्तिशाली तरीके से अमूर्तता का निर्माण कैसे करें।


लेकिन क्या छात्रों को एक प्रतिमान तक सीमित होना चाहिए? स्काला जैसी कार्यात्मक ओओपी भाषाओं के बारे में क्या?
Anto

1
बिल्कुल नहीं, मैं मान रहा था कि अन्य लोग उन लोगों के लिए पाइप करेंगे!
Zachary K

0

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

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


0

स्यूडोकोड।

क्षेत्र के लोगों को अपने विचारों को एक सुसंगत, संरचित तरीके के बिना और रूपरेखा-या शब्द-विशेष के शब्दजाल में समझाने में सक्षम होना चाहिए। मुझे आपके एल्गोरिथ्म को समझने के लिए आपके वर्ग कोष्ठक और ब्रेसिज़ के बीच का अंतर नहीं जानना चाहिए। मुझे यह जानने की जरूरत नहीं है कि क्या ??मतलब है, या grepस्विच क्या हैं।

सादे भाषा में लिखें, लेकिन संरचना और इसे कोड की तरह प्रारूपित करें। इसके बाद कोई भी जिस भी भाषा में चाहे उसे लागू कर सकता है।

संपादित करें: यह उत्तर आंशिक रूप से कुछ प्रोग्रामर्स की अक्षमता से छद्मकोड लिखने के लिए प्रेरित है।

"बस एल्गोरिथ्म को छद्मकोड में लिखें"

"वह क्या है?"

स्यूडोकोड का लाभ यह है कि गैर-प्रोग्रामिंग हितधारक इसे समझ सकते हैं। मेरा सुझाव है कि आप बीए और उपयोगकर्ताओं को अपने कोड का प्रमाण देना चाहते हैं, हालांकि यह तब मदद कर सकता है जब एक गैर-प्रोग्रामर को आवश्यक एल्गोरिथ्म की समझ हो। Psuedocode समझाने की आवश्यकता को हटाता है for (int i = 0; i < j; i++)और अनिवार्य रूप से बॉयलरप्लेट शब्दजाल क्या है।


कई प्रोग्रामिंग भाषाएं इतनी शक्तिशाली हैं कि वास्तविक कोड और छद्म कोड के बीच बहुत कम अंतर है। वास्तविक प्रोग्रामिंग भाषाओं के कौन से वाक्यविन्यास तत्व आप पर आपत्ति करते हैं?
केविन क्लाइन

@kevin cline - मैं उन सिंटैक्स तत्वों के साथ सहज हूं जिन्हें मैं जानता हूं - यह वही है जो मुझे नहीं पता है कि मुझे इस पर आपत्ति हो सकती है। बेशक मैं उन्हें समझने में सक्षम हूं, लेकिन मुद्दा यह है कि स्यूडोकोड में वे मुद्दे नहीं होने चाहिए (मैं अभी तक एक प्रोग्रामिंग भाषा देख रहा हूं जो वास्तव में स्यूडोकोड जैसा दिखता है)
किर्क ब्रॉडहर्स्ट

0

सी।

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

बेशक, किसी को एक से अधिक भाषा पता होनी चाहिए, न कि केवल एक पुरानी प्रक्रियात्मक भाषा। लेकिन अगर मुझे केवल एक कंपाइलर के साथ एक रेगिस्तानी द्वीप पर जाना था, तो मैं अपने अच्छे पुराने जीसीसी के साथ जाऊंगा। यदि आप निम्न-स्तरीय प्रोग्रामिंग के बारे में जानते हैं, तो आप उच्च-स्तरीय प्रोग्रामिंग को समझ सकते हैं। मुझे लगता है कि यह दूसरी तरह से सच नहीं है।


0

प्रोग्रामिंग की कुछ भाषाएं जो सामान्य समस्या सुलझाने के कौशल प्राप्त करने के लिए लागू होती हैं, और प्रोग्रामिंग अवधारणाएं लोगो और करेल हैं, उन्हें C / C ++ / Java / Lisp / PERL / विधानसभा / जो भी प्रोग्रामिंग प्रतिमान से पहले सिखाया जाना चाहिए।

छात्रों को प्रोग्रामिंग के लिए एक बहुत ही व्यावहारिक परिचय मिलता है।


-1

वस्तुओं के साथ कुछ भी। बस सुनिश्चित करें कि वे इसे अच्छी तरह से सीखते हैं।

मैं किसी भी समय c # के लिए एक महान जावा प्रोग्रामर को काम पर रखूंगा, लेकिन मुझे किसी ऐसे व्यक्ति को काम पर रखने में बहुत संदेह होगा जिसने कभी वास्तविक कोड नहीं लिखा था

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