आदर्श प्रोग्रामिंग भाषा सीखने का क्रम? [बन्द है]


17

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

ध्यान दें: यह सवाल मैं में पूछा के बंदरगाह है stackoverflow और व्यक्तिपरक और तार्किक होने के लिए बंद हो गया।


बड़ा सवाल है। यदि यह प्रश्न प्रदर्शन उन्मुख होता तो उत्तर क्या होते? मैं उत्सुक हूं: प्रोग्रामर.स्टैक्सएक्सचेंज /
कंटेंट

4
मैं बहुत हैरान और प्रसन्न हूं कि लिस्प आमतौर पर उच्च रैंकिंग वाले सवालों पर दिखाई देता है।
इनामाथी

1
यह सवाल यहाँ भी पूछा गया था (हालाँकि मुझे लगता है कि यह पहले आया था): programmers.stackexchange.com/questions/41720/…
oosterwal

इस लिंक को यहाँ सेव करना है- streamhead.com/what-programming-language-to-learn-next
Gulshan

जवाबों:


26

पायथन, लिस्प, सी, हास्केल

सवाल यह मानते हुए प्रोग्रामिंग (के बाद से प्रोग्रामिंग में पुराने हाथ अपने स्वयं के (संभावना आकस्मिक पड़ा है जाएगा) अनुक्रम सीखने), मैं पढ़ने का सुझाव चाहते हैं उनके नए लोगों के लिए एक आदर्श सीखने अनुक्रम के बारे में था कि कैसे 10 साल में प्रोग्रामिंग जानने के लिए आगे Norvig द्वारा लिखे गए निबंध , तो:

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

  2. लिस्प: विशेष रूप से, कंप्यूटर प्रोग्राम की संरचना और व्याख्या को कम से कम स्किम करें या एसआईसीपी वीडियो देखें , और प्रोग्रामिंग की नींव और अभिव्यंजक शक्ति को देखकर किसी की आँखें बहुत चौड़ी हो गई हैं - कोई भी बहुत कम के साथ ऐसा कर सकता है। जानें कि लिस्प न केवल कार्यात्मक प्रतिमान को कैसे व्यक्त कर सकता है, बल्कि ओओ, तार्किक / घोषणात्मक, और अधिक - जैसे नए डोमेन-विशिष्ट भाषाओं का निर्माण। भाषा के साथ एक मास्टर क्या कर सकता है, यह जानने के लिए नॉरविग पीएआईपी पढ़ें । फिर क्लजुरे की जांच करें , एक आधुनिक लिस्प बोली जो अगली बड़ी चीजों में से एक हो सकती है।

  3. C: केवल इसलिए कि यह कंप्यूटिंग का लिंगुआ-फ्रेंका है। :) संभवतः इन दिनों वैकल्पिक यदि कोई मुख्य रूप से एक विशेष गैर-सॉफ्टवेयर डोमेन में एक प्रोग्रामर है। मुझे यह बदसूरत लगता है लेकिन अंतर्निहित हार्डवेयर के लिए प्रशंसा पाने के बारे में जानने के लायक है। K & R के साथ जाएं , अवश्य।

  4. हास्केल : शुद्ध कार्यात्मक शक्ति। जहां वर्तमान। Com। सिद्धांत और व्यावहारिक अभिव्यंजक शक्ति मिलते हैं। रियल वर्ल्ड हास्केल देखें ।

उपरोक्त दौरे के बाद, किसी को भी समस्याओं से निपटने में और कोड में समाधान व्यक्त करने में बहुत संदेह होगा, और यहां के प्रतिमानों के साथ पूरी तरह से सहज होंगे :

वैकल्पिक शब्द


मैं (स्वाभाविक रूप से) पायथन के लिए स्मालटॉक को # 1 के रूप में स्थानापन्न करता हूं, लेकिन मैं कहता हूं कि यह जानकर कि पायथन (ए) स्मालटाक की तुलना में बेतहाशा लोकप्रिय है और यह (बी) अन्य भाषाओं से बात करने के लिए स्मॉलटॉक को जावा में उतना ही मुश्किल है। , जो एक नौसिखिया को हताश करने के लिए काफी कठिन कहना है। पायथन की "पटकथा" काफी बड़े लाभ की तरह दिखती है।
फ्रैंक शियरर

