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