Очень глупый вопрос, которым и я задавался когда-то.
Если ещё не знаешь, что выбрать, то нужен более глобальный подход.
Вот пример схемы для определения необходимых тебе областей знаний:
(
http://hsto.org/files/162/f32/330/162f32330d67457e939798c5d7d3814e.png)
Пользоваться ей можно и сверху и снизу. При этом не обязательно опираться на C/C++, как в самой схеме. Естественно все непонятные словосочетания стоит погуглить.
Алгоритм выбора областей знаний на примере UI и UX:
- Смотрим на что опирается в схеме UI и UX
- Это разработка ПО, чтобы разобраться в в ней смотрим на что она опирается
- Системный анализ и основы языка программирования (не смущайся C/C++, можно выбрать любой популярный язык, на его основе ты уже выучишь остальные)
- И далее по веткам можно дойти до всех фундаментальных областей знаний.
Итог:
Чтобы стать хорошим UI/UX разработчиком тебе нужно будет изучить информатику, математику, матстат и тервер. Разобраться как эти знания применяются в языках программирования и теории алгоритмов. Изучить основы обработки информации и основы языка программирования. Язык тут естественно будет выбран тобой в уже более узкой сфере (GUI под винду - С++/С#, GUI под Android и кроссплатформенный - Java, GUI под iOS - Swift). К языку добавятся фреймворки и подходы, специфичные конкретной платформе. Далее ты погрузишься в более подробное изучение языка (может быть сменишь его на другой, более подходящий под твои задачи), а так же в базы данных и основы системного анализа. Всё это и приведет тебя к цели.
Как видишь, язык программирования в этой схеме не является какой-то строгой частью алгоритма. Он выбирается под конкретные задачи и чтобы выбрать язык, нужно сначала определиться со своими стремлениями. Просто изучив популярный язык ты не станешь программистом. Да и не получится его изучить не зная зачем. Всё развитие закончится на базовых вещах, а потом ты начнешь тыкаться носом в свои разные идеи, для воплощения которых не хватит этих самых основ и придется изучать целую огромную ветку.
Можно схалтурить и сделать проще (малоинтересные тебе области исходя из заголовка топика опущены):
UI/UX - выбор платформы* - С#, Java или Swift
Веб - HTML + JavaScript + Java/Pyton
Распределенные системы - выбор уровня** - C, C++, Java, Pyton, R
* - Windows, Android, iOS, кроссплатформенный десктопный UI
** - распределенные системы можно представить в виде нескольких уровней, я бы разделил просто на два: написание самой распределенной системы и написание под уже существующую
Среди популярных сейчас языков я не выделил PHP (ибо к моменту становления тебя, как программиста он будет мало полезен, для дальнейшего роста уж точно) и Scala, ибо без знания Java я бы в нее не совался.