मैं आपके उत्पादकता कथन से सहमत हूं। मुझे लगता है कि C को पूर्ण प्रथम भाषा के रूप में सीखना बोल्ट का भार है। लेकिन यह निश्चित रूप से स्टैक में कहीं होना चाहिए।
मार्क कैनलास

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

2
1-पूर्ण आकार के आरेख पर क्लिक करें @ i54.tinypic.com/168ity1.jpg
माइक क्लार्क

मैं इसे +1 करूँगा यदि C सूची में नहीं था
Balog Pal

28

मैं इसे कैसे करूंगा:

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

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

  3. विधानसभा : अंत में, कोई जादू नहीं, आप सिर्फ मशीन से बात करते हैं। इंटेल और जीएएस सिंटैक्स के बारे में एक बहस है, यह महत्वपूर्ण नहीं है। यदि आपके पास MIPS है, तो मेरा मानना ​​है कि शिक्षण के लिए यह बेहतर है, लेकिन मुझे लगता है कि x86 अधिक सुविधाजनक है क्योंकि यह अधिक व्यापक है (x86_64 बेहतर है क्योंकि इसमें अधिक रजिस्टरों और बारीकियां हैं)। आपको बस कुछ जटिलताएं दूर करनी हैं और यदि वे चाहें तो छात्रों को आगे की जांच करने दें।

(ये पहले 3 "गहराई" हैं। अब तक, हम नीचे तक जा रहे हैं जब तक आप नीचे नहीं छूते हैं, जो "धातु के करीब" है, जैसा कि वे कहते हैं। मुझे लगता है कि यह बहुत महत्वपूर्ण है, प्रोग्रामिंग में कई सवाल हैं। हल क्या है जब आपके पास स्पष्ट विचार है कि क्या हो रहा है। जब आप यह जानते हैं, तो आप विश्वास के साथ आगे का ज्ञान प्राप्त कर सकते हैं।)

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

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

  3. फोर्थ : एक स्टैक भाषा। यह आपके तर्क को पूरी तरह से तोड़ देता है (यदि लिस्प और हास्केल पर्याप्त नहीं था)। मैं जोंस फोर्थ को पढ़ाने के लिए जाऊंगा क्योंकि वे विधानसभा जानते हैं और फिर आप पूरी तरह से समझ सकते हैं कि क्या चल रहा है। (फोर्थ जानने से पोस्टस्क्रिप्ट खुल जाता है, उदाहरण के लिए।)

(तो ये अंतिम 3 वे चौड़ाई हैं जो आप कह रहे थे। मेरे लिए, ये भाषाएं काफी अजीब हैं कि वे आपके सोचने के तरीके को बदल देती हैं। उन्होंने कम से कम मेरे लिए किया। और मुझे लगता है कि आप एक नया सीखने के लिए पर्याप्त प्रतिमानों को समझते हैं। बहुत जल्दी।)

वैकल्पिक रूप से, आप इनका अध्ययन कर सकते हैं:

  1. SmallTalk : एक विशुद्ध रूप से ऑब्जेक्ट ओरिएंटेड भाषा। यह देखने के लिए कि जब आप ऑब्जेक्ट ओरिएंटेशन को गंभीरता से लेते हैं, तो भाषा को "यदि", "के लिए" की आवश्यकता नहीं है। सब कुछ एक संदेश है: फिर से बड़ा अहसास। (इससे अब ऑब्जेक्टिव-सी आसान होगा।)

  2. गो : एक (सुंदर) भाषा जो संगति पर जोर देती है। मुझे लगता है कि गो के साथ कार्यक्रम करना बहुत अच्छा और आरामदायक है।

  3. प्रोलॉग : प्रोग्रामिंग का एक और प्रतिमान। मैंने कोई प्रोलॉग नहीं लिखा है, लेकिन मैं समझता हूं कि यह अभी तक एक और मन झुकने वाली भाषा है।


