Наталья Кайда 22 ноября 2023

🏆 Самые популярные языки программирования 2023

Составляем сводный рейтинг и обсуждаем особенности, преимущества, недостатки и причины популярности каждого языка.
🏆 Самые популярные языки программирования 2023

На чем основана популярность языков

Популярность ЯП зависит от нескольких факторов.

Практичность. Языки, которые эффективно решают какую-то важную задачу, быстро набирают популярность. Например, JavaScript стал самым популярным языком для веб-разработки, поскольку первым обеспечил создание интерактивных элементов на веб-страницах. Несмотря на все свои недостатки (частично исправленные в TypeScript), он продолжает оставаться самым простым решением для фронтенда, в то время как старые конкуренты типа ActionScript, Java Applets и VBScript канули в Лету, а новые вроде Dart и Elm еще не обзавелись достаточным числом поклонников.

Технологические тренды оказывают сильное влияние на популярность языков программирования. Вот несколько примеров:

  • Бурное развитие машинного обучения и искусственного интеллекта подстегнуло рост использования Python, который стал одним из основных языков ИИ-разработки благодаря богатому выбору библиотек ML/AI.
  • Развитие мобильных технологий и приложений вызвало взлет популярности Swift (для iOS) и Java/Kotlin (для Android).
  • Появление JS-фреймворков для фронтенд-разработки (React, Angular, Vue и т.д.) сделало знание JavaScript обязательным для веб-разработчиков. Даже бэкендерам теперь не обойтись без основ JavaScript.
  • Интернет вещей и встраиваемые системы стимулируют рост популярности языков Rust и С/С++.
  • Популярность облачных технологий способствует росту использования Python, JavaScript, Go и Java в бэкенд-разработке и DevOps.
  • Контейнеризация и оркестровка контейнеров (Docker, Kubernetes) требуют навыков использования Go.
  • Рост популярности FaaS дал толчок к использованию JavaScript и Python для бессерверной разработки.

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

Сообщество и поддержка. Языки, вокруг которых быстро сформировалось большое и активное сообщество разработчиков, остаются на пике популярности долгие годы. Большие сообщества генерируют огромный объем бесплатных учебных материалов, от статей и мини-проектов до видео-туториалов и курсов, и помогают быстро решить проблемы новичков. Вокруг Python образовалось очень активное и дружелюбное сообщество, благодаря которому любой новичок может без проблем найти ответы на вопросы и помощь в освоении языка.

Требования рынка труда. Языки, знание которых выше оплачивается, легко привлекают новых разработчиков. Например, Java и C++ сохраняют высокую популярность благодаря востребованности на рынке и высоким зарплатам разработчиков.

Поддержка и развитие. Языки, которые активно поддерживаются и развиваются, пользуются повышенным спросом. Например, Java постоянно обновляется и улучшается, это расширяет сферу использования языка. JavaScript, который долгое время был языком фронтенда, теперь (благодаря появлению платформы Node.js) можно использовать для разработки бэкенда и API. Microsoft активно развивает C# и .NET, регулярно выпуская обновления и добавляя новые возможности – это поддерживает интерес к языку.

Универсальность. Языки, которые можно использовать в различных областях, быстро расширяют свою аудиторию. Например, Python широко применяется в машинном обучении, инженерных и научных расчетах, анализе данных, серверной разработке и автоматизации процессов.

Совместимость с другими языками и технологиями. Языки, которые хорошо совместимы с другими языками и технологиями, становятся сверхпопулярными, потому что на их основе можно создавать комбинированные фреймворки. Например, JavaScript отлично дополняет HTML и CSS, и все самые популярные фреймворки для разработки фронтенда используют JS/HTML/CSS в различных пропорциях и комбинациях. Kotlin создан как язык, полностью совместимый с экосистемой Java. Это позволило ему быстро завоевать популярность среди Android-разработчиков.

Производительность и эффективность. Если язык способен взаимодействовать с железом на низком уровне, обеспечивая максимальную производительность – он будет популярным во все времена, даже если у него сложный синтаксис, отпугивающий простых смертных. C++ широко используется везде, где критически важна производительность – в играх, графике, встроенных системах.

