Хабратоп. Самые востребованные языки программирования в 2022 году +4



Подводим итоги 2022 года в рейтингах языков программирования — от IEEE и TIOBE до не столь известных, например RedMonk и GitHut. Цифры, подробности, наблюдения и, конечно, раскрытие сути разнообразных топов ждут под катом. 


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




LinkedIn


Начнём с ориентированного на карьеру LinkedIn, где в январе вышла статья с такой инфографикой о количестве вакансий в Европе и США, размещённых на In:



В топе — ожидаемо распространённые и зрелые языки. Любопытно, что в США больше востребован специфический С++, а не широкий кросс-платформенный C#. Хорошо видно, что кроме массовых и относительно простых по-прежнему популярны далёкие от хайпа Ruby и Perl.


Перейдём к другой стороне востребованности — простой популярности языков в сети. Она не отражает всей картины объективно, но может послужить ориентиром: в августе 2022 Python достиг самой высокой популярности по версии TIOBE за всё время существования этого индекса.



TIOBE


Суть рейтинга TIOBE — расчёт количества упоминаний языка в вебе. Это может показаться сомнительным. Однако высочайшая популярность по TIOBE за пару десятков лет существования рейтинга — это хороший показатель. 


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



Именно Python претендует на звание популярнейшего языка за весь год, а не только самого перспективного по росту популярности.


От LinkedIn и TIOBE перейдём к иным цифрам.



RedMonk


RedMonk — это рейтинг популярности ЯП по сводным данным Github и StackOverflow, выбранных из-за размера и открытости данных. Авторы говорят о своём рейтинге как о ценном потому, что он позволяет делать прогнозы. 


Для начала — графики по этим данным за 10 лет:



Python показывает медленный, но устойчивый рост с 2016 года. Самый достойный его конкурент — TypeScript, сочетающий гибкость JS и строгость типизированных языков. Внимания стоит и Kotlin, ведь этот язык разрабатывается в JetBrains — мировом лидере в разработке IDE. Эти люди хорошо знают, каким должен быть удобный язык.


Добавим, что, согласно The State of Open Source, Kotlin для мобильной разработки сегодня применяется чаще, чем раньше. И на графике выше мы видим подтверждение этому. А ещё напомним: приложения Android запускаются на Win 11. Вы можете сказать, что Microsoft уходит из России, но в страну приходит Linux. К тому же работать можно не только из любой точки мира, но и на (почти) любую точку мира. Например, в сфере мобильной разработки.



Вернёмся к топам. Вот диаграммы популярности от RedMonk на первый и третий кварталы 2022 года:




Лидеры рейтинга:


1. JavaScript.
2. Python.
3. Java.
4. PHP.
5. C#.


Почему первая тройка — снова JS, Python и Java? Это языки с огромным числом пакетов и инструментов, а каждый пакет любого языка — это, по сути, маленький язык, написанный с помощью языка большого. И со всем этим нужно разбираться. Вопросы возникнут неизбежно, и не всё решает документация.


  • JavaScript и его де-факто стандартный менеджер зависимостей npm достигли 1 000 000 пакетов ещё в июне 2019 года. Такое количество (вкупе с возможностью быстро освоить язык на уровне новичка) порождает огромное число вопросов на Stack Overflow. А если хочется выстроить разработку на JS аккуратно и автоматизировать её процессы, для начала создайте новый пакет.
  • Python и стандартный pip — это 418 722 пакета. Немного, но учитывайте выразительность Python и философию, суть которой — писать краткий, ёмкий код, решающий одну задачу одним способом.
  • Java — это более 30 000 000 пакетов в репозитории Maven — менеджере пакетов Java. 

Изучить все эти языки, причём не только в теории, но и на практических задачах, вы сможете на наших курсах:



Лидерство этих языков на Github и на SO вполне понятно. А вот неожиданности: выходит, F# и Fortran, Erlang и Clojure — не такие редкие, как может показаться, а слухи о смерти непопулярности PHP сильно преувеличены. Более того, именно в этом году зарплаты PHP-разработчиков резко выросли. Смотрите исследование SuperJob, в четырёх категориях квалификации — от джуниора до опытного старшего специалиста:



PHP перестал быть языком хайпа, но его востребованности это не повредило. Первые строчки занимает CSS — вездесущий язык фронтенда: в иных топах CSS, особенно как отдельный язык, встречается нечасто.


Обратите внимание, насколько за полгода сместился HCL — язык конфигурирования Hashicorp. Этот язык, по данным The State of Open Source (годовом отчёте об Open Source и языках программирования от Github), в 2022-м оказался самым быстрорастущим на Github. Процитируем репозиторий новичка топов:


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

Итак, HCL — это язык, чтобы писать языки конфигурирования. Его основа — лаконичный, удобный для IT-инфраструктуры Go.


Между тем в The State of Open Source отмечают, что с 2021 года Go, которому уже 10 лет, чаще стали применять в обычной разработке. Динамика применения Go на Github принесла ему 5-е место за год. И вот вся картина роста распространения языков на Github за 2022 год. Этот топ указывает на самые перспективные языки GitHub.


