Никакие.
Один лишь ЯП в вакууме с точки зрения применения в конечном продукте абсолютно бесполезен. Ибо, как правило, программный продукт существует не обособленно, а, так или иначе, взаимодействует с другими программами (операционной системой, например). Более того, зачастую разумно не изобретать велосипед, а воспользоваться уже готовым решением, которое было проверено временем. Таким образом, приходится знакомиться с кучей уже существующих технологий.
Вообще, в области server / desktop / mobile очень сложно уйти далеко без, как минимум, следующего:
- Объектно-ориентированное программирование и проектирование — ведь код не должен быть говном
- Параллельное программирование — ведь делать нужно много и быстро, а у нас уже 10 лет как многоядерные машины есть
- Сети — ведь нельзя жить без интернета
- Базы данных — ведь данные надо где-то хранить, и хранить надёжно
hardware не комментирую, но там ещё хардкорнее.
Собственно, для программиста не столько важно знать какой-либо конкретный ЯП, а важно владеть технологиями разработки. ЯП, конечно, входит в это множество, но им оно совсем не ограничивается.