C++

Поделиться:

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

Поделиться:

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

8%

C++98 / C++03

27%

C++11

21%

C++14

43%

C++17

29%

C++20

10%

C++23

13%

Затрудняюсь с ответом

6%

C++98 / C++03

28%

C++11

27%

C++14

48%

C++17

37%

C++20

14%

C++23

13%

Затрудняюсь с ответом

5%

C++98 / C++03

25%

C++11

15%

C++14

48%

C++17

39%

C++20

16%

C++23

10%

Затрудняюсь с ответом

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

Ведущий архитектор в 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++

57%

Я не планирую переходить на другой стандарт C++

12%

C++11

2%

C++14

16%

C++17

9%

C++20

5%

С++23

50%

Я не планирую переходить на другой стандарт C++

1%

C++98 / C++03

4%

C++14

21%

C++17

13%

C++20

10%

С++23

42%

Я не планирую переходить на другой стандарт C++

2%

C++98 / C++03

5%

C++11

25%

C++17

19%

C++20

7%

С++23

45%

Я не планирую переходить на другой стандарт C++

1%

C++11

1%

C++14

31%

C++20

22%

С++23

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

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

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

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

48%
53%

Концепты

43%
49%

Модули

32%
29%

Корутины

3%
3%

Другое

29%
21%

Никакие

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

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

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

Инбал Леви

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

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

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

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

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

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

27%

Visual Studio Code

26%

CLion

26%

Visual Studio

4%

Vi/Vim

3%

Qt Creator

2%

Android Studio

2%

Xcode

1%

NetBeans

1%

Sublime

1%

Emacs

1%

KDevelop

1%

AppCode

1%

Eclipse CDT

4%

Другое

34%

Visual Studio Code

29%

CLion

19%

Visual Studio

6%

Vi/Vim

3%

Qt Creator

1%

NetBeans

1%

Sublime

2%

Emacs

2%

Eclipse CDT

3%

Другое

20%

Visual Studio Code

30%

CLion

30%

Visual Studio

2%

Vi/Vim

1%

Qt Creator

1%

Android Studio

2%

Xcode

2%

Sublime

2%

Emacs

1%

KDevelop

1%

Eclipse CDT

1%

Atom

8%

Другое

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

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

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

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

26%

29%

Не пишу юнит-тесты для C++

17%

16%

Пишу юнит-тесты, но не использую фреймворки

35%

33%

GoogleTest

12%

12%

Catch

9%

9%

CppUnit

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

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

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

Инбал Леви

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

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

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

25%

24%

Включаю исходный код библиотек в свою сборку

21%

21%

Использую системный менеджер пакетов

24%

19%

Компилирую библиотеки отдельно, пользуясь их инструкциями

18%

18%

Скачиваю уже собранные библиотеки из интернета

14%

15%

У меня нет никаких зависимостей

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

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

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

Инбал Леви

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

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

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

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

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

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

57%

54%

CMake

33%

29%

Проектная модель Visual Studio

33%

28%

Makefile

11%

15%

Ninja

9%

6%

Gradle

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

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

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

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

65%

GCC

36%

Clang

31%

MSVC

13%

Clang-cl

11%

Intel

9%

Intel LLVM

7%

Компилятор для микроконтроллеров

3%

Собственной разработки

2%

Другое

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

45%

Python

29%

C

16%

Языки сценариев командной оболочки

14%

JavaScript

13%

Java

12%

SQL

10%

HTML / CSS

10%

C#

5%

Rust

5%

Язык ассемблера

4%

Go

4%

Lua

3%

TypeScript

3%

MATLAB

2%

Kotlin

2%

PHP

2%

Visual Basic

2%

Perl

1%

Objective-C

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

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

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

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

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

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

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

37%

31%

Инструмент, встроенный в IDE

24%

27%

Clang-tidy

21%

24%

ClangFormat

17%

18%

Clang-analyzer/Clang Static Analyzer

10%

11%

Cppcheck

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

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

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

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

50%

При компиляции с помощью соответствующих проверок в компиляторе

27%

Он встроен в наш CI/CD-пайплайн

23%

Мы не выполняем анализ кода

19%

Мы применяем динамический анализ

18%

С помощью сторонних анализаторов статического кода на компьютерах разработчиков

1%

Другое

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

39%

Оптимизация добавления заголовков в файл и зависимостей

28%

Предварительная компиляция заголовков

23%

Параллельная компиляция исходных файлов

19%

Кэш компилятора

14%

Модули

12%

Пошаговая компоновка

6%

Сборки Unity

4%

Incredibuild

1%

Electric Cloud

1%

Другое

32%

Никакие

46%

Оптимизация добавления заголовков в файл и зависимостей

26%

Предварительная компиляция заголовков

29%

Параллельная компиляция исходных файлов

22%

Кэш компилятора

17%

Модули

14%

Пошаговая компоновка

6%

Сборки Unity

2%

Incredibuild

1%

Electric Cloud

1%

Другое

29%

Никакие

46%

Оптимизация добавления заголовков в файл и зависимостей

35%

Предварительная компиляция заголовков

25%

Параллельная компиляция исходных файлов

24%

Кэш компилятора

16%

Модули

16%

Пошаговая компоновка

11%

Сборки Unity

7%

Incredibuild

1%

Electric Cloud

2%

Другое

28%

Никакие

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

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

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

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

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

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