Я сегодня изучал индекс TIOBE, как делаю часто, и как часто делает большинство из тех профессиональных программистов, которых я знаю. Он претендует на измерение популярности языков программирования в мире, а его график изменения популярности со временем рассказывает простую историю: Java и C с незапамятных времён остаются королями языков с большим отрывом.
Но, погодите-ка, давайте не так быстро. Конкурирующий список PYPL Index (PopularitY of Programming Languages) говорит, что королями являются Python и Java, а C (учитываемый, внезапно, совместно с C++) находится где-то в глубине списка. Что происходит?
Просто у двух этих списков очень разные методологии подсчётов. Однако их объединяет одно – спорность их методологий, если учитывать, что их целью является измерение популярности языков программирования. TIOBE измеряет просто количество запросов в поисковике. PYPL измеряет, как часто люди гуглят обучающие материалы по тому или иному языку.
Обе эти меры плохие. Можно ожидать, что доступность онлайн-ресурсов будет очень отстающим индикатором. У популярного когда-то языка, теперь преданного забвению, должны остаться миллионы старых веб-страниц, посвящённых ему, полумёртвых сайтов и записей в блоги, которые никто не читал годами. А поиски обучающих материалов должны склоняться к тем языкам, которым обучают студентов. Эта мера не имеет отношения к тому, какие языки реально часто используются профессионалами-практиками.
В числах этих рейтингов есть множество аномалий. Если верить TIOBE, в прошлый раз C взлетел от самого низкого места в рейтинге до языка года за пять месяцев. Я могу поверить, что С возрождается за счёт встраиваемых систем. Но я так же легко могу представить, что этот взлёт произошёл за счёт недостатков далеко не идеального метода измерения.
Более вопиющая аномалия в обеих рейтингах – относительная эффективность Objective-C и Swift, двух языков, на которых пишут нативные приложения для iOS. Я могу поверить, что в сумме они испытывают некоторый упадок перед лицом популярности таких кросс-платформенных альтернатив, как Xamarin и React Native. Но я с трудом верю в то, что после четырёх лет раскрутки Swift компанией Apple – с моей точки зрения, языка куда как более лучшего — Objective-C остаётся более популярным и широко используемым. Я на работе сталкиваюсь с разными приложениями для iOS/tvOS/watchOS, и беседую со множеством разработчиков для iOS. Очень редко удаётся найти человека, который до сих пор не перешёл с Objective-C на Swift.
Однако истории из жизни данных не заменят, правда? Если бы с этими методологиями конфликтовал только мой личный опыт, я бы заключил, что он просто подпорчен ошибкой отбора. И я бы спокойно это сделал, если бы только не существовало другой методики измерения популярности языков программирования. Я говорю о ежегодных отчётах GitHub, где указываются пятнадцать наиболее популярных языков программирования, используемых на этой платформе. И эти числа идеально совпадают с моим опытом, и серьёзно расходятся с заявлениями TIOBE и PYPL.
Согласно отчётам GitHub от 2016 и 2017 годов, наиболее популярный язык программирования в мире, причём с большим отрывом, это Javascript. На втором месте идёт Python, на третьем Java, а на четвёртом Ruby. Это резко контрастирует с TIOBE, где указываются Java и C, а потом, с большим отрывом, Python и C++ (Javascript вообще на восьмом месте). И с PYPL, заявляющим о таком порядке: Python и Java, большой отрыв, потом Javascript и PHP.
Очевидно, что числа GitHub не отображают всю профессиональную область на 100%. Их выборка очень крупная, но касается только проектов с открытым кодом. Однако хочу отметить, что GitHub – единственный рейтинг, где Swift оказывается более популярным, чем Objective-C. Из-за этого он выглядит гораздо убедительнее. Однако его выборка, основанная на открытом коде, делает его не определяющим.
Эта статистика на самом деле имеет значение, а не просто удовлетворяет любопытство и предоставляет некую информацию об индустрии. Язык – это ещё не всё, но он всё-таки имеет значение. Люди определяют, какие языки им изучать, какую работу искать и чем заниматься, на основании их популярности и их относительной ценности в будущем. Поэтому немного неприятно, что три этих методики измерения так сильно, так радикально отличаются. К сожалению, нам, судя по всему, придётся довольствоваться гаданием на чайных листьях вместо чётких цифр.
Автор: SLY_G