Нужно понимать, что любую задачу можно решить практически на любом языке программирования за довольно маленьким исключением (низкоуровневое программирования для аппаратного обеспечения). Весь вопрос в том, насколько оптимальным и трудоёмким будет решение. Например, существует ОС, практически полностью написанная на языке Java, хотя он для этого мягко говоря не предназначен. Язык - это всего лишь инструмент и ничего более, и для каждой задачи существует более подходящий инструмент или менее. Более того - существует ряд направлений где используется даже не С++, а Си, например ядра операционных систем, драйверы, ядра СУБД. Причём там используются версии языков года так 89-го. С++ подобные языки используются прежде всего в силу своих возможностей ручного управления памятью и строгой типизации, что необходимо для реализации целого круза задач. Например: драйверы, игры, различное ПО связанное с вычислениями, системное ПО.
Так же надо понимать что сам по себе любой язык никому не нужен и не интересен, он существует в определенном окружении, экосистеме - наборы инструментов для разработки, фреймворки и библиотеки, набор ранее написанного программного обеспечения, которое никто не будет переписывать (потому, что это дорого) и которое нужно поддерживать. Как говорит Роберт Мартин про постоянно появляющиеся языки и библиотеки - мы всё время ищем новую блестящую вещь (вместо того чтобы просто программировать).
Да, все так и с моей точки зрения
Язык программирования (ЯП) нужно выбирать исходя из задач. Не стоит использовать один ЯП - как универсальное решение всех проблем. В каждой предметной области есть свои тонкости.
Python - это интерпретируемый язык программирования. C - компилируемый. Для большинства серьезных проектов ( прим. банковская система) интерпретируемые языки не подходят по соображениям безопасности. Ну и скорость соответственно у него намного ниже