Как мы узнаём, какой язык программирования самый популярный
Выясним, как вычисляются рейтинги языков программирования, какие языки программирования наиболее популярны, и что нам с этой информацией делать.
В декабре 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 читателей, результаты округлены до целых):
- 84% – Нет.
- 6% – Доводилось, но результат был разный.
- 5% – Бывало и даже помогло.
- 4% – Было дело, не помогло.
Опрос не ограничен во времени, посмотрим, поменяется хоть сколько-нибудь значимо со временем.
Ссылки
- IEEE Spectrum
- TIOBE
- PYPL
- GitHub Octoverse
- Stack Overflow Annual Developer Survey
- Languish
- GitHut
- GitHut 2.0
(c) Симоненко Евгений, 2021