Какой язык программирования изучать в 2021 году?

Меня зовут Давид Медведик, я имею большой опыт работы с высоконагруженными приложениями, разрабатывал комплексы на 200+ серверов, также являюсь одним из преподавателей курса по Highload Architect. В настоящий момент работаю в одной из передовых компаний, занимающихся обработкой и анализом трафика, — Positive Technologies.
В этой статье мы поговорим о том, какой язык программирования стоит изучать в 2021 году, в чём его особенности, и причем тут highload.
На какой язык программирования стоит обратить внимание в 2021 году
Сейчас есть большое количество языков программирования: какие-то более универсальные, какие-то заточены под определённые задачи. Основываясь на текущих тенденциях IT-рынка, я бы рекомендовал изучать язык программирования С++.
Почему нужно изучать С++
Мы находимся в той точке, когда большинство компаний имеют один или несколько сервисов-проектов под высокой нагрузкой. Да, эту нагрузку можно балансировать, например, при помощи шардирования баз данных или других инструментов, но язык С++ позволяет выжимать максимум из вашего железа, при этом оставаясь языком высокого уровня. Другой момент связан с тем, что из-за сложности входа в С++ большинство выбирает языки более высокого уровня абстракции, поэтому мы видим нехватку С++ программистов на рынке.
Насколько сейчас востребован язык С++
Достаточно взглянуть, как изменился YouTube за последние несколько лет. То количество трафика, которое он обрабатывает, растёт по экспоненте. И таких примеров много. Когда мы упираемся в «потолок» вертикального масштабирования серверов, а горизонтально масштабироваться не получается, то тут на помощь и может прийти язык С++. Так как этот язык является прямым наследником языка Си, то мы получаем большой спектр оптимизаций, при помощи которых можно выжать максимум из железа.
При этом С++ продолжает активно развиваться: добавляются механизмы и инструменты, позволяющие упростить написание кода. Если эта тенденция сохранится, то мы сможем увидеть снижение порога вхождения, что может значительно улучшить позиции языка С++ в рейтинге самых востребованных языков. И как раз в этот момент хорошо уже быть «прокачанным» специалистом.
Какими особенностями обладает С++ по сравнению с другими языками
Работа с памятью в С++
Одна из ключевых особенностей С++, которая, однако, является и минусом, и плюсом — это работа с памятью. Так как С++ является наследником языка Си, то есть возможность управлять памятью напрямую, добиваясь максимальной производительности вашей программы.
К примеру, в операционной системе Linux используется страничная адресация памяти, где каждая страница занимает около 4 KB. Когда ваше приложение использует 2 GB памяти, то вам будет выделено 2 GB/4 KB страниц. Эти страницы мапятся на физическую память.
Вся эта виртуализация требует накладных расходов, но у неё есть значительное преимущество — вашему приложению сразу же не будет выделена вся память, а только то количество, которое необходимо в данный момент. Но если ваше приложение потребляет основную часть ресурсов сервера, то вы можете выделить память не стандартного страничного размера 4 KB, а, например, целиком 2 GB, что позволит нам избавиться от накладных расходов на страничную адресацию в рамках большой страницы, она же huge pages в рамках нашего приложения.
Также стоит отметить, что C++ предоставляет нам возможность использования разного рода аллокаторов памяти при работе с объектами.