6
पायथन और रूबी (मैं लूआ के बारे में नहीं जानता) दृढ़ता से टाइप की जाने वाली भाषाएं हैं। मुझे लगता है कि आपका मतलब है कि वे सांख्यिकीय रूप से टाइप किए जाने के बजाय गतिशील हैं।
डैनियल रोजमैन 12

13
कृपया C और C ++ को दो अलग-अलग भाषाओं के रूप में मानें।
डेविड थॉर्नले

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

1
मैं किसी के लिए यह तर्क देना चाहूंगा कि क्या विधानसभा C ++ से पहले होनी चाहिए। उस समय, सरल अवधारणाओं और प्रदान किए गए औजारों के एक छोटे समूह के कारण, विधानसभा तक पहुंचना काफी आसान होगा, फिर भी C ++ से संपर्क करते समय कच्ची मेमोरी और रॉ मेमोरी रेफरेंस के साथ काम करना बहुत सहायक होना चाहिए, जहां दोनों मनमाने तरीके से संबोधित करने के लिए नाममात्र संदर्भों का उपयोग किया जा सके मेमोरी लोकेशन और वैल्यू ज्यादातर लोगों में से श * को भ्रमित करता है।
फिलिप डुपनोविक

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

12
  • जिसकी आपको अभी जरूरत है
  • जिसकी आपको जरूरत है
  • उसके बाद आपको जो चाहिए

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


4
तुम्हें पता है, मैं वहाँ एक नई भाषा, भले ही आप नहीं है सीखने का कुछ मूल्य है लगता है की जरूरत है यह ... लेकिन मैं सामान्य भावना है कि यह एक भाषा सीखने के लिए है क्योंकि आपको लगता है कि आप इसे पाते हैं अक्सर बेहतर है के साथ सहमत उपयोगी नहीं बल्कि क्योंकि यह आपको लगता है कि आपको "सीखना" चाहिए।
टिम गुडमैन

8

यह दावा करना कठिन है कि कोई भी अनुक्रम आदर्श है, लेकिन मैं एक योजना बनाऊंगा जिसे मैं उचित ठहरा सकता हूं:

  1. सी

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

  2. पर्ल

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

  3. सी ++ , या शायद जावा

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

  4. आम लिस्प

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

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

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


4
सी और आम लिस्प के लिए +1, लेकिन दूसरी भाषा के रूप में पर्ल ?? :) पायथन कार्यक्रम की प्रारंभिक लेखन के बाद हफ्तों, महीनों, या वर्षों में अपने आप को और दूसरों के लिए बहुत पठनीय होने की तरह - अच्छी प्रोग्रामिंग आदतों को प्रोत्साहित करते हुए एक गतिशील भाषा के रूप में शानदार सेवा करेगा।
सीमित

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

मैं आपके "ट्रेडों को अमूर्तता में बढ़ने पर" दक्षता से असहमति देता हूं। C ++ के स्तंभों में से एक यह है कि C ++ की सुविधाओं का उपयोग करने वाला प्रोग्राम कभी भी समान C प्रोग्राम की तुलना में धीमा नहीं होता है । उदाहरण के लिए, C ++ में वर्चुअल फ़ंक्शंस का उपयोग करना C. में वर्चुअल फ़ंक्शंस का अनुकरण करने की तुलना में कभी धीमा नहीं होता है
fredoverflow

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

6

1. छोटी चौकी

बच्चों को सीखने के लिए कंप्यूटर का उपयोग करने के लिए मूल रूप से कम से कम भाग में बनाया गया है। एक पैराग्राफ में वर्णन करने के लिए वाक्यविन्यास काफी सरल है। यह, लोगो की तरह, "प्रवेश के लिए कम बाधा, उच्च छत" सिद्धांत का उदाहरण देता है।

स्मालटाक की शुद्ध ओओ भाषा इस अर्थ में है कि "सब कुछ एक वस्तु है"।

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

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

