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

C++

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

12%40%30%42%18%11%C++98 / C++03C++11C++14C++17C++20Затрудняюсь с ответом
Мэт ГодбольтСоздатель Compiler Explorer

«Очень хорошо, что люди пользуются современным C++. Многие респонденты планируют в следующем году перейти как минимум на C++17, а каждый пятый так и вовсе придерживается новейших стандартов. Похоже, что модули и концепты служат отличными мотиваторами».

Миграция стандартов C++

41%17% 9%17%17%Не планируюна C++11на C++14на C++17на C++20
Андреас КлингСоздатель SerenityOS и автор YouTube-канала о ней

«Логично, что многие их тех, кто уже пользовался C++17, рады перейти на C++20».

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

48%46%33% 5%31%МодулиКонцептыКорутиныДругоеНет
Андреас КлингСоздатель SerenityOS и автор YouTube-канала о ней

«Как и ожидалось, модули очень популярны. Сборка C++ с каждым годом требует все больше времени, и мне интересно посмотреть, как пользователи модулей будут противостоять этому».

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

28%26%24% 6% 3% 2% 2% 2%Visual Studio CodeCLionVisual StudioVi/VimQtCreatorEmacsSublimeXcode
Все результаты

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

32%11% 9% 5% 4% 2%30%16% 4%Google TestCatchCppUnitBoost.TestdoctestCppUTestЯ не пишу юнит-тесты для C++Я пишу юнит-тесты, но не использую фреймворкиДругое

Мэт ГодбольтСоздатель Compiler Explorer

«Жаль, что треть разработчиков совсем не пишут юнит-тесты».

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

26%23%21%21% 9% 7% 5% 1%14% 5%Включаю исходный код библиотек в свою сборкуКомпилирую библиотеки отдельно, пользуясь их инструкциямиСкачиваю уже собранные библиотеки из интернетаЯ использую системный менеджер пакетовvcpkgNugetConanbuild2Ничто из вышеперечисленного: у меня нет никаких зависимостейДругое
Мэт ГодбольтСоздатель Compiler Explorer

«Примерно три четверти респондентов нуждаются в хорошем инструменте управления зависимостями. Отдельная сборка библиотек, предварительная сборка, применение системных средств управления пакетами — все это требует дополнительных усилий либо делегирования третьим лицам. А это может задерживать выпуск новых версий и усложнять процедуру обновления или смены компиляторов»

Андреас КлингСоздатель SerenityOS и автор YouTube-канала о ней

«Разумеется, для этой проблемы есть множество решений — в С++ по-другому не бывает. Думаю, было бы гораздо лучше, если бы мы выбрали одно и пользовались только им».

Какие методы сообщения об ошибках разрешены в вашем текущем проекте (рабочем или учебном)?

80%
Исключения
54%
Числовые коды ошибок
20%
Классы, хранящие результат и ошибки

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

55%36%31%10% 9% 9% 6% 6%CMakeMakefileПроектная модель Visual StudioGradleNinjaПроект XcodeСобственная система сборкиQmake
Все результаты

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

GCCClangMSVCIntelКомпилятор длямикроконтроллеровСобственнаяразработкаДругоеGCC78%Clang43%MSVC30%Intel9%Компилятор для микроконтроллеров7%Собственная разработка2%Другое1%
Мэт ГодбольтСоздатель Compiler Explorer

«Интересно, что список регулярно используемых компиляторов возглавляют инструменты с открытым исходным кодом. Лично я, как пользователь Linux, не могу использовать MSVC-компиляторы. Но мне всегда казалось, что программистов на Windows больше, чем нас, и потому MSVC-компиляторы должны быть более популярными».

Андреас КлингСоздатель SerenityOS и автор YouTube-канала о ней

«Интересно, что GCC распространяется быстрее, чем Clang. Мне казалось, что большой успех имела комбинация GCC с C++20».

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

45%31%21%15%15%12%11%11%PythonCЯзыки сценариев командной оболочки (bash/shell/powershell)JavaJavaScriptSQL (PL/SQL, T-SQL и другие процедурные расширения SQL)C#HTML / CSS
Все результаты

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

38%23%21%17%11% 7% 4% 3% 2% 1%Инструмент, встроенный в мою IDEClang-tidyClangFormatClang-analyzer / Clang Static AnalyzerCppcheckCpplintCoverityStackPVS-StudioParasoft C/C++test
Все результаты

Андреас КлингСоздатель SerenityOS и автор YouTube-канала о ней

«Автоматическое форматирование кода все еще сильно недооценивают. Вы не поверите, но с инструментом вроде ClangFormat у вас больше никогда не будет разногласий по стилю кода!»

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

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

Присоединяйтесь к JetBrains Tech Insights Lab

Участвуйте в опросах и UX-исследованиях JetBrains, чтобы помочь нам улучшить наши продукты. Среди участников исследований разыгрываются призы.

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