Хотите дальше читать devby? 📝
Support us

В поисках самого востребованного языка программирования

Оставить комментарий
В поисках самого востребованного языка программирования

Какой язык программирования самый популярный среди программистов? А какой из них лучше котируется на рынке? Подобные вопросы задают не только новички, подбирающие «наиболее удачный инструмент», в который стоит инвестировать свои время и силы. Эти вопросы волнуют и перманентно самосовершенствующихся программистов-профи, которые стремятся угнаться за постоянно меняющейся конъюнктурой рынка.

В поисках ответа мы осуществим рейд сквозь дебри рейтингов и разных методик оценки языков программирования. Кроме текущей раскладки, попытаемся спрогнозировать тренды популярности этих языков на ближайшие 2013—2014 годы.

Под катом большое число графиков, цифр и крайне субъективных спекуляций

Рейтинги на основе популярности цитирования

Компания TIOBE Software выпускает один из самых популярных рейтингов языков программирования. Поэтому для начала приведем именно эти самые последние цифры, чтобы затем побухтеть насчет их неоднозначной методологии подсчета:

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

Дополнительно остановлюсь на похожем рейтинге Language Popularity Index (LPI), потому как TIOBE — это просто «хакнутый под себя» свободный скрипт Language Popularity Index tool, который дяди из TIOBE используют для своего PR-продвижения.

И хотя, как и следовало ожидать, результаты TIOBE Index, в силу своей общей кодовой базы и принципов устройства, чрезвычайно сильно коррелируют с…

… Language Popularity Index (LPI), у последнего имеется более здравая разбивка: на языки общего назначения (как правило, десктоп-ориентированные), а также на скриптовые (как правило, веб-ориентированные). И когда мухи и котлеты аккуратно отделены друг от друга, итоговая логика расположения языков смотрится, ИМХО, куда более логичней и наглядней, чем в общей свалке TIOBE Index.

Именно поэтому дополнительно привожу таблицу (LPI) за июль 2013 года:

Здесь я специально вырезал выборку в масштабе Top20, чтобы туда попали такие новомодные гранды, как Scala, Erlang, Haskell… Даже старичок Delphi туда влез.

Ознакомившись с цифрами, переходим ко второй части: почему все эти замеры популярности достаточно абстрактны и сомнительны?

Методология, которая многим не нравится

Основная часть рейтинга компании TIOBE базируется на подсчете количества упоминаний исследуемых языков программирования на веб-страницах Интернета, а еще точнее — на фиксации изменений частоты их упоминаний (это т. н. lagging indicator). На основе однотипных поисковых запросов делается статистический анализ, где каждые полгода эти выборки повторяются, после чего отслеживается динамика того, как изменилось интернет-цитирование (упоминание) каждого из них (примитивный прообраз ТИЦ для мира программирования).

Затем в дело вступают специи некие корректирующие коэффициенты (например, учет количества выпущенных обучающих курсов за этот период и прочих косвенных факторов), в итоге получаем тот самый TIOBE Index (точная его формула более туманна и раскрыта не полностью).

Сма идея того, чтобы ведущим индикатором популярности языка сделать степень его интернет-цитирования, кажется лично мне непоследовательной и даже странной. Например, получается, что старые языки типа Си, которые просто из-за весьма почтенного возраста своего существования «нагенерили» больше всех документации, теперь обречены на вечное лидерство в подобном «забеге» популярности?

Подобных следствий-несуразностей можно привести несколько. И так считаю не один я. Недовольные «синтетичностью» TIOBE создали полностью альтернативный рейтинг, ныне известный как «PYPL: PopularitY of Programming Language index».

Вот основные свойства-отличия параллельного рейтинга PYPL перед TIOBE:

  • PYPL базируется на статистике частот поисковых запросов в заданный диапазон времени (используя Google Trends), а не на частоте упоминаний-цитирования, как у «графоманского» TIOBE;
  • PYPL мониторит более продвинутые варианты синтаксиса поисковых запросов. Например, учитываются даже национальные запросы-аналоги для всех популярных языков (а не только английский, как в TIOBE). Сами группы запросов постоянны и подобраны на основе статистики реальных запросов, в частности на основе данных от сайтов StackOverflow и Wikipedia.

