easimonenko Evgeny Simonenko

Как мы узнаём, какой язык программирования самый популярный

15 Dec 2021 |  Explainer  |  Programming Languages   Ratings  

Выясним, как вычисляются рейтинги языков программирования, какие языки программирования наиболее популярны, и что нам с этой информацией делать.

В декабре 2021 года Python остается одним из самых популярных языков программирования. Об этом мы узнаем из рейтингов IEEE Spectrum, TIOBE, PYPL. Однако рейтинги GitHub Octoverse и Stack Overflow Annual Developer Survey сообщают нам, что Python на 2-м месте, а GitHut, что лишь на 3-м. А самым популярным является JavaScript. Дело в том, что у разных рейтингов разные задачи и методики подсчета. А значит пора разобраться, как устроены эти рейтинги и для чего они нужны.

Место TIOBE IEEE Spec. PYPL GitHub Oc. Stack Overf. GitHut
1 Python Python Python JavaScript JavaScript JavaScript
2 C Java Java Python HTML / CSS Java
3 Java C JavaScript Java Python Python
4 C++ C++ C# TypeScript SQL CSS
5 C# JavaScript C / C++ C# Java PHP
6 Visual Basic (.Net) C# PHP PHP Node.js Ruby
7 JavaScript R R C++ TypeScript C++
8 Assembly Language Go Swift Swift C# C
9 SQL HTML Objective-C C Bash / Shell Shell
10 Swift Swift Matlab Ruby C++ C#

TIOBE

Если вы когда-нибудь слышали о том, что какой-то язык стал самым популярным, то скорее всего эта информация была основана как раз на рейтинге TIOBE. Как написано на странице рейтинга, для его подсчета учитывается количество квалифицированных специалистов, курсов и поставщиков, использующих данные языки. Также выявляется популярность в поисковых системах, таких как: Google, Bing, Yahoo, Wikipedia, Amazon, Youtube и Baidu. Этот рейтинг позволяет понять, соответствуют ли ваши навыки требуемым, и какой язык предпочесть для вашего нового проекта.

В статье “TIOBE Programming Community Index Definition” дается подробная методика для этого рейтинга. Деления по категориям областей применения в этом рейтинге нет. В рейтинг включаются только тьюринг-полные языки. Как следствие в рейтинге не увидим HTML, XML, CSS. Также у языка должна быть страница в Википедии, и на этой странице должно быть указано, что это язык программирования. Поэтому ASP, Excel и некоторые другие не были в него включены.

Само рейтинговое значение считается как среднее по всем поисковым системам нормализованных значений количеств упоминаний:

\[(hits(PL,SE1)/hits(SE1) + ... + hits(PL,SEn)/hits(SEn))/n\]

IEEE Spectrum

IEEE Spectrum имеет, пожалуй, одну из самых комплексных методик подсчёта, которая описана в статье “IEEE Top Programming Languages: Design, Methods, and Data Sources. Here are the metrics we use to build an overall ranking of programming language popularity”. Выбор языков для вычисления рейтинга начинается здесь с выявления языков с наибольшим числом поисковой выдачи Google. Отобранным языкам назначается одна или более категория в соответствии со сферой применения: для веб-, мобильных, корпоративных и настольных приложений, и для встраиваемых систем. В итоге отбирается 55 очень разных языков: здесь и распространённая Java, и старички Cobol с Fortran, и нишевый Haskell.

Дальше анализируются восемь источников данных. Из поисковика Google выясняется, сколько информационных ресурсов можно найти для каждого из языков в данный момент времени. Из Google Trends узнают, как часто ищут информацию о данном языке (также в данный момент времени). Из Twitter получают информацию об упоминаниях языка. На GitHub смотрят на количество новых репозиториев кода на каждом языке и сколько репозиториев было обновлено. Первое нам говорит о заинтересованности в языке, а второе – о сохранении интереса к нему. На Stack Overflow выявляется количество вопросов с тегом заданного языка. На Reddit считается количество упоминаний языка в размещенных ссылка и комментариях. Также определяется количество упоминаний языка на Hacker News. Все эти показатели берутся за прошедший год. Также выявляется текущий запрос на специалистов по языку на рынке труда на CareerBuilder и IEEE Job Site. Наконец, анализируется собственная цифровая библиотека IEEE Xplore Digital Library на упоминание языка за последние два года. Затем все эти показатели суммируются с некоторыми весами. Интересно, что можно задать свои веса и пересчитать с ними свой рейтинг.