Аллокаторы памяти — это специализированный класс, реализующий и инкапсулирующий малозначимые детали распределения и освобождения ресурсов компьютерной памяти. Они позволяют, например, избежать повторного обращения к операционной системе за новой памятью.
Но у этого механизма есть и обратная сторона: вам придётся тщательно следить за утечками памяти. Ведь кто выделил память, тот и должен её освободить. И эта проблема решена в С++. Для этого используются умные указатели — класс, предназначенный для управления динамически выделенной памятью и обеспечения её освобождения (удаления). Рекомендую самостоятельно прочитать про это, механизм достаточно интересный.
Семантика перемещения
Одна из самых интересных, на мой взгляд, возможностей С++ — это перемещение временных объектов в место копирования. Временные объекты — это те объекты, которые были сконструированы во время выполнения каких-либо операций. Таким объектом может быть возвращаемое значение.
Пропуск копии (Copy elision)
Этот инструмент компилятора позволяет избавиться от лишних копий в рамках работы приложения. Компилятор сам анализирует код и оптимизирует его, чтобы обеспечить минимальное количество копий объектов во время работы программы.
В зависимости от настроек оптимизации компилятора у нас могут быть следующие результаты:
Нам интересен последний случай. Возвращаемое значение функции f() будет сконструировано на месте объекта obj — это одна из оптимизаций, называемая return value optimization. А самое интересное, что если мы реализуем операторы перемещения, как, например, в семантике перемещения, то компилятор (с 17 стандарта) нам гарантирует, что копий не будет сделано, и объекты будут перемещены. Тем самым можно добиться результата, когда у вас в рамках приложения не создаётся ни одной копии объектов.
Использование системных вызовов
Одним из главных преимуществ языка С++ является возможность использования системных вызовов «как есть». Как я уже говорил, язык С++ происходит от языка Си, а именно на этом языке написано ядро Linux. Опираясь на это, мы, например, можем написать такой код в рамках С++:
Данный пример демонстрирует способ привязки ваших программных потоков к физическим ядрам системы, чтобы избежать промахов кэша процессора. Cache Miss случается, когда запрашиваемые данные отсутствуют в кэше и их нужно подгружать из основного источника.
Не знаю, можно ли так же просто в каком-либо другом языке программирования получить значительный буст производительности, просто дописав четыре строчки кода.
Выводы
С++ последние годы не находится в топе самых востребованных языков программирования. Оно и понятно, порой в нем используется сложный синтаксис со сложными конструкциями, тем самым порог вхождения выше, чем для более высокоуровневых языков. Тем не менее, спрос разработчиков на С++ высок, практически все крупные решения так или иначе строятся с использованием именно этого языка. При этом C++ продолжает развиваться, что в перспективе может привести к упрощению конструкций языка без потери производительности.
Я считаю, что стоит попробовать написать на этом языке хотя бы один проект ради разнообразия или чтобы глубже разобраться, как устроено взаимодействие с памятью. Поначалу он может показаться вам неприветливым, однако, заглянув чуть глубже, вы сможете разглядеть в нём гибкость и большую мощь.
Лучшие языки программирования для старта в 2021 году
В прошлом году мы уже составляли рейтинг самых востребованных языков программирования. И хотим вам сказать, что жизнь-то налаживается. Смотрите:
- Зарплаты выросли почти везде. Почитайте статью ниже, убедитесь сами.
- Работы стало больше. Несмотря на ковиды, диджитал прёт, растёт и наполняется деньгами, как весенняя почка наполняется томной негой или как её там.
- Никаких новых хайповых языков на рынке труда не появилось. Языки, конечно, появились, но если вы в прошлом году владели одним из языков из нашей подборки, вы могли найти работу и тогда, и сейчас.
- Вы читаете этот текст в тёплый апрельский денёчек, масочку можно сдвинуть на подбородок и подышать полной грудью, пока курьер «Яндекс-еды» везёт вам свежую шаурму в сырном лаваше. Две шаурмы.
А теперь помолимся богам поисковой оптимизации, чтобы как можно больше людей прочитали эту статью. Вот самые важные и коммерчески востребованные языки 2021 года:
JavaScript
Кому подходит: начинающим программистам и тем, кому нужен быстрый старт.
Средняя зарплата на начало 2021 года: 133 тысячи (в прошлом году — 110 тысяч).
За год почти ничего не изменилось — JavaScript всё ещё самый популярный язык веб-разработки. Главное его преимущество — веб-программисты нужны везде, даже там, где делают мобильные приложения и игры. Потому что существенная часть игр и мобильных приложений сделана на технологиях веба.
Отдельный большой плюс — у JavaScript-разработчиков большое сообщество и в интернете можно найти ответ на любой вопрос по языку.
☠️ Также существует алкогольная игра: берёте любое слово из толкового словаря английского языка, добавляете к нему .js и ищете в поисковике, есть ли такая библиотека. Если есть — выпиваете. Победит тот, кто отключится последним. Помните, что употребление алкоголя вредит вашим когнитивным способностям, снижает продуктивность, алкоголь — депрессант, а трезвость — норма вашей жизни.
Python
Кому подходит: всем, кто хочет научиться писать универсальные скрипты или работать с нейросетями.
Средняя зарплата на начало 2021 года: 136 тысяч (в прошлом году — 128 тысяч).
Питон в 2021 году пригодится почти везде:
- написать скрипт для сервера;
- запрограммировать нейросеть;
- решить любую классическую задачу в программировании;
- сделать своего телеграм-бота или систему управления заказами;
- встроить распознавание речи, фото и видео в проект;
- и сделать ещё сотни других проектов.
Если не нравится веб, но нужен такой же простой язык как JavaScript для первого изучения, — начинайте с Python.
Кому подходит: тем, кто хочет штурмовать корпорации или разрабатывать универсальный софт для разных платформ.
Средняя зарплата на начало 2021 года: 151 тысяча (в прошлом году — 134 тысячи).
Преимущество Java в том, что код можно запустить почти на любом железе, где есть поддержка JVM – виртуальной машины Java:
- кнопочные мобильные телефоны;
- смартфоны;
- компьютеры почти с любым процессором и любой операционной системой;
- микроконтроллеры и встраиваемые устройства (например, контроллер для автоматического открывания ворот);
- телевизоры, микроволновки и другая умная техника.
Большие корпорации любят Java за надёжность, долгий срок поддержки программ для разработки и совместимость со старыми версиями. Если вы хотите писать корпоративный софт и получить стабильную работу надолго — берите Java. Этот язык настолько проник во все сферы жизни, что потребуются десятилетия, прежде чем его заменят на что-то более простое и современное.
Кому подходит: программистам, которым не нравится сложность С или С++, но нравится их мощность и возможности.
Средняя зарплата на конец 2020 года: 207 тысяч (статистических данных на начало 2021 года ещё нет).
Если вы хотите писать очень быстрые программы, работать с железом напрямую или делать надёжный софт для серверов, то можно начать с Rust. Этот язык позволяет писать в любом стиле, хоть в ООП, как в C++, хоть в функциональном, как Haskell. А при желании можно вообще отказаться от этого и писать в чисто процедурном стиле, как Pascal.
Отдельный плюс этого языка — универсальность. На нём можно написать и драйвер для микросхемы, и систему управления базами данных. Единственное, что нужно учесть — язык развивается очень быстро, и часть функций и команд могут устареть или работать иначе, чем в старой версии. Если за этим следить, то Rust вполне подойдёт на роль лучшего языка на старте в 2021 году.
Swift
Кому подходит: поклонникам операционных систем Apple — MacOS, iOS и WatchOS .
Средняя зарплата на начало 2021 года: 184 тысячи (в прошлом году — 142 тысячи).
Компания Apple каждый год выпускает новые продукты: ноутбуки, системные блоки, телефоны, часы, колонки и прочую технику. Чтобы вся эта экосистема работала хорошо, под неё нужно писать программы — и для мобильных систем, и для мощных стационарных компьютеров.
Чтобы разработчикам было легче это делать, Apple выпустила свой язык программирования Swift. Плюс этого языка — возможность писать код одновременно для нескольких платформ, чтобы, например, программа работала на макбуке и айпаде. По Swift есть много учебных и справочных сайтов, в том числе и официальный портал разработчиков Apple.
А как же C?
Язык C и его младшие братья — это отличный вариант для тех, кто пишет сложный софт под конкретное железо, гонится за быстродействием и управляет беспилотниками силой мысли. Но точно не для начинающих.
Если Python — это автомобиль с автоматической коробкой передач, то C — это железная руда, из которой вы сможете сделать что угодно: хоть ракету, хоть мотоцикл, хоть автомобиль.
Среди языков программирования грядет революция. Языком года впервые в истории станет очень неожиданный претендент
В 2021 г. звание «Язык программирования года» может достаться языку С#. Это может произойти на фоне взрывного роста его популярности (более 2,2% год к году), объяснения которому пока нет. При этом популярность С и Java за год резко упала, а в случае лидера рейтинга Tiobe Python она осталась приблизительно на прошлогодней отметке.
Любовь программистов переменчива
Титул «Язык программирования года» по итогам 2021 г. может получить язык C#. Как сообщает компания Tiobe, известная своими рейтингами языков, ничто не предвещало такого исхода.
Между тем, именно у C# неожиданно есть все шансы получить заветный титул. Tiobe выбирает язык года ежегодно с 2003 г., и C# может победить впервые за эти 18 лет. Титул могли получить Python или C, что было бы более очевидно. Так что неожиданная, хотя и пока не подтвержденная победа C# вполне может считаться революцией среди языков программирования.
Победитель определяется по степени роста популярности среди программистов в течение всего года. Несмотря на то, что многие разработчики боготворят Python за простоту его освоения и использования, популярность именно C# росла быстрее всех.
Это видно даже на примере самого актуального рейтинга Tiobe, датированного декабрем 2021 г. Как и годом ранее, C# располагается на пятой позиции, однако интерес к нему со стороны программистов по неустановленным причинам подскочил на 2,21%. Для сравнения, аналогичный показатель для Java и С, разместившихся на третьей и второй строчках соответственно, составил -2,41% и -4,69%, что говорит о падении популярности этих языков. Даже новоиспеченный лидер, Python, может похвастаться ростом популярности лишь на уровне 0,69% год к году.

