Просмотров: 50543

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


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

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

Здесь я специально вырезал выборку в масштабе 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:

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

Глядя на эти данные, в качестве базовой интерпретации графиков 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 года:

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

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

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

Эмпирически было установлено, что каждый сезонный всплеск популярности какого-то языка программирования на StackOverflow синхронно наблюдался и на полностью независимом Github. Таким образом, RedMonk Ranking — средневзвешенный граф популярности языков программирования на базе активности кодеров на этих двух популярных ресурсах.

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

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

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

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

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

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

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

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

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

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

рейтинги языков программирования популярность языков статистика данные графики востребованность tiobe рынок труда программирования TIOBE рейтинг LPI PYPL RedMonk рост спроса

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

Собирая факты в кучку, пытаясь выцедить главный вывод из нагромождения цифр и отдельных трендов, можно заявить, что наиболее главным и востребованным скиллом местного кандидата на эти неместные зарплаты я бы назвал 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 года для североамериканского ИТ-рынка труда.

dev.by, 2013

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter

14 комментариев

Следите за комментариями по RSS
  1. Ну а коле мы постоянно пытаемся угнаться за Западом, то в принципе можно и на наш рынок проводить параллель.

    Другое дело, что по сравнению с "Североамериканцами", зарплата увы и ах, с их не сравниться...

  2. Чувак, это невероятно, спасибо за подборку

  3. невероятная аналитика, вот таки статьи нам нужны, воспользуюсь для размышлений о будущем ))

  4. Отличная статья автору спасибо :)

  5. Интересная подборка) Но много букоф уж очень)

  6. Отдичная подборка, спасибо!

  7. Интересно, почему нигде нету делфи? Разве он вообще не популярен? Странно...

  8. Спасибо большое за статью.

    Виктор, вы невнимательно читали. Дельфи упомянут, включая его динамику "дрыганья" :)

  9. Статься шикарная, спасибо!

  10. Очень хорошую работу Вы проделали. Жаль только, что поздновато её обнаружил. Сам когда-то делал подобное: http://compiler.su/vse-yazyki-ekvivalentny-no-nekotorye-iz-nikh-ekvivalentnee-drygikh.php Но Ваши данные, анализ и видение тенденции - вне конкуренции. Правда, у Вас не обзора по России (в отличие от меня), но в следующий раз Вы с этим, надеюсь, справитесь.

  11. сейчас уже январь 2015г, а лучшего аналитического обзора я не нашел. Дело в подробном раскрытии методологии рейтингов. Есть ли у вас что то более новое на 2015 или конец 2014 года?

  12. Все очень доступно и понятно жаль,что цифры на 1 квартал 2013г,надо бы обновить.

  13. Сама немного занимаюсь программированием, в статье узнала много нового для себя!! очень полезная информация для всех!!

  14. Анончег

    Я понял, нужно учить C++ ..

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Зарегистрировать/комментатор

Для регистрации укажите свой действующий email и пароль. Связка email-пароль позволяет вам комментировать и редактировать данные в вашем персональном аккаунте, такие как адрес сайта, ник и т.п. (Письмо с активацией придет в ящик, указанный при регистрации)

(обязательно)


⇑ Наверх
⇓ Вниз