Ниже остановимся на The State of Open Source подробнее:



The State of Open Source



Обратите внимание на места с 7-го по 5-е: рост от Makefile до Go указывает на важность практик DevOps (инфраструктуры как кода) в разработке. Стать специалистом-практиком в DevOps вы сможете на нашем курсе.



А что же с Python? Взрыв на Github подходит к концу — язык обретает стабильность. И смотрите: последние 4 языка идут очень близко друг к другу, а потому падению Python не стоит придавать большого значения.


И ещё одно представление этих данных, об использовании языков на Github за последние 8 лет:



Ruby — язык с весьма специфичным синтаксисом — просто рухнул, а TypeScript, который обогатил JS типами, — взлетел. И стабильно растёт типизированный динамически Python с подсказками типов из модуля typing. Спасибо, Гвидо! А если вы не хотите выбирать между Python и TS, то вам подходит курс по FullStack-разработке на Python, где вас на практике научат создавать сайты и приложения с нуля.




GitHut 2.0


GitHut 2.0 — это ещё одно представление данных Github, оно показывает число:


  • пул-реквестов;
  • выполнений команды git push, зафиксированных на сервере;
  • проблем и вопросов репозитория;
  • людей, которые добавили репозиторий в избранное.


Пул-реквесты


Взрыв JS позади, а C++ набирает обороты, видимо, благодаря упрощениям в новых стандартах.



Пуши


Пуши — это отправка кода на сервера, как она есть, именно вашего кода, а не того, что вы предлагаете в запросах на слияние вашего и чужого кода. Здесь хорошо видно, что люди поверили в Python: намного чаще стали вкладываться в чужой код.



Звёзды


А выше видим относительно равномерный рост интереса к Python. Звёзды на Github — способ выразить своё отношение к коду и/или добавить его в избранное, отметить для своих целей и т. д.



Вопросы и проблемы


Падение числа проблем и вопросов JS, вероятно, связано со снижением его популярности вообще. Python продолжает уверенно лидировать. С ним чаще работают — и проблем возникает больше.


От разнообразных данных с Github перейдём к ещё более взвешенному рейтингу.



IEEE Spectrum


IEEE Spectrum — логичное завершение Хабратопа — 2022. Этот рейтинг учитывает Google, StackOverflow, Github, группы сайтов IEEE, а кроме того, посвящённые карьере ресурсы, например CareerBuilder и, более того, Twitter и Reddit. 


Twitter — хорошее место, чтобы получать информационный срез о развитии IT-технологий, а Reddit — чтобы рассказать о проекте и поговорить с его целевой аудиторией неформально. Поэтому учитывать их имеет смысл. Смотрим на годовой топ IEEE:



Python и здесь в лидерах. Хорошо видно, что С, по крайней мере с момента выпуска последнего стандарта, поймал восходящий поток. Редко упоминаемый SAS выше, чем Kotlin. И это — напоминание, что область анализа данных шире и богаче, чем самый разнообразный хайп вокруг неё. 


Данные — это и есть информация, с которой и работают информационные технологии. Поэтому в практичных топах верхние строчки занимает SQL — язык структурированных запросов к серверам баз данных. Ниже — рейтинг IEEE по вакансиям:



А ещё — исследование портала Statista об использовании языков программирования за весь год, в котором принимали участие более 70 000 разработчиков. SQL, как и в рейтинге IEEE, — в лидерах:



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


Помните, что никакие рейтинги не бывают идеально точными, они не могут спрогнозировать будущее на несколько лет вперёд. И даже искусственный интеллект не расскажет вам о том, какой язык будет востребован через 5 лет. 


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




Популярность ЯП в России


Данные портала Zarplan показывают, что в топе востребованности у работодателей (после самого первого SQL) по порядку — Python, JavaScript и Java:



Если говорить о популярности, то участники недавнего опроса на All Cups от группы VK в июле 2022 года назвали самые востребованные языки. Это:


  • Java (33%); 
  • Python (21%); 
  • С++ (16%).

При этом каждый четвёртый участник опроса начинал с Python, но 42% опрошенных рекомендуют начинать с Java. Почему? Возможно, это связано со спецификой аудитории All Cups, ведь часто участники опросов — состоявшиеся профессионалы и успели оценить преимущества строгой типизации и зрелую экосистему Java. Так или иначе, общая картина в России в целом совпадает с мировой.



Краткие итоги


Лидеры почти всех упомянутых топов — Python, JavaScript и Java. У первых двух — простота, низкий порог входа и широта применения. Python сегодня применим для интернета вещей, а JS продолжает держаться благодаря серверному Node.js и разнообразию технологий фронтенда. Строгий и многословный Java живёт благодаря универсальности и зрелости экосистемы. Всё это логично.


Сегодня в топах удивляют HCL, Go и языки для терминала — развитие инфраструктуры в IT. По сути, DevOps — это разработка для разработки, и, если вы хотите идти в ногу со временем, вкладываться в экономику, в информационных технологиях решать проблемы скорости — добро пожаловать в DevOps.