2. प्रोलॉग

एक तर्क प्रोग्रामिंग भाषा जो आपको किसी भी अन्य भाषा के बारे में गणना करने के लिए एक बहुत अलग दृष्टिकोण देगी। प्रोलॉग भी अत्यधिक घोषणात्मक है (लेकिन पूरी तरह से ऐसा नहीं है: !या कटौती ऑपरेटर एक विधेय पर एक महत्वपूर्ण अर्थ प्रभाव डाल सकता है)।

3. आम लिस्प

पसंद आने पर यहां सब्स्टीट्यूट स्कीम। आम लिस्प कई प्रतिमानों का समर्थन करता है, विशेष रूप से OO और कार्यात्मक। इसका एक लंबा इतिहास भी है (लिस्प दूसरी सबसे पुरानी अभी भी व्यापक रूप से इस्तेमाल की जाने वाली भाषा है: केवल फोरट्रान की पुरानी है)।

4. हास्केल

(कैविएट: मैंने केवल इसे सीखना शुरू किया है।) संभवतः ग्रह पर सबसे शुद्ध कार्यात्मक भाषा है। इसमें बहुत उन्नत स्थैतिक प्रकार की प्रणाली है। आसान परिचय पुस्तकें मौजूद हैं।

5. सी या डेल्फी

आपको यह जानना होगा कि कंप्यूटर कैसे काम करते हैं। आपको यह जानना होगा कि मेमोरी और सीपीयू वास्तव में कैसे कार्य करते हैं। ये दोनों पारंपरिक रूप से "धातु के करीब" हैं और ऐसे समुदाय हैं जो यह सोचने को प्रोत्साहित करते हैं कि उनकी भाषा विधानसभा के लिए कैसे संकलित है।

यह आदेश क्यों?

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

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

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

हास्केल की सूची में चौथा क्योंकि (मुझे बताया गया है: मैंने केवल इसे सीखना शुरू किया है) इसकी शुद्धता का मतलब है कि कुछ बहुत ही सामान्य चीजें (जैसे I / O) कम विशुद्ध रूप से कार्यात्मक भाषाओं की तुलना में करना अधिक कठिन हैं। हास्केल लोग कुछ काफी विदेशी शब्दावली ("कैटामोर्फिज्म", जैसे शब्द भी कहते हैं) का उपयोग करते हैं, और इससे निपटने से पहले शायद आप अपने बेल्ट के नीचे कुछ प्रोग्रामिंग अनुभव के साथ बेहतर होंगे। (लेकिन मुझे फिर से पुनरावृत्त होना चाहिए, मैंने केवल इसे सीखना शुरू कर दिया है! एक चुटकी नमक के साथ यह राय लें!)

और सी / डेल्फी आखिर क्यों? क्योंकि जब तक आप एम्बेडेड सिस्टम में काम नहीं करते हैं, तब तक आपको वास्तव में यह सोचकर प्रोग्रामिंग सीखनी नहीं चाहिए कि मैनुअल मेमोरी मैनेजमेंट सब कुछ है। कचरा संग्रह ने 1980 के स्तर की मशीन के लिए पर्याप्त रूप से काम किया। आपका फोन इतना शक्तिशाली है!

अंत में, मैंने उपरोक्त सूची में एर्लांग को नहीं रखा है , हालांकि मुझे वास्तव में चाहिए।


2
क्या यह सीखने का क्रम है ?
जादूगर79

यह स्पष्ट रूप से एक अनुक्रम (लंबाई 1) है।
फ्रैंक शीयर

कम स्पष्ट रूप से: मैं अनुक्रम में एक कदम प्रदान करूंगा, और आप दूसरे को प्रदान करेंगे, और समुदाय उक्त अनुक्रम के आदेश पर मतदान करेगा, ठीक है?
फ्रैंक शीयर

3
@Frank मेरा मतलब यह नहीं था। मुझे पूर्ण दृश्यों की उम्मीद थी। और मुझे लगता है, आदेश मतदान से नहीं हो सकता।
गुलशन

