На чем лучше кодить
Самые популярные языки программирования 2021 года. Свежий хабратоп
В прошлом декабре мы подбивали предварительные итоги года и выкатили рейтинг популярности языков программирования. Пришло время для обновлений! В Хабратопе-2021 рассказываем, как менялись позиции ЯП в рейтингах TIOBE, PyPL и Stack Overflow. А если хочется увидеть выжимку, сразу переходите в раздел итогов. Поехали!
Отдельно хочется напомнить, что все рейтинги субъективны (кроме нашего, конечно 😉 ). Можно примерно посчитать, сколько разработчиков пишут на конкретном языке или количество поисковых запросов, но именно вы делаете выбор: лаконичный Python, полный неопределённости Си, безопасный Rust или эзотерический Chicken. А мы начнём с самого известного индекса — TIOBE.
Индекс TIOBE
TIOBE считает упоминания на веб-страницах. В рейтинге учитывается количество работающих с языком специалистов, а ещё различные курсы, где языки можно изучить. На ноябрь 2021 года рейтинг выглядит так:
В октябре 2021 года впервые за всю историю Python вырвался в лидеры TIOBE.
Порог входа в этот язык ниже, чем у Java и C, и с каждым годом Python-программистов всё больше. Популярность языка растёт так быстро, что в TIOBE разразилась настоящая драма. Первое место Python обеспечено падением C, который пять лет назад уже опускался на 10,5% — с 17 до 6,5.
Python остаётся № 1, но его позиции не совсем уверенные: 11,77% у Python против 10,72% у Java и С. Вероятно, в 2022 году, в котором прогнозируют падение Java и С, лидерство Python станет неоспоримым.
Вторая причина взлёта Python — стремительное развитие Data Science.
R, нужный дата-сайентистам, удерживает позиции, но конкурировать с Python не может. Julia способна на это в теории, но язык ещё слишком слаб. Другие перспективные языки расположились так: Lua в TIOBE обгоняет Dart, Ada, Rust и даже Kotlin. На 12-м месте основного рейтинга расположился Groovy.
Первая десятка рейтинга — это 85% поисковых запросов на GitHub. Абсолютные лидеры топа — Python и Java: они сильно оторвались от ближайших конкурентов.
Первую позицию PyPL Python занял уже в 2018 году. Что не удивительно: представьте себе количество поисковых запросов спустя 6 лет после AlexNet, когда люди прочувствовали весь потенциал ИИ. Популярность Java тогда постепенно падала, зато Python рос огромными темпами.
В 2021-м Python сбавил обороты — последние полгода язык находится на одной отметке. При этом 30% всех запросов » tutorial» 2021 года — это запросы о Python, а значит, язык активно изучают. Хотя взрывного роста популярности можно не ждать — с волнами ±2% развиваются классические языки.
Во второй десятке борьба куда острее. В прошлом году мы сделали ставку на Go, Rust, Ada, Lua и Dart — у них были все шансы на развитие. И сегодня Go удерживает позиции, а Rust укрепляется, хотя его неожиданно обогнал VBA. Развивая комьюнити, активно растут Ada и Dart. Из топ-20 вышел только Lua. Очень перспективными остаются Go, Ada и Dart, к ним можно добавить ABAP и Groovy:
В 2020 году у ABAP вышла стабильная версия, и он сразу взлетел на 21-е место.
Разработчики высоко оценили обновление Groovy — его всё чаще изучают как дополнение к Java.
Рейтинг StackOverflow
SO — это, по сути, огромная база вопросов и ответов по языкам и технологиям программирования: десятки гигабайт текста и повседневный рабочий инструмент тысяч программистов: для автоматического поиска ответа на портале разработано множество инструментов.
Языки по местам расставляли только пользователи SO, но рейтинг очень показателен. Респондентов спрашивали, какой язык или инструмент они использовали в работе или изучали за последний год, а также о планах на следующий год. Поэтому мы видим ситуацию и можем сделать небольшой прогноз.
Уже девятый год подряд первое место у JavaScript, хотя по TIOBE и PyPL до лидерства ему далеко. JS знают, изучают или используют в работе 68,62% респондентов.
В десятку вошли Node.js и TypeScript, которые расширяют JS. После массовых HTML и CSS идёт Python с 48,24% — у него третье место. А в конце топ-10 — C# и C++. Язык Си плавает около 12-го места.
Увидев статистику «любви и ненависти» к языкам, мы смеялись, ведь она точно отражает известную цитату создателя С++:
«Есть всего два типа языков: те, на которые жалуются, и те, которые никто не использует».
Голубая полоса на графике — любимый язык, фиолетовая — ужасающий. Сумма двух полос — это все респонденты, которые явно указали отношение к языку:
На вершине — языки, которые в общем рейтинге набрали меньше 1%. Clojure, Elixir, Julia, Dart, Swift, Go — все они выше Java, C и C++.
Язык Си ненавидят 60,44% пользователей SO. Но это скорее подтверждает, что программисты работают с языком или хотя бы знают о нём.
Из лидеров в общем рейтинге хорошие показатели только у Python — это 67,83%, С# — 61,96% и JavaScript — 61,51%.
Интересен вопрос о языках, которые пользователи SO собираются изучать в 2022 году. Python здесь — лидер с ощутимым отрывом. И это ещё раз подтверждает не только популярность, но и большой интерес разработчиков к языку (кстати, освоить язык можно здесь).
Теперь, когда мы увидели общую картину, посмотрим на цифры в России и ближнем зарубежье.
Популярность ЯП в России и не только
В 2021 году, по версии JB, самый популярный ЯП в России — JavaScript. Одним из основных или основным его назвали 28% российских программистов; за последний год с ним работали 56% участников опроса. JavaScript популярнее среди программистов Украины и Беларуси: основным его указали 38 и 36% опрошенных соответственно.
Интересна подборка ЯП, которые профессионалы хотят изучать в 2022 году. Наиболее популярными «завтрашними» языками стали быстро растущие Go, TypeScript, Kotlin, Rust и Python.
Теперь посмотрим на количество вакансий с упоминанием разных языков. Вот первая десятка Zarplan на сегодня:
SQL упоминается в два раза чаще JS, что вполне понятно — язык часто дополнительный. Знание SQL станет преимуществом на вакансиях C# или Java. Конечно, владения SQL требуют многие вакансии аналитиков данных, Data Scientist, Data Engineer, продуктовых и бизнес-аналитиков.
Как выбрать первый язык программирования
Разбираемся, что учить новичку в программировании, даже если ты ничего не понимаешь, а вокруг одни противоречивые мнения.
Разработчики на Python хвалятся тем, как быстро пишут код. Программисты на C++ — что их код очень производительный. Те, кто используют Java, говорят, как важна кроссплатформенность.
И все торопятся друг друга обидеть: Swift — для геев (многие действительно так думают), Python — для малышей, а JavaScript, конечно же, для дураков. Разработчики готовы спорить даже о том, что лучше: табы или пробелы.
В этой статье мы рассмотрим две темы:
Пишет о программировании, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.
Мой личный опыт
Я начинал с PHP и каждый день видел прогресс: какой-то новый подход, массивы вместо переменных, супермассивы, базы данных и так далее. Освоив PHP на более-менее сносном уровне, я двинулся дальше и приступил к JavaScript. Разобравшись с ним, я попробовал C++, потому что хотел заниматься играми. Скачал учебник, который все рекомендовали, позанимался по нему — и бросил программирование на несколько лет. М-да.
Сейчас я программирую на PHP, JS, Java, Python, C# и C++. С каждым новым языком я постоянно возвращался к основам и узнавал что-то новое о работе компьютера: как устроена память, как работает процессор, какой код будет работать быстро, а какой — нет. И, самое главное — почему. Если бы я сразу начал с C++, то, скорее всего, решил бы, что это не моё — слишком много информации.
Определите, чем вы хотите заниматься
Все эти споры, какой язык круче, бессмысленны, потому что:
Новички ещё слишком мало знают, чтобы понять, что им нужно от языка. Поэтому выбирать нужно не язык, а то, чем вы хотите заниматься. Многие языки в первую очередь затачиваются под решение определённых проблем или под определённые сферы:
Выбрав сферу, выясните, какие языки там используются, и выбирайте из них. Вы можете попробовать выучить несколько разных языков, чтобы определиться, какой вам больше нравится или лучше подходит для конкретной задачи.
Но даже если вы решите выбрать что-то совсем непопулярное — на чём пока не создавали крутые проекты, — это не значит, что вас ждет провал.
Выбор технологии не определяет успеха игры, сайта, приложения и чего угодно ещё.
А вот основные сильные и слабые стороны популярных языков:
Язык | Преимущества | Недостатки |
---|---|---|
С++ | • Высокая производительность • Прямой доступ к памяти • Строгая типизация | • Высокий порог входа • Низкая скорость разработки |
C# | • Строгая типизация • Сборка мусора • Кроссплатформенность • Большое количество синтаксического сахара | • Ориентированность под Windows • Нет возможности создавать кроссплатформенное GUI |
Python | • Высокая скорость разработки • Возможность быстро выучить язык • Широкий спектр применения | • Слабая типизация • Низкая производительность |
JavaScript | • Высокая скорость разработки • Возможность быстро выучить язык | • Непредсказуемость • Слабая типизация |
Java | • Кроссплатформенность • Строгая типизация • Сборка мусора | • Требуется много времени на запуск приложения • Большой объём повторяющегося кода |
PHP | • Большое сообщество • Быстрое развитие | • Слабая типизация • Небезопасный код |
Джоэл Спольски (CEO Stack Overflow) предпочитает C-подобные языки, но всё равно выбирает тот, который лучше справится с конкретной задачей.
Например, если вы хотите создавать игры, то какие? Посмотрите, на каком движке сделаны ваши любимые игры, и начните осваивать его. Если это Unity, то вам нужен C#. Если Unreal Engine 4, то С++.
Нужно ли начинать с простого языка
Если вы, как и я, выбрали геймдев, то перед вами встаёт дилемма: какой из языков выбрать. Оба достаточно крутые, на них написано большое количество известных игр. Допустим, вам всё же больше понравился C++.
Но тут возникает проблема: среди популярных сегодня языков C++ — один из самых сложных. Что делать?
Есть мнение, что если ваш первый язык будет слишком простым, то вы не сможете стать хорошим программистом.
Всё из-за того, что простые языки не требуют от вас знаний, как устроен компьютер, как данные хранятся в памяти, как процессор выполняет операцию деления и так далее.
Тот же Джоэл Спольски писал, что начинать погружение в программирование нужно с C (ещё сложнее, чем C++), потому что так вы освоите главные принципы и сможете писать более эффективные программы. Даже если они будут не на C.
С другой стороны, очень просто потерять мотивацию, когда изучаешь язык и подолгу останавливаешься на каждом термине. Несколько дней на изучение переменных, потом ещё недельку на массивы, месяц — на функции и так далее. За это же время другие успеют выучить Python на достаточном уровне, чтобы создавать простые блоги.
Так что я считаю нормальным начинать с чего-то простого. Вы будете расти — ступенька за ступенькой. Причём с большей эффективностью.
Вывод
Обсуждать можно бесконечно, но вот совет: начните уже изучать хоть что-то, сопоставив первый язык со сферой ваших интересов. И не переживайте, если вам понравился сложный язык. Сейчас обо всём можно найти понятные и подробные руководства. Например, в своей новой серии статей я максимально просто объяснил сложные понятия в C++. А на нашем курсе всё это можно закрепить на практике.
Рейтинг языков программирования 2021: доля Python падает, а TypeScript обошел С++, в лидерах JavaScript, Java, C#
Коммерческое использование
Что изменилось? Прежде всего привлекает внимание рост TypeScipt: похоже, он со временем станет основным языком в экосистеме JavaScript. В этом году он впервые обошел С ++ по популярности.
Еще из интересного: впервые за несколько лет мы увидели снижение доли Python: возможно, использование Data Science дошло до точки насыщения.
Впервые с 2012 года выросла доля C#. Использование Java продолжает уменьшаться, хотя и не так активно, как раньше. В общем видно уменьшение доли JVM: доля Kotlin стабильна (хотя он и уступил место Ruby), использование Scala возобновилось после значительного снижения в 2019-м и сегодня, если сравнивать с 2018-м, даже немного возросло. Еще стоит отметить незначительный рост Dart.
Ниже приведена диаграмма с динамикой по актуальным языкам программирования по годам. Статистически значимыми являются изменения для C ++, TypeScript, Ruby, 1C, Scala, Pascal/Delphi, T-SQL. Напомним, что изменения статистически значимы, если с вероятностью 95% мы не можем получить результаты с изменениями и без, если будем равномерно выбирать две группы респондентов с одной популяции.
Области использования
В этом году мы впервые попросили респондентов указать сферу, в которой они работают. Результаты довольно интересны.
Давайте рассмотрим, какие языки используют в зависимости от области применения
Фактически весь фронтенд пишут на JavaScript и TypeScript. Использование других языков сугубо маргинальное. Доля TypeScript сравнительно меньше. Интересно будет посмотреть на это соотношение через год.
Личные предпочтения
Как мы уже указывали, результаты выбора программистов нельзя использовать для прогнозирования, но здесь интересно, что наконец на графиках появился Rust. Опять видим некоторый спад интереса к Python и тенденцию перехода с JavaScript на TypeScript.
Интересно, что здесь данные отличаются от опроса в Stack Overflow и нашего предыдущего опроса: Rust расположен заметно ниже. Наиболее довольны пользователи Elixir (возможно, это миграция Erlang-комьюнити), также обращает на себя внимание место Clojure.
Если посчитать отдельно индекс удовлетворения по сферам применения, то результаты почти совпадают.
Изучение новых языков
Фаворитом, как и в предыдущие годы, стал Python. Его собираются изучать почти 18% из тех, кто будет осваивать новый язык. Но все-таки эта доля меньше, чем год назад. Ну а наибольший рост у TypeScript и Rust.
Финальная таблица
Дополнительные данные
Несмотря на языки программирования, также имеет смысл рассмотреть структуру распределения опыта в динамике.
Tут можно сделать вывод, что, поскольку доля разработчиков с опытом в 1 год уменьшилась => в IT пришло меньше новичков, чем в прошлом году.
Но все равно в большинстве это специалисты с менее 5 лет опыта работы в ИТ.
Рассмотрим корреляцию между возрастом и языком программирования.
Данные и скрипты обработки можно найти на GitHub.
Самые популярные языки программирования. Хабратоп 2020 года
Мы тут решили подбить предварительные итоги года и проанализировать рейтинги популярности языков программирования. Как менялась популярность ЯП и какие языки в 2020 году считаются топовыми, читайте в этой статье.
UPD: Самые популярные языки программирования 2021 года — здесь
Рейтинги субъективны
Начать стоит с того, что популярность языков программирования — понятие весьма субъективное. Для объективного анализа банально не хватает данных. Просто невозможно отследить даже примерное количество программистов, которые начали учить конкретный язык, или отдельных проектов, в которых он используется.
В основном для расчёта популярности ЯП используют данные поисковой выдачи крупных поисковиков. Но даже при единых исходных данных результаты аналитики иногда различаются кардинально.
Индекс TIOBE
Индекс TIOBE — один из самых известных рейтингов языков программирования. Для анализа используются запросы в поисковиках, которые включают название языка. Например, «python для новичков». Но уже здесь имеется несколько нюансов, которые потенциально могут повлиять на место ЯП в рейтинге.
Рейтинг не учитывает качество и количество написанного кода на конкретном языке. По сути для анализа используются косвенные данные.
TIOBE не учитывает поиск Яндекса. То есть как минимум половина запросов из русскоговорящих стран вылетает в трубу. Также не учитывается китайский поисковик Baidu. Тем не менее рейтинг остается одним из самых популярных.
Теперь непосредственно о языках программирования.
На первом месте оказался С. С начала года он стабильно занимает примерно 16% рынка.
Java, который ещё в январе был лидером, стремительно обваливается. Он потерял треть пунктов и опустился на третье место. Эксперты считают, что падение Java и подъем Python, который поднялся на второе место, — это следствие пандемии.
Популярность Python также подстёгивает значительный рост сферы Data Science, где Python считается приоритетным языком. К разочарованию поклонников R, Python требуют в 81% вакансий на позицию аналитика больших данных (читайте об этом в нашем материале), а R (без Python) нужен только в 3% случаев.
Впрочем, активное изменение рейтинга в 2020 году могло быть вызвано и майскими изменениями алгоритмов Google. Ведь именно в мае начались резкое падение рейтинга Java и рост Python.
Немного странной кажется низкая позиция JavaScript. 2 % рейтинга, и 7-е место — слишком заниженный результат, по нашему мнению. Ведь по количеству пулреквестов в GitHub JavaScript уверенно лидирует. Больше 20 % всех пулреквестов — это JavaScript. Для сравнения: Python на втором месте с показателем 15,9 %.
Активность сообщества разработчиков говорит куда больше, чем количество ключей в поисковой выдаче. И, несмотря на крепкую позицию JavaScript на GitHub, в TIOBE JavaScript за всю историю существования не поднимался выше 6-й позиции.
Вот, например, сравнение рейтинга JavaScript и C даже без учёта С++:
По рейтингу TIOBE, все шансы стать языком 2020 года есть у С. Если за декабрь не случится никаких серьезных изменений, то этот титул будет у языка второй год подряд — таким ранее мог похвастаться лишь Objective-C.
PYPL — рейтинг от GitHub
PYPL — это ещё один рейтинг популярности языков программирования. И он использует совершенно другую систему анализа.
TIOBE учитывает общее количество страниц, которые относятся к конкретному языку. Собственно, это одна из причин, почему С стабильно находится в лидерах, ведь многие популярные ЯП появились значительно позже.
Рейтинг PYPL использует для анализа Google-тренды. С их помощью оценивают, насколько часто пользователи ищут туториалы по конкретному языку. Ведь, по мнению создателей рейтинга, именно поиск туториалов показывает, насколько популярен язык конкретно сейчас.
PYPL показывает удивительную стабильность. Первая десятка позиций за последний год абсолютно не изменилась. А ведь именно на них приходится 85,94% всех запросов.
Уверенно лидирует Python, индекс которого почти в 2 раза выше, чем у Java с его вторым местом. При этом отрыв второго от третьего места — тоже почти в 2 раза. Так что в сумме Python и Java занимают почти половину всех запросов по туториалам. А это значит, что именно их активнее всего изучают в 2020 году.
По всем рейтингам — Python в топе (хоть и на втором месте после Java). Сохранится ли тенденция? Какие у языка перспективы?
Python не просто останется в топе еще много лет, но и поднимется по позициям. Если мы говорим о России, то это во многом обусловлено экономическими факторами. Люди поняли, что их профессии уже не такие нужные, да и денег приносят не так много. Поэтому многие начинают штурмовать IT-сферу и изучать программирование. А Python имеет очень низкий порог входа из-за простоты синтаксиса и, конечно же, сахара.
Тут мы приходим к другой причине. Python позволяет написать рабочий прототип скрипта с помощью нескольких десятков строк кода, в отличие от других языков, где будет уже сотня-другая. Тем самым разработка на Python гораздо быстрее. А для многих компаний нужно быть первыми, чтобы не потеряться на рынке.
Семён Березовский, ментор курса SkillFactory «Python для веб-разработки»
Среди других ЯП активный рост демонстрируют Go, Rust, Ada, Lua и Dart. Их можно рассматривать как перспективные языки, но пока что интерес к ним слишком мал, чтобы с ними считаться в глобальных масштабах. Отметку в 1% преодолел только Go.
Если обобщить, то рейтинг PYPL дает хорошее понимание, какие языки программирования сейчас активно изучают либо ищут для них решение конкретных задач.
Но при этом он не показывает, на каких языках работают программисты. Ведь для выполнения рабочих задач совсем не обязательно искать туториалы в Интернете.
Опрос программистов на постсоветском пространстве
В начале 2020 года на DOU были опубликованы результаты опроса почти 10 000 программистов из постсоветских стран. И на основе их ответов был составлен рейтинг языков на которых сейчас пишут больше всего.
Да, выборка в 10 000 анкет — это мало по сравнению с анализом миллионов запросов поисковиков. Но при этом она дает более полное видение о истинной популярности языков. Ведь используются не косвенные данные, а вполне себе прямые.
В первую очередь нас интересует вопрос «На каком языке вы пишете сейчас?» Ведь именно он показывает, насколько распространен язык именно в рабочей сфере, а не в обширности теории или популярности обучения.
Первая пятёрка с небольшими изменениями повторяет рейтинг PYPL. Разве что нет такого огромного отрыва Python от остальных ЯП. А разброс первого места с 18,4 % и пятого с 10,8 % нельзя считать слишком уж большим.
При этом первые пять позиций покрывают 71,5 % рынка, что также коррелирует с рейтингом PYPL. Но тут тоже есть изменения. По сравнению с 2019 годом JavaScript и Python растут, а вот рейтинги Java, C# и PHP постепенно падают.
Особенно активно растёт Python. Количество разработчиков, которые считают Python своим основным ЯП, выросло на 21,1% по сравнению с 2019 годом.
В целом Python растёт практически во всех аспектах. Он лидирует по личностным предпочтениям программистов. Также его планирует изучать как второй язык наибольшее количество респондентов. А в качестве дополнительного языка программирования он занимает почётное второе место.
Учитывая темпы роста, Python через несколько лет вполне может вырваться в лидеры и крепко оккупировать первое место. Тем более что разрыв между ним и лидером составляет всего чуть больше 5 %.
При этом очень активно растёт TypeScript, что в целом имеет смысл. Ведь разработка мобильного софта на TypeScript за последние несколько лет выросла многократно. Поэтому программистам, которые планируют разрабатывать софт для смартфонов, стоит обратить внимание на этот ЯП. Ну а для тех, кто уже знает JavaScript, — сам Билл Гейтс велел.
Заключение
Если обобщить информацию из всех рейтингов, то складывается следующая картина.
Python, JavaScript, Java и С# и PHP — это элита. Их активно изучают, на них программируют, пишут и читают туториалы. Сообщество языков живо, они развиваются и процветают. Можно посоветовать любой из этих языков новичку, который хочет «войти в IT» — и не ошибётесь. Они действительно востребованны и популярны.
Что касается С/С++, то в Интернете просто огромное количество информации по ним. Несмотря на возраст, они все ещё сильны, хоть и понемногу теряют аудиторию.
Что касается перспективных языков программирования, которые могут хорошо «выстрелить» в будущем, то здесь стоит упомянуть TypeScript, Kotlin, Rust и Dart. На них стоит обратить внимание, если ищете перспективный второй язык программирования.
Но в целом стоит помнить, что любые рейтинги такого плана субъективны и во многом зависят от того, как именно проводится анализ данных. Так что если хочется учить С++ — вперед. И даже если интересен Whitespace (тьфу-тьфу-тьфу), то можно и его. Успехов вам в ваших начинаниях! Тем кто надумает изучать язык — мы всегда готовы в этом помочь.