Nikt tutaj nie zajął się praktycznymi kwestiami, dlaczego ktoś studiujący TCS powinien uczyć się programowania.
Jeśli planujesz zrobić doktorat z TCS na wydziale informatyki, istnieje duża szansa, że będziesz musiał wziąć udział w kursach innych niż teoria, a te prawie na pewno będą bardzo intensywne w programowaniu. W zależności od programu, w którym uczestniczysz, być może będziesz potrzebować wiedzy z przedmiotów innych niż teoria, aby zdać egzamin kwalifikacyjny.
Po zakończeniu doktoratu większość ofert pracy dla TCS znajduje się w środowisku akademickim. Jeśli pracujesz w środowisku akademickim, będziesz oczekiwać, że będziesz uczył, i możesz oczekiwać, że będziesz uczył wstępnej klasy CS, która będzie bardziej programować niż teorię. Nawet jeśli uczysz teorię dla studentów, jak powiedzmy Algorytmy, możesz spodziewać się, że twoi uczniowie będą wiedzieć więcej o programowaniu niż teorii i bez wiedzy tego, co wiedzą twoi uczniowie, będzie ci trudno wypełnić luki w ich zrozumieniu . Wzdrygam się na myśl, że studentami CS uczą osoby, które nie znają programowania!
Jeśli nie przejmujesz się tymi praktycznymi obawami, prawdopodobnie możesz to zrobić, przeprowadzając badania, nie wiedząc nic o programowaniu. Na pewno masz dużo towarzystwa w społeczności TCS, ale przebieg będzie się różnić w zależności od dokładnego obszaru teorii, w którym pracujesz. Na przykład, jeśli wykonujesz czystą teorię złożoności obliczeniowej, udowadniając dolne granice klas, których nikt nie ma kiedykolwiek o tym słyszałeś, to prawdopodobnie programowanie Ci nie przyda się. Ale jeśli robisz coś bardziej algorytmicznego, to czuję, że umiejętność napisania dobrego, czystego, działającego kodu wzmocni twoją intuicję, jeśli nic więcej.
Polecam naukę języka C (nie C ++). Podnieś kopię K&R i przeczytaj ją od początku do końca. C nie ma wielu fantazyjnych cech współczesnych języków, ale ma prostą, ale elegancką składnię i semantykę, których powinieneś być w stanie nauczyć się w całości. Jednak nawet jeśli rozumiesz cały język, nadal musisz ćwiczyć pisanie dobrego, eleganckiego, wolnego od błędów kodu w C. Niemniej jednak, jeśli potrafisz opanować kodowanie w C, będziesz w stanie opanować każdy napotkany język programowania. Co więcej, dyscyplina ta pomoże ci myśleć, jak myśli sprzęt, co będzie korzystne przy projektowaniu algorytmów.
Pomysły takie jak wskaźniki są bardzo ważne dla każdego, kto zajmuje się projektowaniem algorytmów, ale niestety języki takie jak Java i Python zasłaniają je przed tobą, dlatego nie polecam ich jako pierwszego języka osobom z matematyki. OOP jest ważniejszy dla ludzi, którzy muszą utrzymywać ogromne projekty oprogramowania, a nie dla tych, którzy projektują algorytmy.