Niemand hier hat sich mit den praktischen Fragen befasst, warum jemand, der TCS studiert, Programmieren lernen sollte.
Wenn Sie planen, in einem Fachbereich Informatik in TCS zu promovieren, stehen die Chancen gut, dass Sie einige nicht-theoretische Kurse belegen müssen, und diese sind mit ziemlicher Sicherheit sehr programmierintensiv. Je nachdem, in welchem Programm Sie sich befinden, benötigen Sie möglicherweise auch Kenntnisse in nicht-theoretischen Fächern, um Ihre Eignungsprüfungen zu bestehen.
Wenn Sie Ihre Promotion abgeschlossen haben, sind die meisten Stellenangebote für TCS im akademischen Bereich. Wenn Sie im akademischen Bereich arbeiten, wird von Ihnen erwartet, dass Sie unterrichten, und von Ihnen wird möglicherweise erwartet, dass Sie eine CS-Klasse für Anfänger unterrichten, die mehr Programmieren als Theorie ist. Selbst wenn Sie eine Theorieklasse für Studenten unterrichten, wie zum Beispiel Algorithmen, können Sie davon ausgehen, dass Ihre Schüler mehr über Programmieren als über Theorie wissen, und ohne zu wissen, was Ihre Schüler wissen, wird es für Sie schwierig sein, die Lücken in ihrem Verständnis zu schließen . Ich schaudere bei dem Gedanken, dass CS-Studenten von jemandem unterrichtet werden, der keine Programmierkenntnisse hat!
Wenn Sie sich nicht für diese praktischen Belange interessieren, können Sie wahrscheinlich Recherchen durchführen, ohne wirklich etwas über Programmierung zu wissen. Sicherlich haben Sie eine Menge Gesellschaft in der TCS-Community, aber die Anzahl der Kilometer hängt davon ab, in welchem Bereich der Theorie Sie gerade arbeiten. Wenn Sie beispielsweise eine Theorie der reinen rechnerischen Komplexität betreiben, beweisen Sie, dass Klassenuntergrenzen bestehen, die niemand hat Wenn Sie schon einmal davon gehört haben, ist es wahrscheinlich, dass die Programmierung für Sie keinen Nutzen hat. Aber wenn Sie etwas Algorithmischeres tun, dann glaube ich, dass es Ihre Intuition stärkt, wenn Sie in der Lage sind, sauberen Code zu schreiben.
Ich empfehle C zu lernen (nicht C ++). Nehmen Sie eine Kopie von K & R und lesen Sie sie von vorne nach hinten. C bietet nicht viele der ausgefallenen Funktionen moderner Sprachen, verfügt jedoch über eine einfache, aber elegante Syntax und Semantik, die Sie vollständig erlernen sollten. Selbst wenn Sie die Sprache vollständig verstehen, ist es immer noch üblich, einen guten, eleganten, fehlerfreien Code in C zu schreiben. Wenn Sie jedoch das Codieren in C beherrschen, können Sie jede Programmiersprache beherrschen, die Ihnen begegnet. Darüber hinaus hilft Ihnen diese Disziplin beim Überlegen, wie die Hardware denkt, was beim Entwerfen von Algorithmen von Vorteil ist.
Ideen wie Zeiger sind für jeden, der Algorithmusdesign betreibt, sehr wichtig, aber leider verbergen Sprachen wie Java und Python sie vor Ihnen. Deshalb empfehle ich sie nicht als Muttersprache für jemanden mit mathematischem Hintergrund. OOP ist wichtiger für Leute, die riesige Softwareprojekte warten müssen, nicht für jemanden, der Algorithmen entwirft.