February 14, 2020

Рейтинг языков программирования 2020

#ITVDN_о_работе_в_IT

Какой язык программирования учить в 2020? Ресурс DOU собрал 9747 анкет, чтобы исследовать этот вопрос.

Коммерческое использование

Видим, что JavaScript наконец существенно опередил Java и стал самым популярным языком программирования. Среди новых языков стоит обратить внимание на Dart: он сразу занял не то чтобы большую, но достаточно заметную нишу.

На каком языке пишете по работе сейчас?

Будет удобнее иметь под рукой историю ответов на этот вопрос по годам:

На каком языке пишете по работе сейчас (2012-2020 гг.)

Здесь тяжело не заметить падение популярности JVM и рост JS-экосистемы (JavaScript, TypeScript). Похоже, на серверах JVM-стек уступает Node.js. А вот темпы снижения популярности C# уменьшились: возможно, это связано с распространением .NET Core — открытого кроссплатформенного рантайма, снимающего для пользователей проблему «привязки к вендору».

Также можно наблюдать интересную ситуацию в мире мобильной разработки: доля Swift незначительно уменьшается, Kotlin — незначительно растет, а с другой стороны, mobile first для бизнеса это уже традиционная практика. Можно допустить, что в мейнстрим пошли кроссплатформенные фреймворки (те же React Native и Flutter), а нативные языки программирования используются больше для системных задач.

Давайте посмотрим на то, какие изменения являются статистически значимыми в сравнении с предыдущим годом:

  • Рост: Python, TypeScript, Dart, и… почему-то 1C.
  • Спад: Java, PHP, Objective-C и Scala.

Любопытно, что по сравнению с 2017 году статистически значимые изменения практически такие же.

Что касается Scala, мне кажется, что тут присутствует доля «осторожности» старта проекта перед выходом Scala 3.0 (он же Dotty). Кстати, Dotty — действительно новый язык, причем совершенно фантастический.

Отметим, что почти 8% респондентов используют в качестве основных несколько языков программирования.

Личные предпочтения

Сейчас фаворитом является Python, далее идут почти на одном уровне C#, JavaScript и Java, а дальше — TypeScript.

Если смотреть в ретроспективе, можно отметить похожий на экспоненциальный рост Python и TypeScript.

Если бы вы сейчас начинали коммерческий проект и имели свободу выбора, то какой язык выбрали бы?

На первый взгляд кажется, что, чтобы увидеть тенденции, можно разделить долю выбора в следующем проекте на долю использования в теперешних проектах, но прогон этой модели на исторических данных показывает ее ошибочность, которую невозможно объяснить лишь инерцией. Из этого можно сделать вывод, что люди, принимающие решение относительно языка программирования в следующем проекте, не могут быть представлены случайной выборкой из популяции разработчиков.

Посмотрим на «индекс симпатий» — соотношение разработчиков, которые пишут код на языке Х и для следующего проекта в своей области тоже выберут Х.

Мы видим, что самые приятные людям языки — относительно новые, специализированные для своей предметной области.

Больше всего довольны (92%) своим языком пользователи Rust (а ведь этого языка даже нет в 20-ке). Очевидно, для ниши системного программирования этот язык подходит практически идеально. Дальше — Kotlin. Между 80 и 90% также разместились Swift, Go, Scala, TypeScript и даже Erlang. А первый массовый язык — C# — имеет индекс симпатий 83%.

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

Изучение новых языков

В следующем году планируют изучить новый язык программирования 60% респондентов.

Какие языки вы собираетесь изучать в следующем году?

Лидеры — Python и JavaScript, это понятно. Также можно обратить внимание на сравнительно высокую долю (по сравнению с актуальной распространенностью) интереса к Dart, Rust, ну и традиционно — Haskell.

Как и в предыдущие годы, большинство респондентов (54%) собираются изучать новый язык самостоятельно, при помощи книг и документации. На онлайн-курсы ориентируются почти 32%, а 7% собираются использовать офлайн-подход с местными преподавателями.

Дополнительные языки

Что ту сказать? Распределение данных здесь практически такое же. Можно увидеть, что доля нишевых языков в дополнительных языках меньше, чем в основных. Так что, скорее всего, для FullStack-разработки больше используются языки общего назначения (такие как JavaScript и TypeScript), чем Swift и Kotlin.

Какие языки вы используете в качестве дополнительных?

Свои проекты

Ну и, наконец, pet projects.

Какие языки вы используете в своих проектах?

Динамика опять повторяется. Что любопытно — наблюдается некоторый «ренессанс» C++ и С. Возможно, это связано с ростом сегмента интернета вещей, где DIY (Do it yourself — «сделай сам») стал своего рода субкультурой.

Итоговая таблица

Дополнительные данные

Опыт работы программистом

Что мы видим: отрасль еще растет, но темпы снизились. Большинство разработчиков имеют до трех лет опыта.

Медианный возраст — 27 лет.

Распределение по возрасту

Ниже представлена мозаика, где по одной линии координат — опыт работы с языком, а по другой — опыт работы программистом.

Мы видим, что практически 15% респондентов имеют год опыта и знают один основной язык. Затем квадратик по диагонали светлеет: люди переходят на другие языки. Видно, что на третий год 0,51 человек остается на том же языке. Дальше перетекание ослабевает: 4 года — 0,45, 5 и 6 лет — тоже 0,45. Так что, если вы не свернули с языка в первые три года, то, как правило, остаетесь с ним надолго.

Если смотреть на зависимость возраста и опыта разработчика от языка программирования, то интересна роль С++. Сейчас этот язык с самой молодой медианой возраста — 25 лет. Интересно, почему так получается. В следующем году мы попробуем создать карту возможных направлений разработки. Пока что можно строить догадки в комментариях.

Возраст разработчика в зависимости от языка

Опыт разработчика в зависимости от языка

И — первый язык программирования для разработчиков с опытом меньше года (за последние 6 лет).

Первый язык новичков

Пока по-прежнему лидирует Pascal. Но заметно, что основным языком обучения становится С++, дальше идут Python и Java.

Source https://dou.ua/