Если вы обладаете твёрдым намерением заниматься разработкой, но пока не уверены, какой язык программирования (ЯП) выбрать в качестве первого, эта статья для вас. Сравним наиболее актуальные языки: их области применения, особенности, плюсы и недостатки, сложность в освоении для новичка, спрос на рынке труда. А пока поделимся советами по выбору первого ЯП:

1) Важно определиться с областью разработки — лучше выбрать из востребованных сегодня и перспективных в будущем. Вам должно быть интересно то, чем вы занимаетесь, чтобы успешно преодолевать трудности, которые неизбежно возникнут в процессе учебы и работы. 

2) Если не уверены, чем хотите заниматься, не стоит выбирать узкое направление – в будущем сложнее будет маневрировать. 

3) Если изучаете с нуля и пока не уверены в своих силах или намерении, лучше выбрать язык с простым синтаксисом – в них команды задаются английскими словами, поэтому их легко запомнить.

4) Как можно больше практиковаться, использовать язык в реальных задачах, не ограничиваться теорией.

5) Хорошо, если в процессе обучения у вас будет наставник, поддержка сообщества, возможность изучать актуальную литературу.

6) Не стоит опираться только на популярность языка – рейтинги все время меняются, и вам может подойти любой из самых известных языков. Но чтобы ориентироваться, какие движения происходят в сфере, можно использовать, например, рейтинг популярности ЯП — индекс TIOBE.

7) Актуальные требования и уровень заработной платы можно отследить, анализируя вакансии на ресурсах по поиску работы hh/ linkedin.com/хабр карьере.

Рассмотрим самые известные и используемые на данные момент ЯП.

ЯзыкОбласти примененияСложность в освоении для новичкаОсобенности, преимущества языкаНедостатки, сложности языкаСпрос/число вакансий с упоминанием по РФ на нояб 2020 (по данным hh.ru)
PythonБэкенд-разработка. Машинное обучение и data science. Анализ данных.Достаточно лёгкий в освоении. Простой синтаксис, много библиотек, активное сообщество. Рекомендуют в качестве первого ЯП. Для трудоустройства в качестве разработчика знания одного ЯП Python чаще всего недостаточно.В других областях применения сильно проигрывает C++ и многим другим ЯП по эффективности.7 265
JavaБэкенд-разработка в веб. Разработка приложений (Android) и ПО. Наука и исследования. Геймдев. Часто используется в разработке продуктов в финансовом секторе.Умеренная сложность. Будет легче изучить с базовым пониманием классов, фреймворков, пакетов и объектов. Плюс — огромная поддержка сообщества.Старый «стабильный» язык. Подходит для крупномасштабных длительных проектов. Относительно медленный во время выполнения. Довольно сложно читать код.7 520
Уже много лет один из лидеров по количеству вакансий.
Cпрос почти не растет, но остается на высоком уровне.
C++Широкая сфера применения. Микроконтроллеры.
IoT (интернет вещей).
Десктопные и мобильные приложения.  Кроссплатформенные приложения.
Веб.
Геймдев.
Системы  прогнозирования, моделирования, обработки статистики.  
Сложен в изучении — для тех, кто не ищет лёгких путей. Порог входа высок, требования к Junior значительные.
Разработка на нём занимает значительное время, но дает большие возможности. C++ используют для требовательных к быстродействию программ. Например, на нём написаны продукты Adobe.Выражает идеи ООП. Потребуется время, чтобы понять, чем различаются виртуальные, абстрактные, приватные и публичные методы.3 549
Cпрос почти не растёт, но остаётся на высоком уровне.  
C#Десктопные программы.
Бэкенд веб-приложений.
Геймдев (игры на самом популярном движке Unity). Главный язык платформы .NET.
Умеренная сложность изучения. Средний порог вхождения. Будет использоваться и развиваться, пока есть пользователи Windows и существует сам Microsoft. Гораздо проще освоить, зная синтаксис С/С++. На официальном сайте Microsoft есть множество справочников. Большое сообщество.В основном, ориентированность на Windows-платформу (.NET)3 920
Вакансий стабильно много.
CСистемное программирование (разработка баз данных, драйверов, компиляторов и интерпритаторов etc). Написание программ под микроконтроллеры. 