कृपया लोगों को: यदि आप नीचे जा रहे हैं, तो बताएं कि क्यों
फ्रैंक शियरार

5
  1. अजगर। प्रोग्रामिंग के लिए एक उत्कृष्ट परिचय। यह प्रोग्रामिंग के किसी भी पिछले प्रदर्शन के साथ भी टाई करेगा।

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

  3. C. एक निम्न-स्तरीय भाषा जो सिलिकॉन के करीब रहती है। कंप्यूटर क्या कर सकता है यह सीखने के लिए अच्छा है। आप कोडांतरक भाषा के कुछ रूप को स्थानापन्न कर सकते हैं, लेकिन सी मूल बातें के बहुत करीब है और इसके साथ काम करना बहुत आसान है।

  4. Prolog। वैकल्पिक रूप से, किसी भी घोषणात्मक शैली के सामान्य-प्रयोजन की भाषा को स्थानापन्न करें, यदि आप एक को बेहतर पसंद कर सकते हैं।

  5. हास्केल। प्रकार प्रणाली और शुद्ध कार्यक्षमता के लिए, अगर और कुछ नहीं।

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


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

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

4

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

आप कुछ OS स्तर की स्क्रिप्टिंग 'भाषाओं' पर भी विचार कर सकते हैं, जैसे बैच, grep, awk, आदि 'मेक' भी इस श्रेणी में आ सकते हैं।

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

आप एक ऐतिहासिक दृष्टिकोण से एपीएल का उल्लेख करना चाहते हैं - या इसे शांति से आराम करने दें। आपकी पंसद।


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

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

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

2

मै सुझाव दूंगा सबसे पहले एरिक रेमंड्स को "हॅकर बनने का तरीका" पढ़ने का दूंगा क्योंकि उनके पास शुरू करने के तरीके के बारे में कुछ बहुत ही दिलचस्प बिंदु हैं, जिसमें लिस्प शामिल है जिसमें "कोड डेटा है और डेटा कोड है" धारणा है।

प्रोग्रामिंग के लिए मैं हास्केल, प्रोलॉग, एसक्यूएल और असेंबली लैंग्वेज (बस कुछ) का सुझाव दूंगा।

आप जो भी सीखना चाहते हैं, उसे ठीक से सीखने के लिए समय निकालें और गैर-तुच्छ मात्रा में कोड लिखें। यह साइकिल की सवारी के समान है - आप इसे किताब से नहीं सीख सकते।


2

पहला> जब आप प्रोग्रामिंग शुरू करते हैं तो आप क्या करना चाहते हैं? कैसे एक खेल प्रोग्रामर होना सीखना सीखने से अलग है कि एक व्यवसाय के लिए डेटाबेस प्रोग्रामर कैसे हो ... वेब आधारित प्रोग्रामर से अलग है ...

दूसरा> एक बार जब आप सीखना शुरू करते हैं, तो क्या आप उच्च शुरुआत करना चाहते हैं और अपने तरीके से काम करना चाहते हैं? या कम शुरू करें और अपने तरीके से काम करें। लर्निंग सी # (उच्च स्तर) लर्निंग असेंबली (निम्न स्तर) से बहुत अलग है।

एक बहुत बड़ा विकल्प इस बात पर निर्भर करेगा कि आप क्या करना चाहते हैं। ड्राइवर की प्रोग्रामिंग करना सबसे अधिक संभावना सी या असेंबली में शामिल होगा ... एक वेबसाइट की प्रोग्रामिंग PHP, C #, asp, आदि होगी ... आप वेब प्रोग्रामिंग के लिए असेंबली को नहीं छूएंगे ... आदि ...

जहाँ तक मूल बातें ... एक बार जब आप तय करते हैं कि आप क्या करना चाहते हैं, तो एक भाषा चुनना आसान है। उदाहरण के लिए, मैं एक अस्पताल में डेटा विश्लेषक बन गया हूं। तो मेरा भाषाओं का "पसंद" डेटा एक्सेस के लिए SQL / TSQL / DB2 है, विंडोज़ क्लाइंट्स के लिए C # WPF, वेब क्लाइंट्स के लिए सिल्वरलाइट, आईबीएम बैक-एंड लॉजिक के लिए कुछ आरपीजी / CL ...

व्यक्तिगत रूप से मैं भाषा का अभ्यास करने के लिए एक अच्छी पुस्तक + का निर्माण करता हूं। मैं APress पसंद करता हूँ और C # 2008 पढ़ना पसंद करता हूँ जब C # सीख रहा था। उनके पास ऐसी अन्य किताबें हैं जो अनलिस्टेड और साथ ही विशेषज्ञ के लिए मूल बातें शामिल करती हैं।


2

एक नवागंतुक को शुरू करने के लिए केवल एक भाषा की आवश्यकता होती है, दूसरी भाषा सीखने के बाद, वे पहले से ही कई प्रतिस्पर्धी डेवलपर्स से आगे बढ़ रहे हैं। मैं निम्नलिखित क्रम में सीखूंगा:

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

आप पूछ सकते हैं "सी + + कहां है?" और एक्स के बारे में क्या? ईमानदारी से, कई भाषाओं को सीखना कुछ चीजें करता है: यह आपके अनुभव को समृद्ध करता है, और यह अधिक भाषाओं को सीखने के लिए एक ड्राइव प्रदान करता है। जिन भाषाओं को मैं अच्छी तरह से जानता हूं (जावा, सी #, रूबी, सी ++, जावास्क्रिप्ट) सभी ऑब्जेक्ट ओरिएंटेड हैं - लेकिन यह मुख्य रूप से इसलिए है क्योंकि मुझे हर दिन काम करना है। (स्मॉलटाकल, पायथन, एरलंग, जेईएस, सी, असेंबली [मोटोरोला 6502/6510], गो) के लिए मैंने जिन भाषाओं को उजागर किया है, उन सभी ने मुझे मूल्यवान सबक सिखाया है। मैं कम से कम समझ सकता हूं कि उन भाषाओं के साथ क्या हो रहा है। बहुत कुछ है जिसकी मैंने खोजबीन नहीं की है, लेकिन भविष्य में बहुत अच्छा हो सकता है। कुछ मार्कअप लैंग्वेज भी हैं: HTML, XSL: FO, XSLT, CSS, XML, SGML कि लोगों को एक्सपोजर की जरूरत है अगर वे किसी भी तरह से वेब के साथ काम करेंगे।

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


2

इनमें से अधिकांश उत्तर लगभग एक जैसे हैं इसलिए मैं एक अलग राय देने जा रहा हूं। मैंने लंबे समय से यह माना है कि सबसे अच्छी पहली भाषा Tcl है।

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

दूसरे के लिए, Tcl एक शानदार बिल्ट-इन GUI भाषा के साथ आता है, जिससे आप कुछ अपेक्षाकृत तुरंत संतुष्टि प्राप्त कर सकते हैं और इवेंट संचालित प्रोग्रामिंग की मूल बातें जान सकते हैं।

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

इसके अलावा, क्योंकि यह एक्स्टेंसिबल है। सी में एक आसान सेग है। आप सी बेसिक्स सीख सकते हैं, और सीख सकते हैं कि या तो क) किसी अन्य भाषा में लिखी गई नई कमांड के साथ Tcl का विस्तार करें, या b) सीखें कि एक स्क्रिप्टिंग भाषा को प्रोग्राम में लिखे प्रोग्राम में कैसे जोड़ा जाए सी।