Вся методика расчета индекса TIOBE — прогон цикла с подстановкой в однотипный шаблон-запрос +«<language> programming» названий всех исследуемых языков программирования (вместо макроса <language>).

Примитивно? Хм, не то слово.

Полностью по аналогии с TIOBE рейтинг PYPL выходит одновременно с ним и выдает итоговую таблицу (Top10) в полностью аналогичном формате — вот он за июль 2013:

Ниже идет сопроводительный график динамики популярности языков по версии PYPL:

Глядя на эти данные, в качестве базовой интерпретации графиков PYPL позволю себе сделать следующие утверждения:

  • популярность C# всегда колеблется в любопытной противофазе к популярности языка C в любой контрольный период;
  • рост C# коррелирует с групповым падением C++ и VBasic и, скорее всего, идет за счет последних;
  • рост Python коррелирует с падением Perl и, скорее всего, идет за счет последнего;
  • Ruby так и не смог стать мейнстрим-языком, сохраняя статус эзотерического языка;
  • стабильно растущими можно обозначить лишь два языка: Python и Objective-C;
  • стабильно теряющими свою популярность можно назвать языки Perl и VBasic;
  • языки Java и Javascript сохраняют стабильную популярность в течение уже долгого времени;
  • явные лидеры рынка, популярность которых пока в стратосфере, — это Java и PHP;
  • популярность нишевых конкурентов C# и Java пока несопоставима, с сильным креном в сторону Java;
  • при сохранении текущего тренда Python станет популярней своего прямого рыночного конкурента PHP (на новых/текущих проектах) уже в 2015 году.

Популярность языка по факту

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

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

Поэтому… только количество реально написанного кода о чем-то говорит! Предлагаю заглянуть в языковые рейтинги, основанные на подсчете объемов реального кода, понаписанного используемого в мире.

Обратимся к данным внутреннего исследования CodeEval, проведенного этой компанией в начале 2013 года с целью определения популярности языков, используемых при решении ее задач. CodeEval — это новомодная онлайн-платформа, совмещающая решение сложных программных задач на турнирном принципе и встроенные рекрутинговые функции, участие в которой в качестве работодателей принимают такие компании, как eBay, BitTorrent, Warner Bros, Blizzard и множество других. Всего в этой системе сейчас около 25 000 активных пользователей-программистов, и вот какие языковые предпочтения они демонстрировали на протяжении первого квартала 2013 года:

Ну, Top5 отсюда практически идентичен верхушке рейтинга PYPL, хотя некоторые языки и следуют немного в ином порядке (перечисляю по убыванию популярности): Python, Java, C++, Ruby, PHP.

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

Из всех подобных рейтингов наиболее удачным я считаю гибридный «народный» рейтинг от RedMonk, который одновременно базируется на активности тем на StackOverflow, а также популярности реальных языков, используемых на бескрайних просторах хранилища исходников Github. Этот рейтинг выходит с 2010 года, когда ИТ-аналитики из компании RedMonk Дрю Конвей (Drew Conway) и Джон Майлс (John Myles) впервые заметили интересную зависимость между этими двумя показателями. Эмпирически было установлено, что каждый сезонный всплеск популярности какого-то языка программирования на StackOverflow синхронно наблюдался и на полностью независимом Github. Таким образом, RedMonk Ranking — средневзвешенный граф популярности языков программирования на базе активности кодеров на этих двух популярных ресурсах.


В большем разрешении этот любопытный график можно рассмотреть по этой ссылке.

Недостатки метода также очевидны — все то же большое количество личных проектов, некоторая избирательность (Github хорош, но почему не Sourceforge или Bitbucket, где языковые предпочтения публики заметно отличаются?), большое количество заброшенных и старых проектов, которые вносят свои искажения в новые подсчеты и т. д. и т. п.

Убегая от томящей душу неопределенности, обратимся к последней и высшей инстанции — поинтересуемся мнением работодателей: ведь это они в конечном счете решают, каким языкам доминировать в современном мире ИТ, разве нет?