Скорость разработки. Этот показатель обычно не совпадает со скоростью работы самого языка, однако во многих сферах производительность ЯП не так важна, как простота и скорость разработки. На PHP можно очень быстро создавать веб-приложения – это сделало его очень популярным в свое время, хотя сейчас он активно вытесняется другими языками, в первую очередь Python, работать с которым еще проще – и быстрее.

Пара слов о рейтингах

Единого, самого-самого объективного и беспристрастного рейтинга популярности языков программирования не существует. Авторитетные платформы составляют собственные рейтинги по определенным критериям – и, поскольку критерии разные, то и рейтинги заметно отличаются друг от друга:

  • В некоторых рейтингах присутствуют языки, которые не используются для коммерческой разработки (учебный Scratch).
  • Во многие рейтинги входят специфические языки (SQL для работы с базами данных, MATLAB для одноименного пакета, VBA для приложений Microsoft).
  • В большинстве рейтингов есть языки программных оболочек Shell/Bash, которые используются для узких целей.
  • В топы всегда попадают HTML и CSS – языки разметки.
  • В некоторых рейтингах встречаются морально устаревшие языки (Visual Basic, Delphi).

Словом, нет такого рейтинга, который устроил бы всех. Но чуть ниже мы попробуем его составить:).

Самые авторитетные и цитируемые рейтинги

Рейтинг PYPL учитывает количество поисковых запросов в Google:

Рейтинг PYPL
Рейтинг PYPL

Ежеквартальный GitHub Language Stats отражает количество пулл-реквестов:

GitHub Language Stats
GitHub Language Stats

TIOBE Index основан на анализе упоминаний языков в поисковых системах:

TIOBE Index
TIOBE Index

Ежегодный рейтинг IEEE Spectrum использует 11 метрик, включая популярность языка в поисковых запросах, число репозиториев, количество разработчиков, зарплаты специалистов, упоминания в вакансиях и учебных курсах, технологические тренды:

IEEE Spectrum
IEEE Spectrum

Рейтинг языков StackOverflow составлен по результатам опроса 87 585 разработчиков:

Рейтинг языков StackOverflow
Рейтинг языков StackOverflow

RedMonk использует данные анализа активности на GitHub и StackOverflow:

RedMonk
RedMonk

Сводный рейтинг

На основе самых цитируемых рейтингов можно составить сводный. Критерии будут такими:

  • Язык должен входить в каждый из 6 популярных рейтингов, упомянутых выше.
  • Позиция в сводном рейтинге определяется средней позицией языка во всех 6 списках.

Скрипт для вычисления сводного рейтинга:

Скрипт для вычисления сводного рейтинга
        list3 = ['Python', 'C', 'C++', 'Java', 'C#', 'JavaScript', 'PHP', 'Visual Basic', 'SQL', 'Assembly language', 'Scratch', 'Fortran', 'Go', 'MATLAB', 'Kotlin', 'Pascal', 'Swift', 'Ruby', 'R', 'Rust'] 
list4 = ['Python', 'Java', 'C++', 'C', 'JavaScript', 'C#', 'SQL', 'Go', 'TypeScript', 'HTML', 'R', 'Shell', 'PHP', 'Ruby', 'SAS', 'Swift', 'Dart', 'Rust', 'Kotlin', 'Matlab'] 
list5 = ['JavaScript', 'HTML/CSS', 'Python', 'SQL', 'TypeScript', 'Bash/Shell', 'Java', 'C#', 'C++', 'C', 'PHP', 'PowerShell', 'Go', 'Rust', 'Kotlin', 'Ruby', 'Lua', 'Dart', 'Assembly', 'Swift'] 
list6 = ['JavaScript', 'Python', 'Java', 'PHP', 'C#', 'CSS', 'TypeScript', 'C++', 'Ruby', 'C', 'Swift', 'Shell', 'R', 'Go', 'Scala', 'Objective-C', 'Kotlin', 'PowerShell', 'Rust', 'Dart']

common_languages = list(set(list1).intersection(list2, list3, list4, list5, list6))

avg_positions = {}
for language in common_languages:
  positions = [list1.index(language), list2.index(language), list3.index(language), list4.index(language), list5.index(language), list6.index(language)]
  avg_positions[language] = sum(positions) / len(positions)

sorted_languages = sorted(common_languages, key=avg_positions.get)
print(*sorted_languages)
    