Также можно смотреть популярность по категориям. Например, для Веб самой популярной тройкой будет: Python, Java и JavaScript; для корпоративных, настольных и научных приложений – Python, Java, C; для мобильных приложений – Java, C и C++; а для встраиваемых систем – Python, C, C++.

PYPL

Как гласит страница рейтинга PYPL (PopularitY of Programming Language), он основан на анализе поиска в Google учебных материалов по языку программирования. Для получения этих данных используется Google Trends. Это простой рейтинг, который может нам говорить о том, какие языки сейчас больше всего изучают, а значит заинтересованы в овладении ими. Этот рейтинг полезен новичкам в программировании, а также тем, кто решает сменить язык программирования. Деления по категориям здесь нет.

GitHub Octoverse

GitHub Octoverse интересен публикуемой на нём статистикой ежегодного опроса пользователей GitHub. В рейтинге языков программирования лишь десять позиций и приведены они в форме графика, начиная с 2014 года. В целом Github Octoverse напоминает таковой у Stack Overflow, о чём ниже.

Stack Overflow Annual Developer Survey

Как и GitHub Octoverse рейтинг от Stack Overflow Stack Overflow Annual Developer Survey вычисляется на основе опроса разработчиков. Так как в опросе фигурируют не просто языки программирования, а технологии разработки, то другой сообенностью рейтинга языков является включение в их состав, помимо языков программирования, также языков скриптов (Shell), запросов (SQL), разметки (HTML и CSS) и сред исполнения (Node.js).

GitHut

Рейтинг GitHut использует данные с сервера GH Archive, специально созданного для удобства анализа данных с GitHub. Методика подсчета описана на странице проекта. Интересен тем, что в него попадает то, что GitHub считает языком. Соответственно, здесь мы видим CSS, TeX. А так как GitHub это про открытое ПО, то предпочтения его разработчиков определяют то, что в рейтинге фигурируют CoffeeScript, Emacs Lisp и Vim Script.

GitHut 2.0

Рейтинг GitHut 2.0 также основан на данных GH Archive. Устройство рейтинга описано на его странице. Этот рейтинг, как и предыдущий, прекрасно показывает, как меняются предпочтения разработчиков, когда они разрабатывают открытый код: появляется такая «экзотика» как Nix, Elixir, некий DM.

Languish

Рейтинг Languish использует данные рейтинга GitHut 2.0. Здесь также можно обнаружить то, что в других рейтингах мы не увидим: Jupiter Notebooks, например.

Выводы

Мы выяснили, как работают рейтинги языков программирования, на каких данных они основаны и чем они различаются между собой. Эти различия определяют информативность рейтингов для той или иной цели: хотим ли мы выбрать язык для изучения программирования, или чтобы работу найти, а может для своего нового проекта. Нам также должно быть понятно, что нет универсального рейтинга, и нет самого популярного языка программирования в абсолютном смысле. И в этом отношении наверное самыми интересными рейтингами выглядят IEEE Spectrum как использующий самое большое число источников данных и позволяющий себя настраивать и выбирать категории языков, и рейтинг от Stack Overflow как основанный на информации, полученной от самих программистов. Рейтинги же основанные только на данных от GitHub имеют перекос в сторону открытого программного кода, где популярными могут быть другие языки, нежели используемые для закрытого кода.