Во многом своей популярности C#, созданный корпорацией Microsoft, обязан разработчикам .NET. Генеральный директор Tiobe Software Пол Янсен (Paul Jansen) лично заявил, что считает именно C# наиболее вероятным кандидатом на звание языка программирования года.
Свои рейтинги Tiobe составляет путем подсчета результатов поисковых запросов, связанных с программированием, в которых упоминается тот или иной язык. Помимо прочего, при составлении учитывается наличие в этих запросах слов programming и language.

Статистика обновляется ежемесячно. Источником данных для подсчета являются логи поиска с самых популярных веб-сайтов, в том числе Google, Bing, Amazon, YouTube и др. Перечень самых популярных ресурсов они берут в рейтинге Alexa.
Немного истории
C#, также известный как С Sharp, представляет собой объектно-ориентированный язык программирования. Работа над ним началась в конце 1998 г. под руководством двух сотрудников Microsoft (на тот момент) – датского инженера Андерса Хейлсберга (Anders Hejlsberg) и Мадса Торгерсена (Mads Torgersen).
Первоначально разработчики не планировали использовать наименование C# и собирались представить новый язык под названием COOL (сокращение от C-style Object Oriented Language), но позже отказались от этой идеи в пользу более классического названия. На первых этапах разработка языка шла невероятно высокими темпами – до версии 1.0 C# дорос к июню 2000 г., когда состоялась его премьера, объединенная с анонсом платформы .NET.

