image

Международная организация по стандартизации (ИСО) одобрила C++ 20, последнюю версию объектно-ориентированного языка программирования. Официальный стандарт опубликуют ближе к концу 2020 года.

Новая версия C++ выходит каждые три года, ей присваивают номер года, поэтому C++ 20 является преемником C++ 17.

image

В C++ 20 появились четыре ключевых новых функции:

  • Модули. Исходный код, который компилируется один раз, а затем повторно используется в виде двоичного файла. Они являются более быстрой альтернативой заголовочным файлам, изолируют код и улучшают время компиляции. Бьёрн Страуструп, создатель C++, говорил, что модули должны улучшить время компиляции в 5-10 раз.
  • Концепции. По словам Страуструпа, это предикаты времени компиляции, которые позволяют устранить необходимость в большом количестве метапрограммирования.
  • Библиотека диапазонов. Зависимые от понятий, диапазоны абстрактных коллекций.
  • Сопрограммы, функции, которые могут приостановить выполнение, чтобы быть возобновленными позже. Используются для асинхронного программирования.

Контракты, функцию, которая когда-то была запланирована в C++ 20, пока реализовать не удалось.

Страуструп уже отметил, что в C++ 23 добавят стандартные модули, поддержку библиотек для сопрограмм, исполнители (ключевая функция для параллелизма) и многое другое.

Он выступал за то, чтобы начать с простых и элегантных функций и не беспокоиться о частях языка, которые могут служить только для обратной совместимости. Бремя обратной совместимости ложится на разработчиков, а не на пользователей, и именно так оно и должно быть, отмечал Страуструп. Одна из целей, по его словам, состоит в том, чтобы уменьшить потребность в шаблонном метапрограммировании, а хороший код C++ должен быть легко понятен.

Основные компиляторы C++ еще не реализуют всё в C++ 20. Список того, что реализовано в Clang, находится здесь, а в GCC — здесь (пока нет поддержки модулей). Последняя версия Visual C++ поддерживает некоторые функции C++ 20 при использовании с флагами, такими как /experimental:module и /std:c++latest. С таблицей состояния соответствия компиляторов можно ознакомиться здесь.

C++ занимает пятое место по популярности в рейтинге языков Redmonk. В рейтинге Института инженеров электротехники и электроники (IEEE) за 2020 год он оказался на четвертой позиции.
См. также: