C++

Compartilhar:

Essas perguntas foram mostradas apenas aos desenvolvedores que escolheram o C++ como uma de suas três principais linguagens de programação.

Compartilhar:

Quais padrões do C++ você utiliza regularmente?

8%

C++98 / C++03

27%

C++11

21%

C++14

43%

С++17

29%

C++20

10%

С++23

13%

Não tenho certeza

6%

C++98 / C++03

28%

C++11

27%

C++14

48%

С++17

37%

C++20

14%

С++23

13%

Não tenho certeza

5%

C++98 / C++03

25%

C++11

15%

C++14

48%

С++17

39%

C++20

16%

С++23

10%

Não tenho certeza

Diego Rodríguez-Losada González

Arquiteto-chefe da JFrog

Nenhuma surpresa no nível de adoção do C++23 e padrões anteriores. Os padrões de adoção são praticamente os mesmos que nos últimos anos, como se fossem uma janela de tempo deslizante. O C++ mostra 10% de adoção em 2023, um pouco menos que a taxa de adoção do C++20 em 2020 (12%). Isso provavelmente está relacionado à quantidade de novos recursos que o C++20 trouxe, em comparação com o C++23.

Inbal Levi

Engenheiro-chefe de Software da MPGC Services Ltd (Millennium) e membro do comitê WG21

É bom ver uma parcela tão significativa dos setores de sistemas embarcados e de jogos já trabalhando com o C++20. Esta versão amplia as possibilidades em tempo de compilação, o que traz muitos benefícios para esses setores, com muita ênfase no desempenho do runtime. Espero ver taxas de adoção semelhantes para o C++23 nos próximos anos.

Bryce Adelstein Lelbach

Arquiteto Principal da NVIDIA

Faz sentido um grande salto na adoção do C++20, porque as implementações ficaram muito mais maduras e cheias de recursos. Acho que veremos uma grande mudança do C++17 para o C++20 como o "dialeto-base" de grande parte da comunidade nos próximos anos.

Migração de padrões C++

57%

Não, não pretendo mudar para outro padrão C++

12%

C++11

2%

C++14

16%

С++17

9%

C++20

5%

С++ 23

50%

Não, não pretendo mudar para outro padrão C++

1%

C++98 / C++03

4%

C++14

21%

С++17

13%

C++20

10%

С++ 23

42%

Não, não pretendo mudar para outro padrão C++

2%

C++98 / C++03

5%

C++11

25%

С++17

19%

C++20

7%

С++ 23

45%

Não, não pretendo mudar para outro padrão C++

1%

C++11

1%

C++14

31%

C++20

22%

С++ 23

Diego Rodríguez-Losada González

Arquiteto-chefe da JFrog

57% dos usuários de C++98/03 não têm planos de migrar para outro padrão? Talvez isso seja uma decepção, mas considerando que geralmente só 8% dos que responderam ainda estão no C++98/03, isso significa que apenas algo como 4% do código em C++ no mundo vai continuar nesse padrão antigo, o que não é ruim e é semelhante ao que acontece com outras linguagens de programação.

Você planeja usar algum destes recursos do C++20 no seu projeto atual nos próximos 12 meses?

48%
53%

Conceitos

43%
49%

Módulos

32%
29%

Corrotinas

3%
3%

Outros

29%
21%

Nenhuma opção

Diego Rodríguez-Losada González

Arquiteto-chefe da JFrog

Embora tenha havido um grande progresso nos sistemas de build e no ecossistema para dar suporte aos módulos do C++20, o dado de que metade dos participantes da pesquisa planeja usar módulos do C++ no próximo ano (presumo que em produção) me parece otimista demais. Não creio que cheguemos lá nos próximos 12 meses.

Inbal Levi

Engenheiro-chefe de Software da MPGC Services Ltd (Millennium) e membro do comitê WG21

Estou realmente satisfeito de ver a rápida taxa de adoção de recursos no mundo dos sistemas embarcados, que tradicionalmente era conhecido por adotar as coisas lentamente. Acredito que isto também esteja relacionado aos grandes benefícios que o C++20 pode proporcionar a esse setor.

Bryce Adelstein Lelbach

Arquiteto Principal da NVIDIA

Fico imaginando quantas pessoas realmente experimentaram usar módulos. Há muito interesse, mas nem tanta adoção.

Qual IDE ou editor você usa com mais frequência para desenvolvimento em 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%

Outros

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%

Outros

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%

Outros

Diego Rodríguez-Losada González

Arquiteto-chefe da JFrog

O mercado é claramente dominado pela Microsoft e pela JetBrains. Parece que o rápido crescimento do VS Code está finalmente desacelerando (pelo menos no público do C++) e começou a estabilizar, com participações iguais dos três principais produtos: CLion, VS e VS Code.

Quais frameworks de teste de unidade você costuma utilizar, se aplicável?

26%

29%

Não escrevo testes de unidade para C++

17%

16%

Escrevo testes de unidade, mas não uso frameworks

35%

33%

GoogleTest

12%

12%

Catch

9%

9%

CppUnit

Diego Rodríguez-Losada González

Arquiteto-chefe da JFrog

29% ainda não escrevem testes de unidade para seu código em C++ e isso é triste. Embora essa cifra venha diminuindo ao longo dos anos, isso está acontecendo muito devagar. O futuro da linguagem também depende de corrigir coisas como esta.

Inbal Levi

Engenheiro-chefe de Software da MPGC Services Ltd (Millennium) e membro do comitê WG21

Estou surpreso de ver o número de desenvolvedores escrevendo testes de unidades sem frameworks. Há um esforço no comitê para promover o tópico dos gerenciadores de pacotes, que eu espero que promovam uma redução nesses números nos próximos anos — tanto no número daqueles que não escrevem testes de unidades quanto no dos que escrevem esses testes sem frameworks.

Como você gerencia as suas bibliotecas de terceiros no C++?

25%

24%

O código-fonte da biblioteca faz parte do meu build

21%

21%

Uso um gerenciador de pacotes do sistema

24%

19%

Compilo as bibliotecas separadamente usando suas instruções

18%

18%

Faço download de bibliotecas pré-compiladas da Internet

14%

15%

Não tenho dependências

Diego Rodríguez-Losada González

Arquiteto-chefe da JFrog

É bom constatar que há menos desenvolvedores compilando bibliotecas manualmente usando suas instruções. Há esperança de que o uso de soluções automatizadas reduza ainda mais essa prática, que é exclusiva dos ecossistemas do C e do C++.

Inbal Levi

Engenheiro-chefe de Software da MPGC Services Ltd (Millennium) e membro do comitê WG21

Acho que esta é uma grande indicação de que é necessário um amplo suporte a gerenciadores de pacotes em toda a comunidade do C++.

Bryce Adelstein Lelbach

Arquiteto Principal da NVIDIA

Mais cedo ou mais tarde, talvez possamos atingir um ponto de inflexão no qual esses gerenciadores de pacotes (vcpkg, Conan, etc.) estejam suficientemente maduros e usados amplamente o bastante para se tornarem um padrão de fato. Mas ainda não chegamos lá.

Quais modelos de projeto ou sistemas de build você usa regularmente?

57%

54%

CMake

33%

29%

Projeto do Visual Studio

33%

28%

Makefile

11%

15%

Ninja

9%

6%

Gradle

Bryce Adelstein Lelbach

Arquiteto Principal da NVIDIA

É muito interessante ver a queda na participação de mercado do CMake e o aumento na participação do Ninja. Eu não estava a par dessa tendência. Talvez isso seja apenas ruído, mas considerando o rápido crescimento do CMake até agora, este dado sugere que ele atingiu sua saturação máxima.

Quais compiladores você usa regularmente?

65%

GCC

36%

Clang

31%

MSVC

13%

Clang-cl

11%

Intel

9%

Intel LLVM

7%

Compilador para microcontroladores

3%

Personalizado

2%

Outros

Quais outras linguagens de programação você usa nos seus projetos, além do C++?

