
Языки программирования бывают самыми разными, и просто с ходу ответить, какой из них лучше остальных и какой вам сразу же стоит учить – нельзя, потому что сам вопрос поставлен некорректно: во-первых, серьезное программирование нередко предполагает использование нескольких языков/фреймворков (расширений для языка); во-вторых, «лучший» язык во многом зависит от того, в какой сфере вы хотите работать; в-третьих, через год все может поменяться, и популярный на данный момент язык начнет «скатываться». Вместо того, чтобы составлять какие-либо ТОПы сомнительной полезности, мы возьмем основные языки программирования для каждой сферы и составим список по значимости.

Мы предполагаем, что раз вы задаетесь вопросом о различии в ЯП – значит, вы знаете о них довольно мало. А раз так, то сначала нужно устроить небольшой ликбез.
Язык программирования – это язык, на котором программист говорит компьютеру о том, что нужно что-то сделать. На первых порах зарождения программирования эту формулировка действовала буквально: программисты на перфокартах дырявили нужные области, по которым компьютер понимал, что нужно взять вот такое вот значение из какой-то области памяти, сложить его со значением из другой области памяти и на ленте бумаги напечатать результат этого сложения.
Сейчас перфокарты, как и прямая работа с «железом», отошли в прошлое, но общий принцип остался тем же: с помощью языка программирования мы описываем некоторые действия, которые компьютер должен совершить для достижения определенного результата.Языки бывают разными, и на то есть 3 причины: историческая; коммерческая; практическая. Историческая причина разделения языков: «я художник, я так вижу». Все языки программирования, которые существуют сейчас, возникли по той причине, что где-то кого-то когда-то не устраивало качество существующих языков. Линус Торвальдс, разработчик операционной системы Linux, взял язык C в основу операционной системы потому, что его не устраивали другие языки программирования. А разработчики языка C создали его потому, что их не устраивал существовавший на тот момент язык B. Коммерческая причина разделения языков – в том, что крупные компании заинтересованы в развитии «своих» ЯП. Apple решила, что ее программисты должны быть особенными, и вместо устоявшейся на тот момент Java заставила «своих» программистов работать на Swift; Google поощряет разработку на Go и так далее. Практическая причина разделения языков состоит в том, что некоторые языки «заточены» под ту или иную работу: C/C++/Rust незаменимы для разработки операционных систем и высоконагруженных приложений, PHP/Ruby/Python отлично справляются с серверной частью web-разработки, Java вообще старается покрыть все сферы программирования.
Если есть разделение языков, то было бы неплохо ввести какую-нибудь их классификацию. И здесь начинаются большие проблемы, потому что ЯП – тема довольно обширная, и классификаций может быть несколько. Основные:
Именно по последней категоризации мы и будем в дальнейшем рассматривать языки, потому что от нее зависит, какой язык лучше выбрать для изучения: если вы хотите разрабатывать игры, вам лучше начать с такого-то языка (C#), если хотите делать фронтенд – с такого-то (JavaScript).Web-разработка – понятие очень широкое, потому что оно включает в себя сайты, приложения и серверы. Кроме того, для сайтов и приложений есть разделение на фронтенд (внешний вид сайта/приложения) и бэкенд (внутренняя логика работы). Составим небольшую таблицу:
Фронтенд | Бэкенд | |
Сайты | JavaScript | JavaScript, PHP, Python, Ruby, Go |
Приложения | Тот язык, на котором написан бэкенд | Java, C#, Python, Swift |
Если вы собираетесь создавать внешнюю оболочку для сайтов, ваш однозначный выбор – JavaScript. Это – единственный язык, который нативно поддерживается всеми браузерами. В нагрузку вам желательно знать HTML и CSS – языки, которые рассказывают браузеру, где должны располагаться блоки и как они должны выглядеть.
Если вы хотите создавать внутреннюю логику сайтов, то выбор у вас более большой:
С приложениями все проще – обычно бэкенд и фронтенд написаны на одном языке. Лидер здесь – Java, его постоянно пытается догнать C#. Python не так сильно востребован, потому что имеет проблемы с производительностью. Swift – для разработки мобильных приложений под iOS.
И да, во всех случаях вам нужно будет учить SQL.Здесь есть 4 варианта:
C# – выбор тех, кто хочет создавать игры на Unity. C++ нужен тем, кто хочет создавать игры на Unreal Engine. Java – для игр на Android, Swift – для игр на iOS. Во всех случаях язык – это не главное (по крайней мере, на первых порах). Игры разрабатываются не с нуля, а на определенном движке – в 99% случаев это Unity или UE.
И у этих движков есть как много функционала, так и много багов – это вам и стоит учить в первую очередь, а язык вы выучите в процессе.Системное программирование сейчас имеет 2 значения: разработка системных (не-прикладных) приложений и создание системного окружения разработки (CI/CD, Infrastructure as a Code и другие DevOps-практики). В первом случае вам нужны низкоуровневые языки программирования: C, C++, Rust. Во втором случае вам нужны языки для создания скриптов: Bash, Windows PowerShell, Python, Go. Лидируют здесь Python и Bash.
И да, здесь SQL вам тоже понадобится.Сисадминам обязательно нужно знать языки командных строк: Bash (Linux), Microsoft PowerShell (Windows Server). Поскольку большинство сисадминов «перекатывается» в DevOps, вам желательно знать скриптовый язык: Python, Go. Технически скрипты можно писать и на Bash/PowerShell, но написание сложных скриптов превратится в пытку. Дополнительно системным администраторам желательно знать YAML, в обязательном порядке нужно знать SQL.
Тестирование обычно проводится на том языке, на котором написано приложение. Для автоматизированного тестирования часто применяются Python и Java, хотя любой более-менее крупный язык имеет свои собственные фреймворки для автоматизированного тестирования.
SQL тестировщики должны знать обязательно.В различных подборках можно встретить откровенно устаревшие или очень узкоспецифичные языки, которые на самом деле учить не стоит. К таким языкам можно отнести:

Язык | Где используется | Насколько сложен |
JavaScript | Фронтенд и бэкенд на сайтах | 3/10 |
PHP | Бэкенд на сайтах | 5/10 |
Python | В основном – серверы и Big Data | 2/10 |
Go | Серверная часть сайтов | 3/10 |
Ruby | Серверная часть сайтов | 6/10 |
HTML/CSS | Фронтенд на сайтах, иногда – в приложениях | 1/10 |
YAML | Системное администрирование | 0/10 |
Java | Практически везде | 5/10 |
C# | Серверная часть сайтов и приложений, разработка игр | 5/10 |
C | Операционные системы, высоконагруженные приложения (в виде вставок кода для оптимизации) | 9/10 |
C++ | Операционные системы, высоконагруженные приложения, игры | 8/10 |
Rust | Операционные системы | 8/10 |
Swift | Разработка под iOS | 5/10 |
Bash | Скрипты для UNIX-систем | 1/10 |
PowerShell | Скрипты для Windows-систем | 1/10 |
SQL | Везде, где нужно хранить данные (кроме разработки игр) | 2/10 |
SQL – это структурированный язык запросов, который используется в базах данных. Язык нужен практически везде, но выучить его просто, в худшем случае у вас уйдет неделя.
Python – его выучить проще всего, при этом на нем можно писать очень сложные вещи.
Тезисно: