Должен признать, что в некоторые из предыдущих лет C++ мог ощущаться немного «скучным» и «стабильным». Новые фичи, новый стандарт каждые три года, встречи, конференции... обычная жизнь (не считая некоторых дополнительных событий в мире, экономике и эпидемиологической ситуации). Прошедший год отличается, потому что выглядит как «переломный» в истории C++... и кто знает, куда это заведёт нас.
Примечание переводчика. На оригинал статьи я наткнулся в чатике нашей конференции C++ Russia, и если вам интересен этот текст — подозреваю, что будет интересна и конференция (пройдёт в мае, в формате «Москва + онлайн».
Давайте вспомним некоторые вещи, случившиеся в этом году.
Отчёты за прошлые годы: 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012.
Важная оговорка: представленные взгляды здесь сугубо мои личные, они субъективные, и не представляют собой мнение комитета по стандартизации C++ или компании, на которые я работаю.
Оглавление
Краткое вступление
В 2022-м мир пытался вернуться к «норме», и в отношении C++ это было заметно по нескольким «реальным»/офлайновым конференциям и встречам комитета ISO. Вендоры компиляторов были заняты поддержкой C++20 и даже некоторых элементов C++23. А комитет работал над завершающими частями C++23 и некоторыми фичами C++26.
Однако примерно в середине года мы начали видеть некоторые «переломные моменты», когда несколько влиятельных групп анонсировали новые языки программирования. Сначала пришёл Val (возглавляемый Дэвидом Абрахамсом), затем Carbon (поддерживаемый Google), а затем CppFront (возглавляемый Хербом Саттером).
Следующая любопытная вещь — улучшения и обратная связь со стороны сообщества. Например, Витторио Ромео обратился к старой проблеме производительности отладки для std::move, std::forward, другим мелким задачам. Хорошая новость в том, что вендоры довольно быстро реализовали эти предложения.
В целом я вижу такие главные тренды и темы 2022-го:
-
C++23 в стадии feature freeze
-
Популяризация C++20
-
Новые языки
-
Обратная связь и улучшение инструментов
А кроме того, можно добавить ещё один пункт: анонс ChatGPT. Хотя он и не относится напрямую к C++, он может очень сильно сказаться на том, как мы пишем программы, учимся и даже преподаём. Вкратце, ChatGPT показал себя полезным помощником для различных задач, так что посмотрим.
Читайте дальше для полной картины.
Таймлайн
Давайте посмотрим на главные события:
Дата |
Событие |
---|---|
7 февраля |
Пленарное заседание комитета ISO C++ в Zoom |
15 февраля |
Visual Studio 2022 17.1 |
25 марта |
Clang14.0 |
6 апреля |
Конференция ACCU (до 9 апреля) |
13 апреля |
Boost 1.79: релиз мажорной версии |
2 мая |
Val анонсирован на Cpp Now |
6 мая |
GCC 12.1 |
10 мая |
В MSVC STL завершена работа над /std:c++20 (во второй раз :)) |
22 июля |
анонс Carbon на C++North |
25 июля |
Пленарное заседание комитета ISO C++ в Zoom, С++23 в freeze-фазе |
9 августа |
Visual Studio 2022 17.3 |
19 августа |
GCC 12.2 |
6 сентября |
Clang 15.0 |
11 сентября |
Конференция CppCon (до 16 сентября) |
16 сентября |
CppFront анонсирован на CppCon |
7 ноября |
Гибридная встреча комитета ISO C++ на Кона (до 12 ноября) |
8 ноября |
Visual Studio 2022 17.4 |
16 ноября |
Встреча C++ (до 19 ноября) |
30 ноября |
Анонс ChatGPT |
14 декабря |
Boost 1.81: релиз мажорной версии |
22 декабря |
libstdc++: имплементация поддержки таймзон C++20 в <chrono> |
Вот видеорезюме этой таблицы:
Поддержка C++ 17 в компиляторах
Не хочу в этот раз быть скучным. Все главные компиляторы поддерживают C++17... за небольшими исключениями, вроде отсутствия поддержки плавающей точки в from_chars и to_chars или проблем с параллельными алгоритмами.
Если хотите изучить все фичи C++17, вот мой обзор:
Поддержка C++ 20 в компиляторах
По состоянию на конец 2022 года только MSVC (VS 2022 17.0) полностью поддерживает стандарт. GCC 13.0 (почти что выпущенный) содержит поддержку большинства фич, а Clang (16.0) немного отстаёт. Главные фичи, которых пока не хватает или с которыми не всё просто — модули, std::format, дополнения std::chrono и корутины. Но процесс идёт.
Вот некоторые из лучших фич, добавленных в стандарт:
-
модули
-
корутины
-
концепты и концепты в стандартной библиотеке
-
ranges
-
operator
<=>
и его использование в стандартной библиотеке, упрощение правил operator rewriting -
Форматирование текста:
std::format
-
Календарь и таймзоны
-
jthread
, семафоры, больше атомиков, барьеров, больше вещей по concurrency -
consteval
иconstinit
-
constexpr
-алгоритмы, векторы, строки, аллокация памяти -
std::span
-
и другое!
А вот таблица поддержки компиляторами языковых фич:
компилятор |
отсутствующие фичи |
---|---|
GCC 11 |
Модули в «частичном» состоянии |
Clang 14/16 |
Модули и корутины частично, улучшения CTAD отсутствуют |
MSVC 16.9 |
Полная поддержка! |
Теперь про библиотечные фичи:
компилятор |
пометки |
---|---|
GCC libstdc++, GCC 13 |
Почти полная поддержка! |
Clang libc++, как в Clang 14 |
отсутствуют: jthread, header units стандартной библиотеки, |
MSVC STL |
Полная поддержка в версиях MSVC 16.9, 17.0! |
Можете отслеживать статус на этой странице.
Если хотите изучить все фичи, можете прочитать этот отличный и суперпопулярный пост Олександра Коваля:
All C++20 core language features with examples
В этом году в рубрике C++ Stories я также описал многие фичи нового стандарта:
-
или посмотрите 73 статьи с тегом cpp20: Cpp20 - C++ Stories
Статус C++23
Этот год был значим тем, что новый стандарт перешёл в стадию «feature freeze». Комитет анонсировал это в середине года после июньской встречи.
Некоторые языковые фичи и их текущая поддержка в компиляторах:
Фича |
GCC |
Clang |
MSVC |
---|---|---|---|
Сделать () опциональнее для лямбд |
11.0 |
13.0 |
x |
|
12.0 |
14.0 |
x |
Deducing |
x |
x |
VS 2022 17.2 (partial) |
Многомерный operator[] |
12.0 |
x |
x |
#elifdef и #elifndef |
12.0 |
13.0 |
x |
|
13.0 |
16.0 |
x |
|
13.0 |
16.0 |
x |
Поддержка UTF-8 в качестве кодировки portable source file |
13.0 |
15.0 |
VS 2015 |
И одна из самых впечатляющих добавленных вещей, новость о которой разлетелась в сообществе — добавление P2718R0 , которое совершенствует P2012 “Fix the range‐based for loop”.
Если вкратце, то можно станет писать:
std::vector<std::string> createStrings();
for (char c : createStrings().at(0)) // <<!
{
// some code...
}
По состоянию на C++20 у этого for-loop выражения было неопределённое поведение, потому что мы обращаемся к временному объекту, чьё время жизни уже вышло. В C++23 все временные объекты в этом выражении продлят своё время жизни, не только первый.
И библиотека:
Фича |
GCC |
Clang |
MSVC |
---|---|---|---|
Stacktrace-библиотека |
x |
x |
x |
std::is_scoped_enum |
11.0 |
12.0 |
VS 2022 17.0 |
contains() для strings и string views |
11.0 |
12.0 |
VS 2022 17.0 |
constexpr для std::optional и std::variant |
12.0 |
13.0 |
VS 2022 17.1 |
std::out_ptr(), std::inout_ptr() |
x |
x |
VS 2022 17.0 |
ranges::starts_with() и ranges::ends_with() |
x |
x |
VS 2022 17.1 |
DR: std::format() improvements |
13.0 |
16.0 |
VS 2022 17.2 |
ranges zip |
13.0 |
15.0 |
VS 2022 17.3 |
Монадические операции для std::optional |
12.0 |
14.0 |
VS 2022 17.2 |
<expected> |
12.0 |
16.0 |
VS 2022 17.3 |
ranges::to |
x |
x |
VS 2022 17.4 |
Pipe support for user-defined range adaptors |
x |
x |
VS 2022 17.4 |
ranges::iota(), ranges::shift_() |
x |
x |
VS 2022 17.4 |
views::join_with |
13.0 |
x |
VS 2022 17.4 |
views::chunk_* и views::slide |
13.0 |
x |
VS 2022 17.3 |
views::chunk_by |
13.0 |
x |
VS 2022 17.3 |
<flat_map>, <flat_set> |
x |
x |
x |
Formatted output library <print> |
x |
x |
x |
Formatting ranges |
x |
x |
x |
constexpr for integral overloads of std::to_chars() and std::from_chars() |
13.0 |
16.0 |
VS 2022 17.4 |
Модули стандартной библиотеки |
x |
x |
VS 2022 17.5* |
Монадические операции для std::expected |
x |
x |
x |
Встречи ISO C++
В этом году было три встречи ISO:
-
два виртуальных однодневных пленарных голосования: в феврале и июне
-
одна гибридная в городе Кона (Гавайи)! Возвращение нормальной жизни :)
План состоит в том, чтобы завершить драфт C++23, разобраться с проблемами, которые отметили в National Bodies, и затем отправить на публикацию весной следующего года. Мы можем ожидать, что C++23 будет официально анонсирован осенью 2023-го.
Вот некоторые заметки со встреч:
-
2022-11 Kona ISO C++ Committee Trip Report — C++23 First Draft! : cpp
-
Trip report: Autumn ISO C++ standards meeting (Kona) – Sutter’s Mill
-
July 2022 ISO C++ committee virtual meeting report | The CLion Blog
Следующая встреча пройдёт в городе Иссакуа (США), начиная с 6 февраля.
Посмотреть полный список встреч: Upcoming Meetings, Past Meetings : Standard C++
Компиляторы
Чтобы поспевать за стандартами C++, создателям компиляторов и командам библиотек нужно проделывать немало работы.
Посмотрим на три популярных компилятора: MSVC, GCC и Clang.
Visual Studio
Команда MSVC переписала свою компиляторную инфраструктуру и может относительно быстро выпускать новые фичи. Они даже объявили о поддержке C++ 20 целых два раза!
Этот анонс в основном был связан с дополнительными изменениями и фиксами DR Standard для <format>, <chrono> и <ranges>. После завершения работы над ними имплементация снова стала стабильной.
Некоторые другие новости и посты MSVC:
-
What’s New for C++ Developers in Visual Studio 2022 17.4 - C++ Team Blog
-
High-confidence Lifetime Checks in Visual Studio version 17.5 Preview 2 - C++ Team Blog
-
Visual Studio 2022 Performance: Faster C++ Source Code Indexing - C++ Team Blog
-
Integrating C++ header units into Office using MSVC (1/n) - C++ Team Blog
-
VS2022 Performance Enhancements: Faster C++ Development - C++ Team Blog
-
Enhancing Game Developer Productivity with Visual Studio 2022 - C++ Team Blog
И есть страница документации о соответствии стандартам C++ (включая C++20): Microsoft C++ language conformance table
Также вы можете отслеживать прогресс имплементации стандартной библиотеки на GitHub: Changelog · Microsoft/STL Wiki.
GCC
Текущая стабильная версия — GCC 12.2 из августовской 12 Release Series.
Также можно посмотреть на готовящийся GCC 13: GCC 13 Release Series — Changes, New Features, and Fixes - GNU Project.
Информация о поддержке языка и библиотеки:
И некоторые новости про GCC:
Clang
Текущая стабильная версия: 15.0.6 (выпущена в конце ноября), Welcome to Clang’s documentation! — Clang 15.0.0 documentation.
А также можно предварительно посмотреть на Clang 16.0: Clang 16.0.0git (In-Progress) Release Notes — Clang 16.0.0git documentation.
Производительность отладки
Давайте разберём тему производительности и обратной связи от сообщества:
Вот статья Витторио Ромео: the sad state of debug performance in c++ — и исправление, описанное в Improving the State of Debug Performance in C++ - C++ Team Blog
Если вкратце, то благодаря атрибуту msvc::intrinsic
команда смогла аннотировать пару функций, связанных с move, и в некоторых случаях кодогенерация в MSVC 17.4 выдавала 226 инструкций, а в 17.5 стала выдавать всего лишь 106! Как сообщается в release notes, std::move
, std::forward
, std::move_ifnoexpect
и std::forward_like
теперь не производят вызовов функции в сгенерированном коде, даже в режиме отладки. Это для того, чтобы избежать ненужного оверхеда от named casts в отладочных сборках. Необходим /permissive-
или подразумевающий его флаг (вроде std:c++20
или std:c++latest
).
Также есть ещё два бага, описанных Витторио: 104719 – Use of std::move
in libstdc++ leads to worsened debug performance и Use of std::move
in libc++ leads to worsened debug performance · Issue #53689 · llvm/llvm-project - похоже, что их пофиксили в GCC и Clang, и они теперь могут сворачивать простые инструкции.
В целом с точки зрения отладки в C++ ещё много работы, но как можно видеть, сообщество работает хорошо, пытается прислушиваться к своим потребностям, а вендоры улучшают свои имплементации.
Языки-наследники C++ и безопасность
Процесс ISO C++ в некоторых случаях может быть медленным и неэффективным. А ещё в комитете есть много «холиваров», особенно о вещах вроде «не ломать ABI». В некоторых случаях мы знаем о проблемах в стандарте и знаем, как их исправить... но поскольку мы не можем сломать ABI, с этим ничего не поделать (кроме как добавить хак-костыль). Некоторые группы, например, из Google, были несколько разочарованы этим фактом и создали новые подходы к C++.
Есть отличная статья: The Year of C++ Successor Languages от Люциана Раду Теодореску, где вы можете прочитать об этих подходах и краткие описания для каждого языка.
В этой статье мы можем прочитать, что несмотря на критику (обильную!), C++ непрерывно остаётся в числе топ-4 языков программирования на протяжении последних 30 лет. Критики заявляют, что язык слишком большой и сложный, что некоторые фичи следует удалить, что фич одновременно слишком много и недостаточно. Эта критика привела к возникновению нескольких языков программирования, которые ставят целью сменить C++ как доминирующий язык системного программирования. В 2022-м три разных языка были представлены на крупных конференциях по C++: Val, Carbon и CppFront. Эта статья содержит критический разбор этих языков и их потенциал в качестве замены C++.
Val
Анонсировали и возглавляют его Дейв Абрахамс и Димитрий Ракордон. Сильно вдохновлён Swift, выглядит последовательным и лёгким в использовании.
Подробнее: https://www.val-lang.dev/
Carbon
Поддерживается Google (и, по словам Чендлера, также Adobe), «ощущается как проект по генеральной уборке в C++».
Подробнее: carbon-language @Github
и ещё ссылка:
CppFront/Cpp2
Возглавляет Герб Саттер. Это попытка улучшить синтаксис и «дефолты»... но продолжать компилироваться в C++.
Мой взгляд
Всегда хорошо, когда есть конкуренция. C++ может выиграть от существования других языков и обмениваться фичами с Carbon или Rust.
А ещё в этом году заметна тематика безопасности языков, и мы видим такие тексты:
-
Google Online Security Blog: Memory Safe Languages in Android 13 — например, в Android 13 примерно 21% всего нового нативного кода (C/C++/Rust) написана на Rust.
ChatGPT
Я спросил бота, но он не рассказал мне, написан ли он на C++. Думаю, некоторые компоненты могут быть на C++, но поскольку это громадная система, там может быть использовано множество технологий.
В видеоролике C++ Weekly - Ep 354 - Can AI And ChatGPT Replace C++ Programmers? - YouTube Джейсон Тёрнер экспериментирует с ботом. Порой он выдаёт вполне валидные ответы, но по-прежнему надо быть внимательным к деталям. Этот чатбот может быть очень полезным помощником в кодинге.
Я также прочитал прекрасное письмо от основателя Educative:
AI вроде ChatGPT изменит ландшафт разработки программного обеспечения — но не так, как многие опасаются. Как разработчик и сторонник обучения разработке, я верю, что ChatGPT способен помочь нам лучше писать софт, но не лишит разработчиков работы.
Он также предполагает следующее:
ChatGPT сделает кодинг продуктивнее и безбажнее. По мере того, как он будет понимать более сложные требования, мы можем ожидать, что он вытеснит механическую работу, улучшив продуктивность и тестирование.
По мере развития помощников вроде ChatGPT многие из скучных задач, которые занимали разработчиков, могут уйти в следующее десятилетие, включая автоматические юнит-тесты, генерацию тест-кейсов на основании параметров, анализ кода для предложения практик безопасности, автоматизацию QA.
И это не считая способностей в обучении. Представьте дружелюбного «бота-тьютора для C++». Вы можете учить язык программирования или спросить о любой языковой фиче так же, как вы спросили бы коллегу-эксперта на работе.
Думаю, мы увидим много вдохновляющих инструментов в следующем году... Возможно, даже что-то именно для C++, кто знает :)
Конференции и онлайн-мероприятия
Вот ссылка на страницу ISO C++ со всеми зарегистрированными конференциями в мире: Conferences Worldwide, C++FAQ.
Отдельные яркие моменты, ресурсы, видеозаписи кейноутов:
-
How C++23 Changes the Way We Write Code - Timur Doumler - CppCon 2022 - YouTube
-
Using C++14 in an Embedded “SuperLoop” Firmware - Erik Rainey - CppCon 2022 - YouTube
-
My CppCon 2022 talk is online: “Can C++ be 10x simpler & safer … ?” – Sutter’s Mill
Онлайн-встречи по C++
Я впечатлён Йенсом Уэллером, создавшим глобальный онлайн-митап:
Meeting C++ online (Düsseldorf, Deutschland) | Meetup
Например, посмотрите на некоторые недавние AMA (Ask Me Anything):
Книги
Некоторые избранные книги, вышедшие в 2022-м (или в конце 2021-го):
Дисклеймер: ссылки в этой таблице — аффилированные ссылки на Amazon.
Название |
Дата выхода |
---|---|
Beautiful C++: 30 Core Guidelines… (J. Guy Davidson, Kate Gregory) |
декабрь 2021 |
Discovering Modern C++ 2nd Edition (Peter Gottschling) |
декабрь 2021 |
Embracing Modern C++ Safely (J. Lakos, V. Romeo, R. Khlebnikov, A. Meredith) |
декабрь 2021 |
Modern CMake for C++ (Rafal Swidzinski) |
февраль |
C++ Core Guidelines Explained (Rainer Grimm) |
апрель |
Template Metaprogramming with C++ (Marius Bancila) |
август |
Tour of C++, A (C++ In-Depth Series) 3rd Edition (Bjarne Stroustrup) |
сентябрь |
C++20 - The Complete Guide (Nicolai M. Josuttis) |
октябрь |
C++ Software Design: Design Principles and Patterns for High-Quality Software (Klaus Iglberger) |
октябрь |
Copy and Reference Puzzlers - Book 3 (Jason Turner) |
декабрь |
Object Lifetime Puzzlers - Book 3 (Jason Turner) |
декабрь |
C++ Programming Fundamentals (D. Malhotra and N. Malhotra) |
декабрь |
Можете прочитать мой обзор книги “Embracing Modern C++”: Embracing Modern C++ Safely, Book Review - C++ Stories
А ещё вышла моя собственная книга “C++ Initialization Story”, выпущенная в середине 2022 и завершённая в декабре:
C++ Initialization Story @Leanpub
Популярность
Похоже, что C++ стабильно рос в различных чартах популярности языков. Посмотрите:
Картинка основана на данных опроса Stack Overflow and Tiobe Index.
По данным GitHub, Octoverse C++ находится на 6-м месте (в прошлом году был на 7-м), это можно увидеть здесь.
Более того, в раннем ноябре также была интересная статья: The pool of talented C++ developers is running dry
Из статьи:
Энтони Пикок, бывший квант в Citi и Citadel, сказал «невозможно найти людей с по-настоящему высоким уровнем скиллов в C++, а именно этого хочет любая трейдинговая компания».
Даже если Carbon, Rust или CppFront уже за углом... (или нет?)... всё равно необходимо будет мейнтейнить прорву кода на C++. Более того, многие индустрии вроде финансовой по-прежнему используют C++ для низкоуровневой инфраструктуры.
Вот соответствующая дискуссия на Reddit: The pool of talented C++ developers is running dry : cpp с более чем 350 комментариями!
Ваш фидбек и опрос
12 декабря я начал мой ежегодный опрос об использовании C++. В этом году я получил 649 откликов. Спасибо за них!
Просуммируем ваши ответы :)
Использование стандартов C++
Какой стандарт вы используете постоянно?
Answer |
2022 |
2021 |
2020 |
2019 |
2018 |
---|---|---|---|---|---|
Pre C++11 |
10.8% |
7.5% |
8.4% |
10.3% |
20% |
C++11 |
27.6% |
25.6% |
25.5% |
30.3% |
41% |
C++14 |
28.7% |
28% |
28.6% |
35% |
42% |
C++17 |
61.8% |
66.1% |
64.4% |
62.4% |
44% |
C++20 |
42.2% |
28.8% |
20.4% |
9.2% |
n/a |
(сумма чисел не равна 100%)
C++20 получает больше использования, в то время как C++11/14 стабилизируется в районе 28%.
Опыт с C++17
Насколько вы знакомы с C++ 17?
Answer |
2022 |
2021 |
2020 |
2019 |
---|---|---|---|---|
experimenting with C++17 |
29.7% |
28.9% |
34.9% |
39.4% |
only read basic information |
10.2% |
11.4% |
9.4% |
13.4% |
already using in production |
57.6% |
56.6% |
52.2% |
41.6% |
don’t know any of its feature |
1.8% |
<1% |
1.6% |
2.6% |
Опыт с C++20
Насколько вы знакомы с C++ 20?
Answer |
2022 |
2021 |
2020 |
2019 |
---|---|---|---|---|
experimenting with C++20 |
37.8% |
35.7% |
35.6% |
29.3% |
only read basic information |
36.2% |
44.1% |
50.8% |
59.8% |
already using in production |
17.6% |
12.8% |
6.8% |
n/a |
don’t know any of its feature |
7.7% |
6% |
5.2% |
9.1% |
Используемые компиляторы
Answer |
2022 |
2021 |
2020 |
2019 |
---|---|---|---|---|
GCC |
70.9% |
76% |
70.3% |
75.6% |
Clang |
46.1% |
51.8% |
49.6% |
58.7% |
MSVC |
54.7% |
54.1% |
58.5% |
56.3% |
Intel Compiler |
2.5% |
2.3% |
2.8% |
3.1% |
C++ Builder |
1.1% |
2.2% |
3% |
1.2% |
(сумма чисел не равна 100%)
Какие IDE вы используете для своих проектов на C++
Answer |
2022 |
2021 |
---|---|---|
Visual Studio |
48.2% |
48.8% |
Visual Studio Code |
49.3% |
47.1% |
CLion |
19.3% |
18.5% |
C++ Builder IDE |
1.5% |
2% |
Eclipse |
6.2% |
5.8% |
Vim/Emacs |
24% |
26.9% |
QT Creator |
14.6% |
15.7% |
Notepad++ |
9.1% |
7.4% |
XCode |
6.8% |
6.1% |
(сумма чисел не равна 100%)
Какие дополнительные инструменты вы используете?
Answer |
2022 |
2021 |
2020 |
2019 |
---|---|---|---|---|
Debugger |
74.3% |
80.8% |
77% |
83.6% |
Sanitizers |
36.8% |
38.9% |
31.9% |
40.4% |
Static Code Analysis |
57.2% |
58.7% |
60.9% |
55.7% |
Profilers |
43% |
49.1% |
53.4% |
56.8% |
Clang Format |
45% |
49.4% |
43.3% |
49.3% |
CMake |
64.9% |
67.3% |
62.3% |
66% |
Package Managers |
25.3% |
26.2% |
23.2% |
21.4% |
(сумма чисел не равна 100%)
Лучшее, что случилось в 2022:
Ответы на этот открытый вопрос, основанные на популярности (я попытался сгруппировать похожие вещи), без какого-либо конкретного порядка:
-
Языковые обновления и стандарты: вы упомянули вещи вроде релиза C++20 и C++23, а также популяризацию новых фич и пропоузалов.
-
Новые языки: Carbon / Cpp2 / Val, и возникновение дискуссии о следующих шагах в сообществе.
-
Конференции и события: как обычно, конференции вроде CppCon и Meeting C++ набрали много голосов.
-
Книги и ресурсы: популярными ответами были “A Tour of C++”, “Embracing Modern C++ Safely,” и “Klaus Iglberger’s book on Software Design”.
-
YouTube-каналы: особенно Jason’s Turner, Cppcon Channel и Meeting C++ Youtube
-
Личные проекты и образование: многие из вас упоминали работу над личными проектами или улучшение своего владения C++ и понимание языка.
-
Поддержка компиляторов: доступность поддержки новых стандартов как необходимое развитие для сообщества.
-
Популярность C++: отклики упоминали TIOBE и другие рейтинги.
Также здорово было слышать новости вроде
-
«Переход моей компании на C++20»
-
«Личный апгрейд с C++14 до C++20»
-
«Я только что снова получил работу в C++ и довольно счастлив из-за этого»
Или «Мы всё ещё живы ;-)» :)
Также было много позитивных откликов о моём блоге, моих книгах и рассылке! Спасибо!
«Мне нравится ваша книга "C++ Initialization"»
«Нашёл ваш блог C++ Stories, было довольно полезно в подготовке к собеседованиям»
Другие опросы:
Мой опрос не самый главный :) Посмотрите на другие большие от таких компаний:
-
JetBrains Annual Highlights 2022 | JetBrains: Developer Tools for Professionals and Teams(https://blog.jetbrains.com/clion/2021/07/cpp-ecosystem-in-2021/)
-
Results summary: 2022 Annual C++ Developer Survey “Lite” : Standard C++
Заключение
Спасибо, что дочитали досюда :)
C++ сейчас на развилке. С одной стороны, он в хорошей форме, с кучей новых фич, поддержкой компиляторов и отличных инструментов (и с даже улучшившейся производительностью отладки!) Но в то же время у многих экспертов есть сложность с тем, чтобы сделать язык безопаснее и починить некоторые старые проблемы (дискуссия о сломанном ABI). Вот почему некоторые эксперты пытаются начать с чего-то свежего и улучшить C++ с помощью создания новых конкурентов. Эти новые языки либо напрямую компилируются в C++ (как CppFront), либо позволяют активное взаимодействие с C++ (как Carbon). Так что, возможно, в будущем вы будете писать на супер-надёжном языке C++2 и по-прежнему держать некоторые легаси-файлы на старом добром современном C++ в одних и тех же проектах. Я надеюсь, что «дружеская соревновательность» продвинет C++ дальше и позволят нам получить лучшие фичи и более надёжный код.
А с ChatGTP кто знает, будем ли мы вообще кодить в следующем году :)
В целом большие вещи в 2022-м вижу так:
-
Популяризация C++20
-
Работа над C++23
-
Новые языки и новые возможности для улучшения C++
-
Обсуждения в сообществе и петля обратной связи
Автор: Евгений Трифонов