Результат:

  1. Python
  2. JavaScript
  3. Java
  4. C#
  5. PHP
  6. Go
  7. Ruby
  8. Swift
  9. Kotlin
  10. Rust

А теперь можно обсудить особенности, сферы применения, плюсы и минусы победителей подробнее.

ТОП-10 самых популярных языков программирования 2023

1. Python

Язык программирования Python
Язык программирования Python

Python – высокоуровневый, интерпретируемый язык программирования общего назначения. У него простой и понятный синтаксис, к тому же он располагает обширной стандартной библиотекой. Это делает его идеальным для начинающих программистов. Python используется для разработки веб-приложений, машинного обучения, анализа данных и многого другого.

Достоинства:

  • Простой и понятный синтаксис.
  • Обширная стандартная библиотека.
  • Развитая экосистема.
  • Широчайший выбор фреймворков и библиотек для быстрой разработки всевозможных приложений.
  • Высокая скорость разработки.
  • Огромное количество учебных материалов.
  • Кроссплатформенность.

Недостатки:

  • Низкая производительность по сравнению с компилируемыми языками.
  • Конфликты табов и пробелов.
  • Динамическая типизация.

Сферы применения:

  • Веб-разработка.
  • Машинное обучение.
  • Сбор и анализ данных.
  • Автоматизация процессов.
  • Научные и инженерные вычисления.
  • Системное администрирование.
  • Быстрое прототипирование и создание MVP.

Телеграм-каналы:

2. JavaScript

Язык программирования JavaScript
Язык программирования JavaScript

JavaScript – один из наиболее популярных языков программирования в мире. Это основной язык интернета, изначально созданный для работы в браузере. Синтаксис JavaScript похож на С и Java, но при этом язык имеет собственные уникальные особенности.

JavaScript поддерживает объектно-ориентированное, императивное и функциональное программирование. Широко используется для создания интерактивных веб-страниц, веб-приложений, серверных приложений (с помощью Node.js), мобильных приложений (с помощью React Native) и многого другого.

Преимущества:

  • Универсальность. Используется для веб-разработки, серверного программирования, мобильной разработки, игр и многого другого.
  • Довольно простой синтаксис.
  • Одинаково работает во всех браузерах и на всех платформах.
  • Обширная экосистема фреймворков и библиотек.
  • Асинхронность и событийно-ориентированная модель.

Недостатки:

  • Слабая типизация, и как следствие – высокий риск ошибок.
  • Низкая производительность по сравнению с компилируемыми языками.
  • Не подходит для ресурсоемких приложений из-за особенностей управления памятью.
  • Потенциальные проблемы с безопасностью из-за динамической природы.

Сферы применения:

  • Веб-разработка.
  • Мобильная разработка с React Native.
  • Разработка браузерных игр и графики.
  • Интернет вещей и смарт-устройства.
  • Разработка децентрализованных приложений на блокчейне, создание смарт-контрактов.

Телеграм-канал:

3. Java

Язык программирования Java
Язык программирования Java

Java – кроссплатформенный, строго типизированный язык, хорошо подходящий для крупных проектов, где важна производительность и безопасность. Популярен в корпоративном секторе и финансово-банковской сфере.

Достоинства:

  • Кроссплатофрменность. Программы компилируются в байт-код, который работает на любой ОС с JVM.
  • Высокая производительность.
  • Надежность и безопасность.
  • Большое сообщество разработчиков и обширная экосистема библиотек.

Недостатки:

  • Нуждается в компиляции.
  • Многословный синтаксис, сложный для начинающих.
  • Потребляет много памяти во время выполнения из-за JVM.

Сферы применения:

  • Разработка крупных корпоративных систем и финансового ПО.
  • Мобильная разработка (Android).
  • Настольные приложения.
  • Встроенные и IoT системы.
  • Big Data и машинное обучение.
  • Бэкенд и серверные приложения.

Телеграм-каналы:

4. C#

Язык программирования C#
Язык программирования C#

C# – это язык программирования от компании Microsoft, предназначенный для разработки приложений на платформе .NET. Он обладает высокой производительностью, надежностью и безопасностью. C# используется для создания веб-приложений, игр, корпоративных систем и высоконагруженных платформ.

