C++

Поделиться:

На вопросы о C++ отвечали только те, кто выбрал его в качестве одного из трех основных языков программирования.

Поделиться:

Какие стандарты C++ вы регулярно используете?

Диего Родригес-Лосада Гонсалес

Ведущий архитектор в JFrog

Уровни использования C++23 и более ранних стандартов не вызывает удивления: темпы перехода на новый стандарт в последние годы не сильно отличаются и просто сдвинуты во времени. В 2023 году доля C++23 составляет 10%, что несколько ниже уровня C++20 в 2020 году (12%), но это, скорее всего, связано тем, что в C++20 было больше нововведений по сравнению с C++23.

Инбал Леви

Ведущая разработчица в MPGC Services Ltd (Millennium), участница рабочей группы по стандартизации C++

Приятно видеть, что значительная часть разработчиков игр и встраиваемых систем уже работает с C++20. Эта версия расширяет возможности компиляции, что особенно важно в этих областях разработки, ведь там большое внимание уделяется производительности во время выполнения. Надеюсь, в ближайшие годы мы сможем наблюдать такие же темпы перехода на C++23.

Брайс Адельштейн Лельбах

Главный архитектор в NVIDIA

Резкий скачок C++20 вполне логичен, поскольку реализации стали гораздо более зрелыми, а функции завершенными. Думаю, в ближайшие несколько лет мы увидим, как C++20 заменит C++17 в качестве базового диалекта для большинства пользователей языка.

Переход на новые стандарты C++

Диего Родригес-Лосада Гонсалес

Ведущий архитектор в JFrog

57% тех, кто использует C++98/03, не собираются переходить на другой стандарт? Звучит печально, но если учесть, что в целом только 8% респондентов все еще пишут на C++98/03, то получается, что только около 4% C++-кода во всем мире останется на старом стандарте. Это не так плохо и не сильно отличается от происходящего в других языках программирования.

Планируете ли вы в ближайшем году использовать в текущем проекте какие-либо из этих возможностей C++20?

Диего Родригес-Лосада Гонсалес

Ведущий архитектор в JFrog

Хотя за последнее время в системах сборки и в экосистеме многое было сделано для поддержки модулей C++20, то, что половина опрошенных планируют их использовать (я предполагаю, в продакшне) уже в следующем году, кажется мне чересчур оптимистичной оценкой. Я не думаю, что мы достигнем этого в ближайшие 12 месяцев.

Инбал Леви

Ведущая разработчица в MPGC Services Ltd (Millennium), участница рабочей группы по стандартизации C++

Меня очень радует быстрый темп принятия новых возможностей в области встраиваемых систем, в которой традиционно не спешат внедрять новое. Думаю, это также связано тем, какие важные преимущества может дать C++20 в этой области.

Брайс Адельштейн Лельбах

Главный архитектор в NVIDIA

Интересно, сколько людей в действительности попробовали использовать модули. Интерес к ним велик, но не так много кто их внедряет.

Какую IDE или редактор вы используете чаще всего для разработки на C++?

Диего Родригес-Лосада Гонсалес

Ведущий архитектор в JFrog

На рынке явно доминируют Microsoft и JetBrains. Похоже, быстрый рост VS Code наконец-то замедлился (по крайней мере, среди аудитории C++) и ситуация на рынке начала стабилизироваться в равных долях для трех основных игроков: CLion, VS и VS Code.

Какие фреймворки вы регулярно используете для юнит-тестирования?

Диего Родригес-Лосада Гонсалес

Ведущий архитектор в JFrog

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

Инбал Леви

Ведущая разработчица в MPGC Services Ltd (Millennium), участница рабочей группы по стандартизации C++

Меня удивляет количество разработчиков, пишущих юнит-тесты без фреймворков. В комитете ведется работа по продвижению менеджеров зависимостей, что, я надеюсь, повлияет на снижение этих показателей в ближайшие годы как среди тех, кто вообще не пишет юнит-тесты, так и среди тех, кто делает это без фреймворка.

Как вы управляете сторонними библиотеками в C++?

Диего Родригес-Лосада Гонсалес

Ведущий архитектор в JFrog

Приятно видеть, что все меньше разработчиков компилируют библиотеки вручную по инструкциям. Есть надежда, что использование автоматизированных решений позволит еще больше сократить эту практику, уникальную для экосистем C и C++.

Инбал Леви

Ведущая разработчица в MPGC Services Ltd (Millennium), участница рабочей группы по стандартизации C++

Я думаю, что это отличный признак того, что в сообществе C++ необходима широкая поддержка менеджеров зависимостей.

Брайс Адельштейн Лельбах

Главный архитектор в NVIDIA

Рано или поздно настанет поворотный момент, когда менеджеры зависимостей (vcpkg, Conan и т.п.) станут достаточно зрелыми и широко используемыми, чтобы стать стандартом дефакто. Но пока мы к этому не пришли.

Какие проектные модели или системы сборки вы регулярно используете?

Брайс Адельштейн Лельбах

Главный архитектор в NVIDIA

Интересно наблюдать за падением доли CMake и ростом Ninja. Такой тенденции я не замечал. Возможно, это просто шум, но, учитывая быстрый рост CMake до этого момента, эти данные могут говорить о том, что он достиг максимального уровня проникновения на рынок.

Какие компиляторы вы регулярно используете?

Какие языки программирования вы используете в проектах в сочетании с C++?

Диего Родригес-Лосада Гонсалес

Ведущий архитектор в JFrog

Python — еще один полезный инструмент в арсенале C++-разработчика.

Брайс Адельштейн Лельбах

Главный архитектор в NVIDIA

Похоже, активное использование JavaScript и Rust в сочетании с C++ — это новый тренд. Учитывая растущую популярность Rust, странно, что мы не наблюдаем еще более быстрого роста комбинации Rust и C++. Это говорит о том, что использовать Rust в существующих проектах (в отличие от новых) может быть сложнее.

Какие инструменты используете вы или ваша команда для соблюдения стандартов или контроля/анализа качества кода?

Брайс Адельштейн Лельбах

Главный архитектор в NVIDIA

Я думаю, что уменьшение доли инструментов анализа, предоставляемых IDE, говорит о том, что люди включают статический анализ в процессы CI, например, запускают статический анализатор Clang-tidy/ClangFormat/Clang в GitHub Actions.

Как вы или ваша команда выполняете анализ кода?

Какие инструменты или техники вы используете для ускорения сборки проекта на C++?

Диего Родригес-Лосада Гонсалес

Ведущий архитектор в JFrog

Пять-десять лет назад на рынке IDE для С++ по сути доминировал один продукт — Visual Studio, ориентированная на Windows. Люди работали в Windows только для того, чтобы иметь доступ к хорошей IDE. Сегодня здесь есть два основных игрока, JetBrains и Microsoft, и это очень хорошо для пользователей. Благодаря Visual Studio Code и CLion IDE стали гораздо доступнее для тех, кто не пользуется Windows.

Спасибо, что уделили время!

Если результаты исследования показались вам интересными, поделитесь ими с друзьями и коллегами.

Если у вас есть вопросы или пожелания, свяжитесь с нами по адресу surveys@jetbrains.com.