45%

Python

29%

C

16%

Linguagens de script Shell

14%

JavaScript

13%

Java

12%

SQL

10%

HTML/CSS

10%

C#

5%

Rust

5%

Assembly

4%

Go

4%

Lua

3%

TypeScript

3%

MATLAB

2%

Kotlin

2%

PHP

2%

Visual Basic

2%

Perl

1%

Objective-C

Diego Rodríguez-Losada González

Arquiteto-chefe da JFrog

O Python é outra ferramenta muito útil no cinto de utilidades dos desenvolvedores em C++.

Bryce Adelstein Lelbach

Arquiteto Principal da NVIDIA

Aqui a tendência parece ser um maior uso do JavaScript e do Rust em combinação com o C++. Considerando a crescente popularidade do Rust, é surpreendente que não haja um crescimento mais rápido da combinação Rust + C++. Isso sugere que talvez seja mais difícil usar o Rust em projetos existentes (em comparação com projetos novos).

Quais das seguintes ferramentas você ou sua equipe utiliza para aplicação de diretrizes ou outros processos de análise/qualidade de código?

37%

31%

Ferramenta fornecida por meu IDE

24%

27%

Clang-tidy

21%

24%

ClangFormat

17%

18%

Clang-analyzer/Clang Static Analyzer

10%

11%

Cppcheck

Bryce Adelstein Lelbach

Arquiteto Principal da NVIDIA

Acho que esta diminuição nas ferramentas de análise fornecidas pelos IDEs é uma indicação de as pessoas estarem incorporando a análise estática à sua CI, como, por exemplo, ao executarem o analisador estático Clang-tidy/ClangFormat/Clang no GitHub Actions.

Como você ou sua equipe executa análises de código?

50%

Ao compilar, ativando as verificações necessárias do compilador

27%

Está integrada ao nosso pipeline de CI/CD

23%

Nunca executamos análises de código

19%

Usamos análises dinâmicas

18%

Por meio de analisadores de código estático de terceiros executados nas máquinas dos desenvolvedores

1%

Outros

Quais ferramentas ou técnicas você utiliza para otimizar os tempos de build do seu projeto C++?

39%

Otimizando dependências e includes de cabeçalho

28%

Cabeçalhos pré-compilados

23%

Paralelizando a compilação de arquivos-fonte

19%

Cache de compilador

14%

Módulos

12%

Linking incremental

6%

Builds do Unity

4%

Incredibuild

1%

Electric Cloud

1%

Outros

32%

Nenhuma opção

46%

Otimizando dependências e includes de cabeçalho

26%

Cabeçalhos pré-compilados

29%

Paralelizando a compilação de arquivos-fonte

22%

Cache de compilador

17%

Módulos

14%

Linking incremental

6%

Builds do Unity

2%

Incredibuild

1%

Electric Cloud

1%

Outros

29%

Nenhuma opção

46%

Otimizando dependências e includes de cabeçalho

35%

Cabeçalhos pré-compilados

25%

Paralelizando a compilação de arquivos-fonte

24%

Cache de compilador

16%

Módulos

16%

Linking incremental

11%

Builds do Unity

7%

Incredibuild

1%

Electric Cloud

2%

Outros

28%

Nenhuma opção

Diego Rodríguez-Losada González

Arquiteto-chefe da JFrog

Cinco ou dez anos atrás, o mercado de IDEs para C++ era essencialmente dominado por um único produto, o Visual Studio, que era específico para o Windows. As pessoas costumavam desenvolver em Windows só para terem acesso a um bom IDE. Hoje temos dois grandes fornecedores nesse espaço — a JetBrains e a Microsoft — e isso é ótimo para os usuários. Com o Visual Studio Code e o CLion, agora os IDEs estão muito mais acessíveis a desenvolvedores não Windows.

Obrigado pelo seu tempo!

Esperamos que você tenha achado nosso relatório útil. Compartilhe este relatório com seus amigos e colegas.

Se tiver dúvidas ou sugestões, entre em contato conosco em surveys@jetbrains.com.