Теория алгоритмов. С чего начать и какой язык выбрать?
Теория алгоритмов работает и вовсе с абстрактными машинами Поста и Тьюринга, ЯП для нее не нужен.
Выбор языка означает выбор способа реализации алгоритмов. Языки с богатым рантаймом и управляемым кодом позволяют достигнуть высокой эффективности программиста по скорости реализации алгоритмов. Однако, их использование способствует написанию громоздкого, требовательного к ресурсам кода.
Языки, близкие к железу, вроде C и С++ наоборот, позволяют реализовывать алгоритмы, максимально задействуя аппаратные возможности платформы. Такой программист менее эффективен (выдает меньше реализованных задач в единицу времени), зато его код эффективен, и может задействовать все возможности железа.
Написание кода на C  и C++ предъявляет больше требований к программисту и качеству его работы, заставляет учитывать больше мелочей и больше дисциплинирует. В этом смысле, такие языки лучше подходят в качестве учебных.
Этот вопрос тут так часто задается, что кажется, будто никто не пользуется поиском.