«JavaScript все ненавидят» — это фактическая ошибка. По результатам
опроса «самый нелюбимый язык» на Stackoverflow в 2020 году JS занял всего лишь 16-е место из 25. Выше оказались такие языки как C, C++, PHP и Java. При этом в номинации «самый любимый язык» второе место занимает TypeScript, по сути являющийся надстройкой над JS.
Какие-то разработчики действительно могут не любить JS. Попробую предположить, за что именно, не вдаваясь в холивар о том, какой язык лучше:
- Безальтернативность. Формально это не совсем так, но по факту если ты занимаешься фронтендом в вебе, ты обязан знать JS, в отличие от бэкенда, где может быть выбор.
- Трудности при переходе с других языков, особенно с языков с сильной статической типизацией (например, с Java). Конечно, это относится не только к JS, но JS сейчас самый популярный, поэтому с ним сталкиваются чаще.
- Путаница, вызванная обратной совместимостью. JS имеет довольно долгую историю, в течение которой разработчики сохраняют полную обратную совместимость (старый код должен одинаково работать на новых интерпретаторах). Это вызывает разные неочевидные особенности. Например, какие-то (старые) методы массивов мутируют массив, а другие (новые) — возвращают его копию.
- Прототипная модель наследования. При переходе с языков с классической реализацией ООП понимание отличий и особенностей возникает не сразу. А первая реакция на непонятное — это обычно отрицание.
- Излишняя универсальность и модифицируемость. JS не является функциональным языком, но предоставляет функциональные возможности. Он также не является ООП языком, то предоставляет элементы ООП. Иными словами, JS не навязывает конкретную парадигму, из-за чего код разных разработчиков может выглядеть слишком по-разному. Не всем такое нравится.
- Отсутствие статической проверки типов. Это проблема не только у JS но и у любого языка с динамической типизацией. Крупные проекты нуждаются в том или ином виде контроля данных. Это решается тестами и сторонними инструментами проверки типов (Flow, TypeScript), но без них код становится трудно поддерживаемым.
- Якобы низкий порог входа. Следствием всего вышеперечисленного является то, что грамотно программировать на JS может оказаться сложно, особенно когда приходишь в уже состоявшийся продукт. Однако почему-то до сих пор считается, что JS это простой язык для новичков. Также встречается мнение, что на JS не делают серьёзных проектов, хотя на практике это давно уже не так. А обманутые ожидания — это всегда боль.
Стоит ли переучиваться на Python, если знаешь только основы JS? Это вопрос, на который ответить можете только вы сами. Python и JS имеют довольно разные сферы применения, какая ближе вам — никто вам не расскажет, это можете знать только вы. То же с комфортом разработки на данном конкретном языке — кому-то нравится Python, кому-то JS. Другие люди не могут (хотя и пытаются) диктовать, что должно нравиться вам.
Попробуйте Python, если его синтаксис вам понравится больше — продолжите его изучение. Если вы знаете только основы, особо переучиваться не придётся. Да и нет такого в IT, чтобы пришлось «переучиваться», это же не моторные навыки. Вы не переучиваетесь, а изучаете новое, расширяете кругозор. Не припоминаю, чтобы это кому-то помешало.