Выхода С++ 20 осталось ждать совсем недолго. Новый стандарт утвердила группа международной организации по стандартизации ISO – Working Group 21 (WG21).
Грядут перемены
Актуальным стандартом 35-летнего С++ является C++17, утвержденный соответственно в 2017 году. Херб Саттер – инженер Microsoft и председатель комитета WG21 – отметил, что DIS (проект международного стандарта) для C++ 20 был принят единогласно. Это означает, что документ полностью технически одобрен. Остался лишь один заключительный раунд обсуждений в комитете, который уже серьезно не повлияет на стандарт. Опубликуют его до конца 2020 года.
По словам Саттера, выпуск C++ 20 – очень значимое событие в истории языка. Это крупнейший выпуск со времен C++ 11 и первая с момента создания С++ стандартизированная ISO версия.
Основные нововведения
В С++ 20 появятся модули и корутины. Идею модулей продвигает разработчик Google – Ричард Смит. Их можно будет использовать в заголовочных файлах и изолировать эффекты работы макросов в рамках крупных сборок.
Корутины – не менее важное нововведение. Херб Саттер отметил: «Впервые за 35 лет в C++ добавили новую функцию, которая даст пользователям возможность определять именованные границы инкапсуляции».
Сейчас, по словам Саттера, в С++ существует только три возможности создавать собственные «Слова силы»: это переменная, функция и класс. Переменная инкапсулирует (скрывает) текущее значение; функция – код и поведение; класс – код, поведение и связь между функцией и состоянием.
Корутины – это обобщенные функции. Обычная функция в норме стартует и выполняется до конца. Выполнение же корутины можно приостановить и снова продолжить с того же места.
В чем важность С++ сегодня
C++ в 1985 году разработал датчанин Бьерн Страуструп. Язык критически важен для Microsoft (первая версия Windows вышла в том же 1985 году) и других компаний и проектов, в которых предъявляются критические требования к производительности и надежности кода, к расходу памяти и других ресурсов.
С++ – очень быстрый язык. Он позволяет, с одной стороны, использовать высокоуровневые средства программирования, с другой – взаимодействовать с ресурсами на низком уровне. Сегодня на нем создаются крупные проекты уровня операционных систем, блокчейнов и «больших» игр.
Все передовые компиляторы и средства разработки, например, Microsoft Visual Studio, GNU Compiler Collection (GCC) и Clang, поддерживают стандарт C++17. Вероятно, в начале 2021 года в них появится и поддержка С++20.