Преимущества:

  • Современный объектно-ориентированный язык с чистым и лаконичным синтаксисом.
  • Строгая статическая типизация обеспечивает высокую надежность кода.
  • Автоматическое управление памятью упрощает разработку.
  • Работает на множестве платформ благодаря .NET Framework и Mono.
  • Богатая библиотека классов в .NET Framework позволяет быстро создавать приложения.

Недостатки:

  • Требует наличия .NET фреймворка.
  • Меньшее сообщество разработчиков.
  • Менее гибок по сравнению с динамическими языками вроде Python.

Сферы применения:

  • Разработка настольных приложений под Windows.
  • Разработка мобильных приложений под Android и iOS.
  • Веб-разработка с использованием ASP.NET Framework.
  • Разработка игр на платформе Unity.
  • Программирование для встроенных и IoT устройств.

Телеграм-канал:

5. PHP

Язык программирования PHP
Язык программирования PHP

PHP – скриптовый язык программирования, созданный специально для веб-разработки.

Преимущества:

  • Невысокий порог входа. PHP относительно прост в изучении и использовании, это делает его доступным для начинающих разработчиков.
  • Большое сообщество.
  • Множество библиотек и фреймворков.
  • Поддерживается всеми хостинг-провайдерами,
  • Используется в самой популярной CMS – WordPress.

Недостатки:

  • Смешивание кода с HTML.
  • Сложности с безопасностью. Разработчикам необходимо уделять особое внимание вопросам безопасности и не смешивать код с запросами к базе данных.
  • Специфичный синтаксис с C-подобными конструкциями.
  • Не самая лучшая поддержка ООП по сравнению с другими языками.
  • Неэффективность при работе с большими объемами данных. Для повышения производительности необходимо использовать соответствующие методы оптимизации.

Телеграм-канал:

6. Go

Язык программирования Go
Язык программирования Go

Go (Golang) – статически типизированный, компилируемый язык программирования, разработанный в Google. Это относительно новый, но стремительно набирающий популярность язык. Он был создан для разработки высокопроизводительных, эффективных, масштабируемых и простых в поддержке приложений. Поддерживает многопоточность, имеет встроенный сборщик мусора и предоставляет полную поддержку Unicode. Хорошо подходит для сетевого программирования, облачных сервисов и задач, где важна высокая производительность.

Преимущества:

  • Высокая производительность.
  • Безопасность. Go имеет встроенные механизмы безопасности, которые помогают защитить приложения от атак.
  • Многопоточность. Go поддерживает многопоточность с помощью горутин и каналов, что упрощает написание кода для мощных приложений. Это делает Go подходящим для создания приложений с микросервисной архитектурой.
  • Быстрая компиляция и небольшой размер бинарников.
  • Поддержка кросс-компиляции.

Недостатки:

  • Относительная сложность для начинающих.
  • Меньшее количество библиотек по сравнению с Java или C#.
  • Отсутствие наследования в классическом понимании.

Сферы применения:

  • Веб-приложения и облачные сервисы.
  • Сетевое и системное программирование.
  • Микросервисы.
  • DevOps и системное администрирование.

Телеграм-каналы:

7. Ruby

Язык программирования Ruby
Язык программирования Ruby

Ruby – высокоуровневый, интерпретируемый объектно-ориентированный язык программирования, созданный для упрощения разработки и поддержки приложений.

Преимущества:

  • Лаконичный и легко читаемый синтаксис, похожий на Perl, обеспечивает высокую скорость разработки.
  • Мощный фреймворк Ruby on Rails, который использует ORM для взаимодействия с базами данных и упрощает процесс создания сложных веб-приложений.
  • Поддержка объектно-ориентированного и функционального программирования.
  • Активное и доброжелательное сообщество. Сообщество Ruby открыто для новичков, что облегчает изучение и использование языка.
  • Автоматическое управление памятью (сборка мусора).
  • Метапрограммирование. Ruby позволяет создавать и изменять классы и методы во время выполнения программы, что может быть полезно для создания расширяемых и адаптируемых приложений.

Недостатки:

  • Меньшая популярность по сравнению с языками вроде Java или Python.
  • Не такой широкий выбор библиотек и инструментов, как у Python или JavaScript.
  • Не самая высокая производительность, особенно при выполнении сложных операций и обработке больших объемов данных.

