ИСО одобрила С++ 20, стандарт будет опубликован к концу года
Международная организация по стандартизации (ИСО) одобрила C++ 20, последнюю версию объектно-ориентированного языка программирования. Официальный стандарт опубликуют ближе к концу 2020 года.
Новая версия C++ выходит каждые три года, ей присваивают номер года, поэтому C++ 20 является преемником C++ 17.
В 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 год он оказался на четвертой позиции.
См. также: