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


В декабре 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

Комментарии (21)


  1. Vadem
    16.12.2021 01:17

    Всегда было интересно увидеть рейтинг по количеству вакансий. А ещё лучше по соотношению количества вакансий к количеству претендентов. И совсем хорошо было бы увидеть это в динамике. Т.е. по какому языку количество вакансий растёт быстрее всего и количество претендентов растёт не так быстро.


    1. easimonenko Автор
      16.12.2021 01:26

      В рейтинге IEEE Spectrum можно ранжировать по востребованности у работодателей и даже варьировать веса у параметров. У меня получилась такая пятёрка востребованных языков: C, Python, Java, SQL, R.


      1. Vadem
        16.12.2021 03:29

        А, точно. Об этом же есть в статье:

        Также выявляется текущий запрос на специалистов по языку на рынке труда на CareerBuilder и IEEE Job Site

        Не заметил. Спасибо. Не знаю про IEEE Job Site, но CareerBuilder вроде большой сайт.

        Правда, если убрать всё кроме CareerBuilder, у меня первые 3 места такие получились: R, J, D. Похоже, для языков с однобуквенными названиями рейтинг с CareerBuilder не совсем корректно считается, но в остальном интересно.


    1. GospodinKolhoznik
      16.12.2021 09:03

      По Коболу же.


  1. forthuser
    16.12.2021 01:19
    +1

    Можно ли оценить полезность такого рейтинга? ????
    Rosetta Code: Popular Programming Languages
    image


    1. easimonenko Автор
      16.12.2021 01:32

      Первый раз вижу. Описания не нахожу. Похоже на рейтинг основанный на данных по решению числодробильных задачек. Так? И тогда не удивительно, что там Julia в топе.


      1. forthuser
        16.12.2021 01:38

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

        P.S. Кстати, например, на Github никак не отслеживается популярность реализации какого то самостоятельного языка на выбранном.
        И тогда показатель популярности имеет смысл соотнести с целевым языком или языком его реализации?


      1. unn4m3d
        16.12.2021 13:19

        >числодробильных задачек

        Сишка скромно болтается где-то посередине между Пайтоном и Джавой, найс топ, ну в этом хотя бы не засветились такие замечательные языки программирования как HTML и CSS, и на том спасибо.


        1. easimonenko Автор
          16.12.2021 13:26

          1) Пока не разберёшся, как устроен рейтинг, как и что он считает, такие вещи будут вызывать недоумения.

          2) Язык != язык программирования. Многие рейтинги как-раз про языки в широком смысле. Отсюда в рейтингах HTML и CSS. Рейтинг Stack Overflow ещё шире: он про технологии.

          3) Рейтинг языков порталов для решения задачек, например, Codeforces, будет также иметь деформацию в сторону тех языков, что чаще используются при сдаче решений, а не тех, что выбирают профессионалы в области HPC, к примеру.


          1. forthuser
            16.12.2021 13:51

            Язык != язык программирования. Многие рейтинги как-раз про языки в широком смысле.

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

            P.S. Думаю, что и разные конкурсы решения задач,
            как, к примеру, AoC Advent of Code с нами уже 7 лет тоже учитываются в публикуемых рейтингах (возможно как результат своего косвенного воздействия в инфопространстве)


  1. VaalKIA
    16.12.2021 01:59
    +2

    Когда вижу в рейтинге что-то вроде Basic, Ada, Fortran, Lisp, но нет Object Pascal, то просто прохожу мимо, не может язык, который всё ещё преподают, так проигрывать в популярности.


    1. saboteur_kiev
      16.12.2021 02:18
      -2

      Fortran впереди Go и Perl для меня показатель, что рейтинг не соответствует действительности.


    1. Jacen11
      16.12.2021 04:01
      -1

      просто вы не в курсе зарубежного рынка. Там эти старые языки очень популярны, из этого списка особенно Basic. Запредельное количество легаси и в офис писать макросы на ворд будет странно нанимать джависта. Паскаль вообще только в россии наверное преподается. На западе уже давно перешли на современные языки


      1. GospodinKolhoznik
        16.12.2021 09:05
        +3

        На западе уже давно перешли на современные языки

        На scratch что ли?


      1. saboteur_kiev
        16.12.2021 14:58

        Из списка Fortran Go и Perl вы увидели Basic?

        Я против Basic, кстати ничего против не имею. Но пишут на нем не так уж и много. Не нужно сравнивать пару макросов для автоматизации мелочей (скорее всего не написанных а скопированных со StackOverflow и немного подправленных) и разработки полноценного приложения.


        1. Jacen11
          16.12.2021 17:18

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

          по остальным языкам, у них даже кобол еще в ходу, их разработка началась на десятилетия раньше нас, понятное дело там миллиарды строк кода на этих мамонтах и их надо дописывать. Только это уже будут банки, заводы


          1. forthuser
            16.12.2021 18:00

            В Москве библиотеки списывают книги и по каким то «стародавним» языкам можно что найти, забронировать на сайте и забрать в библиотеке в личное пользование.

            Сейчас проходит такая очередная акция.
            Книги по Паскаль, к примеру


  1. N0zzy
    16.12.2021 06:09

    Имхо, нужно составлять рейтинг популярности языков в какой то определенной области применения. А здесь все в одной каше. Тема статьи языки программирования и берутся в пример html, css - ну, да, ну, да. Ещё есть и xml, json и т.д, и т.п.


    1. panzerfaust
      16.12.2021 08:23

      ошибся веткой


    1. easimonenko Автор
      16.12.2021 14:00

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


  1. panzerfaust
    16.12.2021 08:25
    +4

    Меня не покидает ощущение, что эти регулярные рейтинги языков являются студенческими курсовыми работами по теме умения сбора и агрегации открытых данных. Потому что вроде работа проведена, результат есть (зачет получен) - а применимость его нулевая. Ну вот кто задается вопросом "питон или джаваскрипт или может быть джава", кроме очередных вайтишников? Это же инструменты из разных областей.

    Все равно что сравнивать популярность танков и легковых машин. Легковушки явно популярнее - но какая нам польза от этого знания?