Персональный сайт Олега Барабанова

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

Знаете, тема популярности и рейтинговости языков программирования настолько "холиварна", что встречается практически на любой встрече программистов. А если собрать в одном месте разработчиков на Java, C++, PHP, JavaScript - и можно будет гарантировать жаркий спор на ближайшие часов 15, с привлечением ноутбуков, утюгов и сравнением у кого размер длиннее лучше решение какой-нибудь классической задачи. 

Естественно, в бой идут разные рейтинги, такие как Индекс TIOBE, Рейтинг языков GitHub, Wappalyzer, IEEE Spectrum и пр. Но я вам честно скажу - это уже чистой воды манипуляция. Если взять за пример язык PHP и если посмотреть на рейтинги на начало 2021 года, то можно увидеть следующие соотношения:

Еще более интересно становится, если посмотреть, какие языки лидируют в этих рейтингах:

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

Рейтинг согласно индексу TIOBE

Например, индекс TIOBE рассчитывается на основе подсчета количества поисковых запросов вида `+"<language> programming"`, о чем явно написано у них на сайте в разделе "TIOBE Programming Community Index Definition". Честно говоря, я не считаю это показателем хорошей популярности языка программирования, ведь в такой же степени этот показатель может демонстрировать, например, отвратительное качество документации языка из-за чего приходится постоянно гуглить информацию по разным сайтам.

Возьмем например такой язык, как JavaScript. В браузерах он фактически стал безальтернативным, ибо другие языки (TypeScript, Golang и прочие), могут разве что в него только транспилироваться. Даже если вы будете использовать WASM - один фиг нужен JavaScript для взаимодействия с браузером.

Так вот, после транспиляции в JavaScript у вас конечно же будет набор js файлов. Но если при исполнении в браузере у вас вылезет ошибка, то ошибка уже будет JavaScript. И в процессе поиска решения вы вполне можете добавить +1 к известности JavaScript в индексе TIOBE. 

Кстати, у JavaScript документация тоже довольно таки фрагментирована по различным ресурсам и не все можно найти в том же MDN. И опять же я невзначай могу добавить +1 к популярности языка. Вы конечно можете возразить, что "раз гуглишь, значит пользуешься языком" и будете частично правы. Но надо не забывать, что я могу огромное количество информации получать непосредственно с справочного сайта по языку или из отлично работающих подсказок IDE, тем самым меньше отмечаясь в запросах в поисковиках. Поэтому не все стоит мерить количеством поисковых запросов.

Также хочу отметить тот факт, что индекс не учитывает поиск по тем же библиотекам или фреймворкам. Если я что-то гуглю по микрофреймворку Slim Framework, с которым мне один фиг работать на PHP, то вполне логично было бы добавить +1 и к PHP.

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

Рейтинг от Github

Что касается рейтингов GitHub, то тут еще проще. Не удивительно, что на первом месте у него JavaScript, т.к. Github является не только сервисом для размещения репозитория проекта, но и является хостингом, для размещения статичных сайтов, под названием GitHub Pages. Тут опять-же становятся безальтернативными связки HTML + JavaScript + CSS. Вы опять же можете возразить, что GitHub может не учитывать ветку кода, опубликованную как страницу Github Pages, но вы при этом можете не учесть, что основной код, может вполне быть в отдельной develop ветке или вообще в другом репозитории.

Помимо этого, много кода до сих пор публикуется на других площадках (GitLab, Bitbucket и пр.) или вообще размещены только в частных репозиториях. Поэтому рейтинг GitHub тоже не может являться показателем общей популярности ЯП.

Рейтинг Wappalyzer

Рейтинг Wappalyzer вообще специализируется в основном на веб-приложениях и сайтах. Не удивительно что у них PHP на первом месте ибо основывается на отслеживании количества сайтов вкупе с генерируемым траффиком. Вообще к данному рейтингу множество вопросов, ибо согласно их данным на момент  написания статьи, самым популярным сайтом, генерирующим траффик на основе PHP был github.com, который в основном был написан на Ruby и нигде нет упоминания об использовании там PHP, но при этом, что странно, нет тех же Facebook или Wikipedia. В общем - рейтинг сам по себе оставляет большое количество вопросов, даже с учетом Web-направленности.

Рейтинг IEEE Spetrum

Электронный журнал IEEE Spectrum (IEEE - Институт инженеров электротехники и электроники, знаменитая международная ассоциация специалистов в области техники), строится на основании данных с 8-ми источников (CareerBuilder, GitHub, Google, Hacker News, the IEEE, Reddit, Stack Overflow, Twitter), а сама методика сравнения описана на странице IEEE Top Programming Languages: Design, Methods, and Data Sources. Интересно,что касаемо использования поисковиков, то IEEE Spectrum, так-же как и TIOBE, использует шаблон "X language". Правда используется только один поисковик - Google. TIOBE хотя бы старались собрать данные и из других поисковиков.

Интересно, что они к рейтингу приплели такие ресурсы, как их собственный сайт вакансий  jobs.ieee.com и careerbuilder.com, в которых в основном представлены вакансии только из США. Если честно, не самые лучшие источники для такого рейтинга... Но самое удивительное, что в рейтинге языков программирования затесался HTML (аж 9-ое место!), который является языком разметки, а не программирования.

Вот честно, при всей серьезности такой организации, как IEEE, к этому рейтингу нельзя относиться серьезно, но тем не менее, всякие медиаиздания (например cnews.ru) подхватили этот рейтинг, а следом за ними и поисковики со своими агрегаторами новостей.

Итог

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

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

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

И не забываем цитату знаменитого Бьерна Страуструпа

[EN]: "There are only two kinds of languages: the ones people complain about and the ones nobody uses"
[RU]: "Есть всего два типа языков программирования: те, на которые люди всё время ругаются, и те, которые никто не использует"

Ну а если вам в спорах, на тему крутейшего ЯП будут аргументировать каким-то рейтингом, смело можно контраргументировать каким-нибудь другим рейтингом и тогда ваш спор разгорится еще сильнее, но уже на тему "Какой РЕЙТИНГ популярного языка лучше, а какой говно" 😄.