Кто деньги платит, тот язык и выбирает

Компания Jobs Tractor постоянно мониторит все предложения о работе в Твиттере от ведущих ИТ-компаний мира. По состоянию на июль 2013 года текущая раскладка спроса вот такая:



Здесь полностью подтверждаются данные рейтинга PYPL, где в качестве наиболее востребованных фигурирует троица: Java, PHP, Objective-C. А вот дальше начинаются отличия, впрочем, не столь принципиальные.

Ниже приводится рост популярности языков в предложениях работодателей — в динамике он изменялся таким образом:

Лишь пару замечаний по поводу приведенных графиков:

  • даже если объединить доли предложений ASP.NET и C# вместе, то все равно общий спрос на технологии от Microsoft относительно скромный;
  • количество предложений для ObjectiveC/iOS-программистов больше, чем на Android/Java, и это притом, что рыночная доля iOS-устройств   ощутимо меньше  ;
  • если сравнить динамику роста Ruby c PHP — картина и вовсе рвет шаблоны. Я что-то пропустил, и на Ruby действительно создается столько новых проектов?

Чтобы как-то перепроверить эту статистику и не шастать при этом по отдельным специализированным сайтам, я обратился к крупному агрегатору предложений о работе — indeed.com, который к тому же умеет выявлять тренды между частотой подобных предложений.

Тренды программостроения, рассказанные показанные через графики

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

Сначала общий вид вакансий по всем языкам:

Очевидно, что лидеры в общем количестве заявок — C, Java и Javascript.

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

Как видим, если смотреть в динамике, то наблюдается взрывной рост предложений работы по ObjectiveC, Erlang и снова Ruby. И хотя их абсолютное количество существенно ниже предложений, например, по Java, график однозначно показывает, в какую именно сторону происходит постепенный дрейф популярности востребованности языков.

О’кей, чтобы лучше понять тренды возжеланий работодателей (по касательной с которыми развиваются, собственно, сами ИТ-технологии), начнем ковыряние потаённых желаний работодателя/рынка с более общих вещей:

Но если посмотреть на относительную динамику, то…

... тема Cloud, начиная с 2010 года, буквально уходит в облака (рост 4.000%), и даже перспективный Mobile на этом фоне напоминает жалкого земляного червяка, «рожденного ползать».

Теперь пройдемся по основным группам языков и начнем с «жудаснага сутыкнення супрацьлеглых сіл» — Java против .Net:


Хорошо видно, что спрос на Жабу душит заметно сильнее, чем стек основных .Net-технологий, но если посмотреть на их динамику роста ниже…

… то я бы никому не советовал ставить крест на уже и так решетчатом C#.

Теперь сменим театр боевых действий и посмотрим на схватку скриптовых тяжеловесов на рынке труда, вот общая картина:

А ниже, собственно, показан процент относительного роста спроса на скриптовый люд:

Статистика Jobs Tractor тут также подтверждается — спрос на Ruby растет стремительно! А вот Perl — всё так печально… что даже выход революционного Perl 6, похоже, эту ситуацию не переломит. Основа спроса на «перловиков» — поддержка огромных завалов из старого кода, «нагенеренных» в его золотое время.

Очень интересная ситуация на рынке баз данных: здесь рулят Oracle, MS SQL Server, MySQL:

А лидеры динамики роста спроса… никогда не угадаете (см. ниже):

Спрос на Hadoop-специалистов взмывает вверх (на 200%), а снизу его подпирают Hbase и MongoDB — ну, прямо весь свет noSQL собрался. Полого стелющаяся розовая полоска вдоль оси абсцисс — это MySQL, на него спрос пока сохраняется постоянным.

Под конец мне захотелось отдельно глянуть на динамику роста новомодных функциональных языков:

Тут оставлю без комментариев несомненное лидерство Scala, чтобы ниже обратить свой взор, наоборот, на старую гвардию:



Ассемблер более популярен, чем старичок Delphi! Сразу вспоминается анекдот: «А как дышал, как дышал...» — см. наше недавнее интервью Всеволод Леонов: ”с Visual Studio мы будем соревноваться «по правилам», этот матч ещё не закончен”.