Общедоступным C# 1.0 стал в начале 2002 г. вместе с выходом Microsoft Visual Studio .NET. Версия 2.0 была анонсирована осенью 2003 г. и вышла в ноябре 2005 г. вместе с Visual Studio 2005 и .NET 2.0. В дальнейшем перерывы между выходом новых версия долгое время составляли два-три года, однако позже сократились до одного года. Например, C# 8.0 появился в сентябре 2019 г., а C# 9.0 – в начале осени 2020 г. Самой актуальной на момент публикации материала версией C# была 10.0, дебютировавшая в первых числах ноября 2021 г.
За всю историю существования рейтинга Tiobe C# ни разу не занимал в нем первое место. Однако ему все же посчастливилось попасть в тройку лидеров – в марте 2012 г. он поднялся до третьего места. При этом он никогда не опускался ниже 22 места, чаще всего оставаясь в пределах первой десятки.

Следует отметить, что российские программисты, знающие C#, могут рассчитывать на очень высокие по российским меркам зарплаты. Подробнее об этом читайте в материале CNews.
Не все так однозначно
Если посмотреть на актуальный рейтинг Tiobe более внимательно, то можно заметить, что ряд языков всего за год сумели существенно подняться в нем. Что примечательно, подобных результатов добились, в большинстве своем, классические и даже по-настоящему древние языки.

Например, язык ассемблера за год поднялся с 12 на восьмую строчку, а классический Visual Basic – с 23 на 13. Однако самый большой скачок совершил 64-летний Fortran, вышедший в 1957 г. В декабре 2020 г. он находился на 32 строчке, а год спустя перепрыгнул на 17.

Эксперты Tiobe пока никак не объясняют рост популярности этих языков. Между тем, в мире действительно наметилась тенденция возрождения древних языков, что видно на примере COBOL. Хотя, в его случае это вынужденная мера.
В рейтинге Tiobe за декабрь 2021 г. COBOL (сокращение от COmmon Business Oriented Language) находится на 23 месте. Язык был представлен в 1959 г., и к концу XX века был почти забыт. Его второе рождение, как сообщал CNews, спровоцировала пандемия коронавируса COVID-19. В начале апреля 2020 г. властям американского штата Нью-Джерси срочно потребовалось обновить программное обеспечение на мейнфреймах 40-летней давности, используемых в системе занятости. Все ПО для этой системы было написано на COBOL, а разбирающихся в нем специалистов почти не осталось. Система не справлялась с наплывом посетителей центров занятости, вызванным массовыми сокращениями на фоне пандемии.
К продвижению COBOL в массы несколькими днями позже присоединилась компания IBM. Она заявила о подготовке к проведению бесплатных, что немаловажно, обучающих курсов для программистов, желающих выучить (или вспомнить) этот язык. Инициативу IBM поддержал проект Open Mainframe Project, предназначенный для создания ПО с открытым исходным кодом для запуска на мейнфреймах и курируемый организацией Linux Foundation.
Битва за первое место
C# нельзя считать амбициозным языком программирования, по крайней мере, на данном этапе, поскольку за первое место по популярности он пока не борется. Между тем, в топ-3 рейтинга Tiobe в течение многих месяцев шла ожесточенная битва.

Годами первую строчку в этом рейтинге попеременно занимали С и Java, Однако в 2019 г. у них появился серьезный конкурент в лице Python. Востребованность этого языка во всем мире росла настолько стремительными темпами, что в июне 2019 г. эксперты спрогнозировали его выход на первое место по популярности к лету 2023 г.
Этим предположениям не суждено было сбыться. Уже летом 2021 г. стало очевидно, что Python станет лидером гораздо быстрее. Так и случилось – первую строчку, как сообщал CNews, он занял в ноябре 2021 г., и сохранив ее и в декабрьском рейтинге. Как долго Python продержится на вершине, и кто придет ему на смену, остается неизвестным.