Лично я начинал с JavaScript... и он даже спустя десятки других языков остается одним из моих самых любимых, считаю его отличным выбором в качестве первого языка... он позволяет писать код так, как ты его видишь... однако его применить по сути можно только в вебе.
В качестве первого языка из более сложных рекомендую C++... преимущество в том, что изучая его, ты одновременно изучаешь почти все языки сразу. Однако учиться придется долго.
Не рекомендую в качестве первого языка брать питон, потому что я заметил очень стремную тенденцию... те, кто его изучают, потом не хотят учить другие языки... это язык идеальный для говнокодинга из-за своих библиотек, которые ты не пишешь, а просто комбинируешь. Со своими исключениями, конечно.
Еще есть неплохой вариант ворваться сразу с Kotlin, Swift или хотя бы Java. Но тогда ты должен метить в разработку под мобильные устройства, а это на самом деле для новичка еще хуже, чем веб-программирование.
С учебника программирования начинать. Который не про то, как записывать решение задачи значками модного языка, а про то, как решать программистские задачи. А язык будет тем, который используется в этом учебнике для объяснения свойств алгоритмов - удобным именно для начального обучения.
P.S. В последней версии учебника Вирта используется язык Oberon-07 - проще уже некуда. Если же хочешь начинать именно с промышленного языка, то единственный приемлемый вариант - Go: это самый простой из актуальных языков. Начинать же обучение со сложных языков бессмысленно: вместо того, чтобы изучать действительно важные вещи, ты будешь тратить время и силы на мелкие детали конкретного языка, совершенно ненужные для понимания программирования, но необходимые для написания кода на этом языке.
P.P.S. Начинать с Python, JavaScript, PHP - прямой путь в говнокодеры. Интерпретаторы этих языков съедят безо всяких предупреждений самый бредовый код и ты не сможешь понять, что налажал.
Да, Вирта надо читать по алгоритмам и структурам. Видел последнее саратовское издание 2017 г. Это изучается безотносительно языковой конкретики. Так, строка кода ниже принадлежит разным языкам, а пишется и читается одинаково:
for (int i = 0; i < 5; i++) {