Сферы применения:

  • Веб-приложения.
  • Облачные сервисы.
  • Мобильная разработка для iOS и Android на фреймворке RubyMotion.

8. Swift

Язык программирования Swift
Язык программирования Swift

Swift – современный язык программирования, который сочетает в себе высокую производительность, безопасность, простоту и мощность. Создан для разработки приложений под iOS и macOS.

Преимущества:

  • Производительность. Swift работает быстрее, чем интерпретируемые языки типа JavaScript.
  • Безопасность. Использует статическую типизацию и имеет встроенную поддержку для управления памятью.
  • Простота изучения и использования. Swift имеет простой и понятный синтаксис, что делает его доступным для начинающих разработчиков.
  • Мощность и гибкость. Позволяет создавать сложные приложения с широкими функциональными возможностями. Имеет встроенную поддержку работы с сетями, базами данных и потоковой обработкой.

Недостатки:

  • Ограниченная область применения. Swift используется только в экосистеме Apple.
  • Недостаток поддержки. Это молодой язык, и новичкам может не хватать бесплатных учебных материалов, готовых проектов, обмена опытом.

Сферы применения:

  • Мобильные приложения для iPhone, iPad и Mac.
  • Десктопные приложения для macOS.
  • Игры для iOS и macOS.

Телеграм-канал:

9. Kotlin

Язык программирования Kotlin
Язык программирования Kotlin

Kotlin – статически типизированный, компилируемый, объектно-ориентированный язык программирования с поддержкой многопоточности. Создан как более современная и безопасная альтернатива Java. Широко применяется для разработки Android-приложений.

Преимущества:

  • Высокая производительность и безопасность, благодаря которым язык отлично подходит для серверной разработки.
  • Совместимость с Java. Kotlin полностью совместим с Java, что позволяет разработчикам легко переключаться между языками.
  • Синтаксис Kotlin отличается от Java большей компактностью и выразительностью.
  • Интеграция с Android. Kotlin полностью интегрирован с платформой Android, что упрощает разработку приложений для этой платформы.

Недостатки:

  • Более низкая скорость компиляции, чем у Java.
  • Пока еще малочисленное сообщество разработчиков.

Сферы применения:

  • Разработка Android-приложений. Kotlin является предпочтительным языком для разработки Android-приложений, поскольку он поддерживается Google и интегрирован в Android Studio.
  • Серверная разработка. Kotlin используется для разработки микросервисов и бэкенда, чаще всего на фреймворке Ktor.

Телеграм-канал:

10. Rust

Язык программирования Rust
Язык программирования Rust

Rust – высокопроизводительный, безопасный и мощный язык программирования, который подходит для разработки широкого спектра приложений. Сочетает в себе принципы системного программирования и высокоуровневых языков. Он может быть сложным для изучения и использования, но взамен предлагает множество преимуществ, которые полностью компенсируют усилия разработчика.

Преимущества:

  • Высокая производительность. Rust компилируется в машинный код. Сопоставим по производительности с C и C++, но при этом обладает большей безопасностью и гибкостью. Поддерживает многопоточность и асинхронное программирование.
  • Интеграция с менее производительными языками. Фреймворк PyO3 позволяет писать нативные модули Python на Rust, что многократно повышает производительность Python-приложений.
  • Безопасность. Rust предотвращает использование неинициализированной памяти и появление утечек памяти благодаря системе автоматического сбора мусора и управления ресурсами.
  • Мощность и гибкость. Rust позволяет создавать сложные приложения с широкими функциональными возможностями.

Недостатки:

  • Сложность. Rust может быть сложным для изучения и использования, особенно для разработчиков, которые привыкли к более простым языкам программирования вроде Python.
  • Небольшое (пока) сообщество. Новичкам сложнее найти поддержку опытных коллег, чем в сообществах более зрелых языков.

Сферы применения:

  • Системное программирование (драйверы устройств, операционные системы и микроконтроллеры).
  • Веб-серверы, микросервисы и облачные приложения.
  • Разработка игр.

А как вы подходили к выбору языка – обращали внимание на рейтинги популярности или следовали личным предпочтениям? Расскажите в комментариях!

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию
Продуктовый аналитик в поддержку
по итогам собеседования
Продуктовый аналитик
Екатеринбург, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