Наконец, нужно понимать, что рейтинг это слепок текущего состояния, хоть и обусловленного предысторией. Но нам полезно также следить и за трендами, за тем, как меняется популярность того или иного языка. Справедливости ради стоит отметить, что многие из рассмотренных рейтингов также предоставляют информацию о трендах в языках программирования. А это позволяет нам понять, какие языки набирают популярность, какие её теряют, а какие сохраняют статус кво на протяжении длительного времени. По версии TIOBE язык Python является тем языком, популярность которого растет последние несколько лет, а рейтинг JavaScript стабильно не меняет из года в год.

Более полная сводная рейтинговая таблица

Место TIOBE IEEE Spec. PYPL GitHub Oc. Stack Overf. GitHut GitHut 2.0 Languish
1 Python Python Python JavaScript JavaScript JavaScript JavaScript JavaScript
2 C Java Java Python HTML / CSS Java Python Python
3 Java C JavaScript Java Python Python Java Java
4 C++ C++ C# TypeScript SQL CSS Go Go
5 C# JavaScript C / C++ C# Java PHP TypeScript C++
6 Visual Basic (.Net) C# PHP PHP Node.js Ruby C++ TypeScript
7 JavaScript R R C++ TypeScript C++ Ruby PHP
8 Assembly Language Go Swift Swift C# C PHP C
9 SQL HTML Objective-C C Bash / Shell Shell C# C#
10 Swift Swift Matlab Ruby C++ C# C Ruby
11 R Arduino TypeScript PHP Objective-C Shell Shell
12 PHP Matlab Go C R Nix HTML
13 Visual Basic (Classic) PHP Kotlin PowerShell VimL Scala Dart
14 Groovy Dart VBA Go Go Dart Swift
15 Ruby SQL Rust Kotlin Perl Swift Scala
16 Delphi / Object Pascal Ruby Ruby Rust CoffeeScript Rust CSS
17 Fortran Rust Ada Ruby TeX Kotlin Jupiter N.
18 Perl Assembly Scala Dart Swift Groovy Rust
19 Go Kotlin Dart Assembly Scala DM Nix
20 Matlab Julia Abap Swift Emacs Lisp Elixir Kotlin

Что нам стоит дом построить…

Для тех, кто дочитал до конца, нескромно предлагаю ознакомиться с составленным мною рейтингом на основе рассмотренных рейтингов. Перво-наперво языки представленные в таблице в начале статьи сортируются по числу упоминаний во всех расмотренных рейтингах. Отсеиваем из них то, что не является языком программирования и упоминается слишком редко. Остаётся 15 языков. За занимаемые места даются инвертированные баллы, т.е. за 1-е место 20 баллов, за 2-е – 19, …, за 20-е – 1. За каждое неупоминание в рейтинге вычитается 20 баллов (гандикап). В итоге получается вот такая картина.

Место Язык За место Упоминания Баллы
1 Python 15 8 145
2 JavaScript 20 8 140
3 Java 23 8 137
4 C++ 48 8 112
5 C# 56 8 104
6 C 57 8 103
7 PHP 68 8 92
8 TypeScript 33 5 67
9 Ruby 94 8 66
10 Go 75 7 65
11 Swift 93 7 47
12 R 37 4 43
13 Dart 78 5 22
14 Rust 82 5 18
15 Kotlin 64 4 16

Наверное не стоит воспринимать этот мой “рейтинг” всерьёз, а скорее как развлечение, моё желание посмотреть, “а что получится, если сделать вот так”…

Результат опроса

Этот пост был сначала опубликован на Хабре, где был предложено ответить на вопрос: “Доводилось ли вам опираться на рейтинги языков программирования при принятии тех или иных решений?”. И вот как ответили читатели (на 28 декабря 2021 ответили 96 читателей, результаты округлены до целых):

  1. 84% – Нет.
  2. 6% – Доводилось, но результат был разный.
  3. 5% – Бывало и даже помогло.
  4. 4% – Было дело, не помогло.

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

Ссылки

(c) Симоненко Евгений, 2021