А если хотите обрести крепкую опору под ногами — обратите внимание на Data-профессии, связанные с топовым среди навыков SQL:



Новогодняя акция — скидки до 50% по промокоду HABR:






Комментарии (13):

  1. YuriPanchul
    /#24976158 / +2

    Ну хорошо, хоть Verilog, SystemVerilog и VHDL в каких-то рейтингах появились. Хоть они и языки программирования только в одном из аспектов.

  2. Landgraph
    /#24976326 / -2

    Вот всегда было интересно. Как вы/они разделяете C и C++?

    Мне уже занадоело смотреть на C++ код типа:

    class UberCppClass {
      public:
      int megafunction();
      uint magicfunction();
    }

    Зато класс, зато проект у нас на C++…

    • RC_Cat
      /#24976620

      int megafunction(const auto& megaArray){
        for(const auto& value : megaArray){
          value...
        }
      }

      А megafunction не так выглядит?

      • Landgraph
        /#24977380

        оооо, любители пихать auto везде - для них прямо отдельный котёл в аду стоит. Особенно доставляют auto вкупе с функциями на десять экранов и великолепно именованными переменными и функциями типа auto o = getObviousValue(), угадайте что возвращающее... Баловство детей, которые не знали ничего кроме IDE.

        Вы ещё шаблоны вспомните. типа template <class T> T mathop(T a, T b) { return a + b; } при единственном упоминании во всём коде, желательно в виде auto c = mathop(2, 3). Ну чтобы точно тот, кто будет читать этот код - сошёл с ума, пытаясь понять что хотел сказать автор...

        В общем не об этом был мой вопрос.

        • ReadOnlySadUser
          /#24977926

          Я тоже долго не любил auto :)

          А потом я попробовал Haskell и теперь тоже нравится везде пихать auto, хотя моя бы воля, я бы как-нибудь и без него обошёлся)

          • Landgraph
            /#24978512

            Я не против auto как языковой конструкции, я против превращения кода (изначально строго типизированного языка) в подобие скриптового с типизацией в рантайме. Осталось auto заменить на $ перед переменной и, считай, php получился.

            Но боль даже не в этом. Язык-то остался строго типизированным. Т.е. auto это не, например, variant с кучей преобразований на лету. Бездумное использование auto тупо затрудняет чтение кода без IDE с IntelliSense, как минимум, и знания всей архитектуры проекта, как максимум (чтобы на лету понимать что нам даёт на выходе тот или иной вызов или атрибут, либо быстро найти место объявления).

            • ReadOnlySadUser
              /#24978558

              Строго типизированный != нужно указывать тип. Haskell строго типизированный язык, точно "строже" С++ (уж не знаю насколько корректно так говорить), но при этом писать типы нужно оч редко.

              Конечно С++ не Haskell, но пока код относительно высокоуровневыйии не надо ковырять байтики, не писать тип бывает лучше, чем его писать.

              • Landgraph
                /#24978688

                Коллега, Вы меня извините, но, при всём уважении, ваше заявление попахивает джаваскрптингом в ругательном смысле :)

                Я, к сожалению не писал ничего на хаскеле, но скажите о каком размере исходного кода мы говорим? Сотни тысяч строк? Миллионы? И я говорю про один « продукт». Скажем, отдельно взятый драйвер, например. Так вот я про проекты от 100к строк. В софтинке из трёх сорцов по 200 строк и двух заголовков - хоть на голове стойте.

                Это как обсуждать, например, необходимость использования сокращений (омг, имхо, лол, …), основываясь на переписке в аське, а не трудах Толстого, Достоевского и других классиков литературы. Сейчас ещё немного и мне придётся объединить комменты и развить мысль в отдельной статье. О трёх актах.

                • ReadOnlySadUser
                  /#24978696

                  Всё, что могу ответить - просто попробуйте Haskell :)

                  Остальное - очень долгая дискуссия, которую я вести не хочу. Большая часть из неё будет пересказом Core Guidelines, ведь там вполне себе нормально описано, когда auto хорошо, а когда плохо. И я по большей части согласен с Core Guidelines)

                  • Landgraph
                    /#24978826

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

                    Даже те же плюсЫ, с осуждаемыми плюшечками и фенечками, которые так любят дети, скорее набирают/сохраняют популярность.

    • Landgraph
      /#24978870

      Коллеги меня увели куда-то в дебри малозначительных особенностей синтаксиса. Мой посыл-вопрос был в теме статьи - а не кажется ли вам, коллеги, что если не разделять, на мой взгляд, искусственно С и С++, то результаты будут не в пользу других популярных языков?

      С тем же успехом можно тот же питон делить на 2 и 3 версию (которую, возможно, ещё на минорные), пхп чуть ли не на до 4, 4-5, 7, 8, молчу уже про минорные версии. Ява и яваскрипт тоже не отстают с версионированием.

  3. Expurple
    /#24979554

    Любопытно, что в США больше востребован специфический С++, а не широкий кросс-платформенный C#.

    С++ не кроссплатформенный? А на чём, по-вашему, рантайм для C# написан?