Средней сложности в изучении. Сам язык относительно несложный, но нужно понимать, как работает железо. Немного вспомогательной литературы. Достаточно высокий порог вхождения.Программы, написанные на языке C, выполняются быстро. Можно написать программы любого уровня сложности. Не используется в современной веб-разработке.2 354
PHPСоздание сайтов и веб-приложений: лэндинги, интернет-магазины, браузерные игры и т.д.
Умеренно лёгок, считается подходящим для новичков. Много документации и готовых решений. Большое сообщество.БОльшая безопасность благодаря закрытому исходному коду.Сравнительно невысокая з/п программистов уровня Middle — специалистов много.4 561
Go (Golang)Написание консольных утилит. Написание серверной части веб-приложений.Считается в изучении легче, чем большинство ЯП. Нет громоздкого ООП. Работает с высокими нагрузками. Программы могут исполнять одновременно несколько задач. Ограниченный функционал языка.  Недостаточная поддержка для windows по сравнению с Linux или Mac OS X.
1 672
Преимущественно спрос от крупных корпораций. Прогнозируется повышенный спрос в 2021.
JavaScriptСамый популярный ЯП в веб-разработке.
Частично используется и в других областях: мобильные и офисные приложения. 
Умеренная сложность в изучении. При затруднениях можно получить помощь от огромного сообщества.Для работы нужен только браузер или его движок. Сопутствующие технологии активно развиваются, нужно быстро осваивать новое.Кроме освоения самого ЯП, нужно научиться пользоваться инфраструктурой, изучить фреймворки и сопутствующие технологии — это немного осложняет путь новичка. 9 177
Один из наиболее востребованных сейчас ЯП. Большой спрос.
ScalaЧасто используется в проектах, где раньше писали на Java. Популярен в банковской сфере.Умеренно сложный для изучения: необходимо освоить принципы ООП и функционального программирования, нужны определенные знания Java. Высокая производительность кода. Синтаксис удобно читать. Открытый исходный код. Плюсом для разработчика будет являться знание Java, поскольку пересекаются многие технологии. Не используется для создания десктопных приложений.604

Пока не очень много вакансий по России, но в будущем может заменить Java.
KotlinРазработка приложений для Android.Достаточно прост для изучения. Гибкий и лаконичный синтаксис.Cовместим с Java. Сожет быть скомпилирован в JavaScript. Чаще используется в небольших проектах.Android-разработчику желательно знать и Kotlin, и Java, поскольку во многих проектах используются оба языка.1523
Хотя в последние годы популярность языка возросла, пока вакансий не так много.
SwiftРазработка iOS-приложений.Достаточно прост для изучения: синтаксис очень близок к разговорному английскому, его легко читать, и он прост для изучения.Лаконичный синтаксис и высокая производительность кода. Совместим с Objective-C.Сложно прогнозировать перспективность. Почти не используется за пределами разработки под Apple.1056
RubyВеб-приложения — в паре с фреймворком Ruby on Rails. Приложения под Android и iOS. Мобильные игры.
Довольно низкий порог входа для новичков, прост в изучении. Читабельный синтаксис. Позволяет создать сайт со сложной архитектурой и динамическими страницами без необходимости работы с базами данных и использования SQL-запросов.Более низкая скорость выполнения по сравнению с другими ЯП.  Недостаточно ресурсов для изучения, небольшое сообщество. Нужен уверенный английский язык для понимания оригинальной документации.675
БОльшая часть вакансий подразумевает связку Ruby + Ruby on Rails.
RustУниверсальный язык. Разработка ОС.
Фронтенд и бэкенд веб-приложений. Разработка игровых и браузерных движков. Блокчейн-технологии.
Считается сложным в изучении для новичков – мало вспомогательной литературы и небольшое сообщество.Cовместим с Mac и Unix-подобными системами. Из успешных проектов — Dropbox, Coursera.
Язык развивается интенсивно, поэтому не хватает актуальной литературы для изучения.
75 В будущем возможна гораздо бОльшая востребованность.
DartСоздание веб-приложений, серверов. Создание IoT-устройств. Позиционируется как альтернатива JavaScript.
Умеренно лёгок в изучении.
На данный момент считается скорее дополнительным языком, поэтому не рекомендуется изучать его в качестве главного ЯП.
Из плюсов: удобен в разработке. Высокая скорость исполнения кода.  Создан и поддерживается Google.Малое сообщество для поддержки в изучении. За пределами Google не так популярен.
Сложно спрогнозировать перспективность.
77
Небольшой спрос, но в то же время и маленькая конкуренция.
RАнализ данных. Машинное обучение. Статистическая обработка данных.


 

Умеренная сложность в изучении.

Большая мощность. Открытый исходный код. Большие статистические возможности.
R — это статистический язык, поэтому не такой интуитивный, как Python.
БОльшая часть литературы на английском языке.
612
Гораздо меньший спрос по сравнению с Python.

Главное – не бояться ошибиться и выбрать «не то», не предаваться бесконечной рефлексии, а действовать. Пробуйте изучать разные интересующие вас направления и технологии, как можно больше практиковаться. В процессе работы с языком почувствуете, нравится ли вам работать с этим ЯП, интересны ли задачи, которые можно решить с его помощью. Стоит помнить, что язык программирования выбираете, скорее всего, не «единственный» — ведь за время профессиональных поисков и работы над разными проектами многие разработчики осваивают несколько. Успехов в учёбе!