И хотя картина у Delphi безрадостная…

…именитый старичок-таки вяло дрыгается, и это дает хоть какую-то надежду:

Закончить этот пункт позвольте еще одним свежим исследованием популярности языков программирования (паттерн-результат у них всех общий), разве что в этом случае, кроме агрегации количества предложений работы и требуемых работодателями языков…

… автор исследования также любезно вычислил и среднюю предлагаемую неместную зарплату по этим языкам, которая как ничто иное подкрепляет волю и интерес программиста:

Попытка общего вывода

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

Говоря более серьезно, общее больное место подобных рейтингов — их узкий фокус. В таких рейтингах не видно ничего, кроме мейнстрима. Молчаливо предполагается, что везде речь идет лишь о рынке персональных компьютеров, а что насчет мейнфреймов IBM, например? Или мира специализированных финансовых языков, «где по-настоящему большие деньги водятся», — тот же Slang от Goldman Sachs, на который этот финансовый гигант даже образовательные курсы время от времени собирает, дабы восполнить нехватку людей, желающих исключительно хорошо зарабатывать. В России в таких рейтингах обязательно учитывают языки типа 1C, но здесь этого нет.

Наиболее сильные точки роста наблюдаются там, где удачные сами по себе языки органично накладываются на популярность их родной платформы. Прежде всего я имею в виду стремительный взлет Objective-C, а также «неувядающий в веках» Java, популярность которого в последнее время весьма заметно допингуется со стороны Android. Впрочем, тот же фактор может развернуться и в отрицательный знак, как, например, спрос на Objective-С, который медленно падает вместе с сокращающейся в последнее время рыночной долей iOS, — здесь судьба языка становится заложником родной платформы.

В рамках этого тренда стоит упомянуть, что выход Windows 8 заметно подстегнул популярность C#, который показывает наиболее сильный прирост в последнее время (кстати, по версии PYPL — это был самый быстрорастущий язык в 2012 году).

Общая ситуация сводится к задаче: на что более выгодно ориентироваться конкретному программисту — на текущий спрос (и тогда это Java, PHP, Objective-С и мобильные технологии)? Или все-таки на перспективу, с попыткой попасть в «фазу наибольшей востребованности» завтрашнего дня, и в этом случае ставку лучше сделать на Python, Ruby, Scala и облачные технологии. Более консервативный вариант — «вложиться мозгами» в классику, которая имеет и будет иметь спрос еще долго, — это Java, Javascript и C#.

Примечание: все приведенные цифры актуальны на первую половину 2013 года для североамериканского ИТ-рынка труда.

Помогаете devby = помогаете ИТ-комьюнити.

Засапортить сейчас.

Читайте также
10 курсов по SQL для лучшего понимания работы с большими данными (май, 2023)
10 курсов по SQL для лучшего понимания работы с большими данными (май, 2023)
10 курсов по SQL для лучшего понимания работы с большими данными (май, 2023)
Собрали 10 платных и бесплатных онлайн-курсов для изучения SQL. Программы рассчитаны на слушателей, которые только начинают или продолжают знакомство с языком.
10 способов научиться программировать самостоятельно
10 способов научиться программировать самостоятельно
10 способов научиться программировать самостоятельно
Хотите научиться кодить и освоить алгоритмы? Собрали десять советов с чего начать изучение программирования для тех, кто только начинает своё путешествие в мир программирования и снабдили все это полезными ссылками на курсы для начинающих программистов.
Microsoft запустила обучающий сайт по Java
Microsoft запустила обучающий сайт по Java
Microsoft запустила обучающий сайт по Java
1 комментарий
Топ языков программирования по версии IEEE в 2022 году
Топ языков программирования по версии IEEE в 2022 году
Топ языков программирования по версии IEEE в 2022 году

Хотите сообщить важную новость? Пишите в Telegram-бот

Главные события и полезные ссылки в нашем Telegram-канале

Обсуждение
Комментируйте без ограничений

Релоцировались? Теперь вы можете комментировать без верификации аккаунта.

Комментариев пока нет.