एक बार जब आप Tcl और C सीख चुके होते हैं, तो अधिकांश अन्य भाषाएं उन दो चरम सीमाओं के बीच कहीं होती हैं और उन्हें चुनना अपेक्षाकृत आसान होना चाहिए। मेरी पूरी सूची, चार के बाद मैं सिखाऊँगा Tcl और C के बाद:

  1. Tcl
  2. सी
  3. अजगर - OO अवधारणाओं के लिए, इसके अलावा यह अन्य भाषाओं के साथ विपरीत-ब्लॉक-इंडेंटेशन व्यवहार को परिभाषित करता है।
  4. रूबी - ओओ पर एक अलग लेने के लिए, प्लस फ्रेम के बारे में जानने के लिए रेल करता है
  5. जावा - यह हर जगह उपयोग किया जाता है, आपको इसे जानने की आवश्यकता है, और जेवीएम के बारे में जानने की आवश्यकता है
  6. groovy - गतिशील भाषाओं में वापस सर्कल

1

असेंबली लैंग्वेज, C, SQL, C #

मुझे पता है, उबाऊ और पुरानी-खोपड़ी। और संपूर्ण प्रश्न प्रोग्रामिंग के वास्तव में कठिन भाग को अनदेखा करता है, जो समस्या-समाधान, डोमेन मॉडलिंग और एल्गोरिथ्म निर्माण है। लेकिन यहाँ क्यों है:

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

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

  3. अब SQL के साथ डेटाबेस में कूदो। संग्रहीत प्रक्रियाओं के साथ ओवरबोर्ड न जाएं, बस तालिकाओं और प्रश्नों की मूल बातें प्राप्त करें।

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

क्या अब आप एक प्रोग्रामिंग जेडी हैं? एक कोड निंजा? नहीं , अब आप केवल सक्षम हैं। लेकिन आपके पास चमकदार नए मज़ेदार सामान का पता लगाने के लिए एक ठोस आधार है।


1

आपको मूल सिद्धांतों की आवश्यकता है:

  1. मशीन कोड
  2. सभा की भाषा
  3. सी
  4. तुतलाना

उसके बाद शायद यह मायने नहीं रखता।


0

ठीक है, यह इनाम के लिए आखिरी दिन है। और मैं अपना जवाब जोड़ रहा हूं। मेरा सुझाया गया क्रम-

सी, सी ++, जावा / सी #, पायथन / रूबी, कोई अन्य भाषा (विधानसभा / लिस्प / प्रस्तावना आदि)

  • मुझे नहीं लगता कि पहली भाषा को सबसे आसान होना चाहिए। बल्कि मुझे लगता है कि यह समग्र विचार देना चाहिए कि कैसे कंप्यूटर कुछ अमूर्तता रखते हुए काम करता है।
  • C से C ++ तक संक्रमण आसान हो जाएगा। इन दिनों सबसे ज्यादा इस्तेमाल होने वाला प्रतिमान OOP होगा।
  • C ++ से C # / Java में संक्रमण आसान हो जाएगा। मुझे C # पसंद है क्योंकि इसमें कई प्रोग्रामिंग जैसे प्रतिमान शामिल हैं।
  • जब कोई अब पायथन या रूबी जैसी गतिशील भाषाओं में आता है, तो एक " वाह " होगा। गतिशील टाइपिंग की सुंदरता को महसूस करना आसान होगा। लेकिन पहले गतिशील भाषाओं को सीखना और बाद में स्थिर लोगों को कारण होगा, " ओह! मुझे इन सभी को क्यों जोड़ना है? "
  • अब, सबसे अधिक इस्तेमाल किए जाने वाले प्रतिमान और भाषाएं लगभग हो चुकी हैं। इसलिए, जो भी आप चाहते हैं उसका अन्वेषण करें। असेंबली से लिस्प, प्रोलॉग या हास्केल। और विभिन्न प्रोग्रामिंग भाषाओं के नए संदर्भों की सुविधाओं की खोज करें।

यहाँ C केवल शुरू करने के लिए है।
गुलशन

जावा पर C # ओवर की वरीयता कई कारकों पर निर्भर करती है जो मैं कहूंगा कि दोनों लगभग बराबर हैं।
प्रसासनकाला १६'११

0

योजना, सी, सी ++

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

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

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

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

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

