ここで、TCSを勉強している人がプログラミングを学ぶ必要があるという実際的な問題に取り組んでいる人はいません。
コンピューターサイエンス部門のTCSで博士号取得を計画している場合、理論以外のコースを受講する必要がある可能性が高く、それらはほぼ間違いなく非常にプログラミング集中型になります。参加しているプログラムによっては、資格試験に合格するために非理論科目の知識も必要になる場合があります。
博士号を取得すると、TCSのほとんどの雇用機会は学界にあります。アカデミアで働く場合は、教えることが期待され、理論よりもプログラミングの多いイントロレベルの学部生CSクラスを教えることが期待される場合があります。アルゴリズムなどの学部生に理論クラスを教えている場合でも、学生は理論よりもプログラミングについて多くのことを知っていると期待でき、学生が知っていることを知らずに、理解のギャップを埋めることは難しいでしょう。私はプログラミングを知らない誰かによってCS学部生が教えられているという考えに身震いします!
これらの実際的な懸念を気にしないのであれば、おそらくプログラミングについて何も知らなくても研究を行うことで得られるでしょう。確かにあなたはTCSコミュニティにたくさんの会社を持っていますが、マイレージはあなたが働いている理論の正確な領域によって異なります。例えば、純粋な計算複雑性理論をしている場合、誰も持っていないクラスの下限を証明聞いたことがあるなら、プログラミングはあなたにとって役に立たないでしょう。しかし、あなたがもっとアルゴリズム的なことをしているなら、きれいな作業コードを書くことができれば、他に何もなければ直観が強化されると思います。
C(C ++ではなく)を学習することをお勧めします。K&Rのコピーを手に取り、前後に読んでください。Cには現代言語の派手な機能の多くはありませんが、シンプルでありながら洗練された構文とセマンティクスを備えているため、全体を学ぶことができます。ただし、言語を完全に理解している場合でも、Cでエレガントでバグのない優れたコードを書くことを習得することは依然として練習になります。それでも、Cでコーディングを習得できれば、遭遇するプログラミング言語を習得できます。さらに、その規律は、ハードウェアがどのように考えるかを考えるのに役立ちます。これは、アルゴリズムを設計するときに有益です。
ポインターのようなアイデアは、アルゴリズム設計を行う人にとって非常に重要ですが、残念ながら、JavaやPythonのような言語はそれらをあなたから見えなくします。そのため、数学の背景を持つ人にはそれらを第一言語として推奨しません。OOPは、アルゴリズムを設計している人ではなく、巨大なソフトウェアプロジェクトを維持する必要がある人にとってより重要です。