ध्यान रहे मुख्य पाठ्यक्रम में अन्य पाठ्यक्रम (कंप्यूटर आर्किटेक्चर, डेटा संरचना और एल्गोरिदम, कंपाइलर, ऑपरेटिंग सिस्टम आदि) भी हैं। तो बस इन भाषाओं को सीखना प्रोग्रामिंग में कुशल होने के लिए पर्याप्त नहीं है।


0

मूल भाषा से उच्च स्तर पर जाने का एक तरीका है। इस तरह आपको अभी भी अंदाजा है कि पीछे क्या हो रहा है।

  • सी - संकेत और स्मृति प्रबंधन
  • C ++ - OO मूल बातें और अभी भी बहुत लोकप्रिय है
  • जावा / सी # - सबसे लोकप्रिय भाषाएं
  • कुछ बुनियादी विधानसभा
  • कार्यात्मक भाषा - ईजी हास्केल
  • लिपि भाषा - एग पायथन

0
  1. अजगर। सामान प्राप्त करने के लिए, साधारण प्रोग्रामिंग करें। प्रक्रियात्मक, ऊ और (एक हद तक) कार्यात्मक।

  2. नियमित अभिव्यक्ति। वे पाइथन लाइब्रेरी में हैं, लेकिन यह एक अलग डीएसएल है।

  3. शेल (BASH या जो भी हो)। "&", "|", ";" पाइथन में प्रक्रियाओं के संयोजन के लिए ऑपरेटर महत्वपूर्ण और अप्रिय हैं।

  4. एसक्यूएल। यह है - अभी के लिए - डेटा एक्सेस के लिए लिंगुआ फ्रेंका

  5. एक्सएचटीएमएल। यह है - अभी के लिए - डेटा प्रस्तुति के लिए भाषा फ्रैंक

  6. सीएसएस।

शायद C जरुरी हो जाए।


आपको लगता है कि " गहरा ज्ञान " मंच छोड़ दिया है । क्या वह नंबर 7 है?
मार्क सी

@ मर्क सी: केवल "सबसे अधिक इस्तेमाल की जाने वाली भाषाओं और आज के प्रतिमान" को कवर करने की कोशिश कर रहा है। मेरे अनुभव में, ये "अन्य" या DSL की प्रोग्रामिंग भाषाओं की तुलना में शायद अधिक उपयोग किए जाते हैं। मुझे यकीन नहीं है कि यह गहरा ज्ञान की ओर जाता है - बस बहुत सी भाषाओं के संपर्क में है जो वास्तव में उपयोग किए जाते हैं।
एस.लॉट

आप सही कह रहे हैं, मैंने देखा कि उसने ऐसा कहा था, फिर मैंने देखा कि उसने "या प्रतिमान" भी कहा था। यह सिर्फ अच्छे हास्य में था।
मार्क सी

@ मर्क सी: लेकिन एसक्यूएल और सीएसएस "अन्य प्रतिमान" हैं जो सबसे दिलचस्प हैं। वास्तव में रेग्युलर एक्सप्रेशंस एक प्रतिमान है जो स्टैक ओवरफ्लो पर कई सवालों का कारण बनता है।
एस.लॉट

0

धातु के करीब शुरू करें:

  1. कोडांतरक
  2. सी
  3. सी ++
  4. सी#
  5. तुतलाना
  6. अजगर या रूबी

अब इतने व्यापक दृष्टिकोण के साथ समस्या यह है कि कोई भी अध्ययन के वर्षों के बिना इन भाषाओं में दूरस्थ रूप से सक्षम नहीं बन सकता है।

  1. असेंबलर: 3 महीने
  2. C: 6 महीने
  3. सी ++: 2 साल
  4. C #: 6 महीने
  5. लिस्प: 3 महीने
  6. पायथन / रूबी: 3 महीने

जब तक आपका इरादा उन्हें "हैलो वर्ल्ड" सिखाने का नहीं है, जो सभी 6 के लिए लगभग एक महीने का समय लेना चाहिए।


-1

सीधे क्यों न जाएं और VB या C # सीखें। मेरी राय में दोनों शुरुआत से लेकर अग्रिम, इहो तक की पूरी भाषाएं हैं।


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