C++

Compartilhar:

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

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

8%

C++98 / C++03

31%

C++11

25%

C++14

41%

C++17

23%

C++20

14%

Não tenho certeza

12%

C++98 / C++03

33%

C++11

24%

C++14

41%

C++17

23%

C++20

12%

Não tenho certeza

9%

C++98 / C++03

31%

C++11

24%

C++14

45%

C++17

25%

C++20

12%

Não tenho certeza

É ótimo ver a migração progredindo constantemente. Estou especialmente feliz em ver os desenvolvedores de jogos adotando o C++20 e estou ansioso pelo suporte por parte de todas as plataformas de jogos. Será um desafio para os fornecedores implementar, mas tenho certeza de que valerá a pena apenas pelos conceitos e pelas faixas.

Guy Davidson

Chefe de prática de engenharia, Creative Assembly

Estou realmente surpreso ao ver a taxa de adoção do C++20. As coisas estão claramente mudando. Estamos vendo uma adoção muito mais rápida de novos padrões do que no passado.

Jason Turner

Palestrante, autor, YouTuber e instrutor da linguagem C++

Fico muito feliz em ver que a grande maioria dos usuários está usando lançamentos dos últimos 5 anos. Além disso, ver os lançamentos pré-C++11 cair abaixo de 10% é uma boa notícia. Mais alguns anos e podemos parar de incluí-los nesses tipos de pesquisas!

Titus Winters

Principal Engineer no Google

Migração de padrões C++

42%

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

15%

para C++11

11%

para C++14

18%

para C++17

16%

para C++20

45%

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

9%

para C++14

20%

para C++17

26%

para C++20

41%

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

30%

para C++17

29%

para C++20

47%

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

53%

para C++20

Lembre-se sempre de que existem usuários espalhados pela linha do tempo dos padrões. Pesquisas como esta nos lembram de escrever código que funcione em qualquer lugar, e não apenas no padrão mais recente.

Guy Davidson

Chefe de prática de engenharia, Creative Assembly

Acho isso particularmente surpreendente, pois ainda não vejo muitas empresas solicitando treinamento em C++20. Muitas pessoas ainda se sentem sortudas por mudar para o C++17.

Jason Turner

Palestrante, autor, YouTuber e instrutor da linguagem C++

Seu projeto atual planeja usar algum desses recursos do C++ 20 nos próximos 12 meses?

48%

Conceitos

43%

Módulos

32%

Corrotinas

3%

Outros

29%

Nenhuma opção

56%

Conceitos

46%

Módulos

30%

Corrotinas

2%

Outros

28%

Nenhuma opção

53%

Conceitos

53%

Módulos

42%

Corrotinas

1%

Outros

23%

Nenhuma opção

Sinto que o recurso [Modules] ainda precisa de um certo desenvolvimento adicional, mas estou ansioso para provar que estou errado.

Guy Davidson

Chefe de prática de engenharia, Creative Assembly

Espero que vejamos as ferramentas se atualizarem, para que seja fácil usar o Modules nos próximos 12 meses!

Jason Turner

Palestrante, autor, YouTuber e instrutor da linguagem C++

Qual IDE/editor você mais usa para desenvolvimento em C++?

28%

Visual Studio

28%

VS Code (Visual Studio Code)

24%

CLion

5%

Vi/Vim

3%

QtCreator

2%

Xcode

1%

Android Studio

23%

Visual Studio

33%

VS Code (Visual Studio Code)

25%

CLion

3%

Vi/Vim

3%

QtCreator

1%

Xcode

2%

Android Studio

43%

Visual Studio

17%

VS Code (Visual Studio Code)

18%

CLion

3%

Vi/Vim

2%

QtCreator

2%

Xcode

1%

Emacs

A JetBrains tem uma variedade de IDEs C++ para ajudar você a evitar armadilhas e dores de cabeça típicas frequentemente associadas à programação em C++: o CLion para desenvolvimento multiplataforma e incorporado, o ReSharper C++ para usuários do Visual Studio e o Rider para desenvolvedores de jogos Unreal Engine e C++.

Quais frameworks de teste de unidade você usa regularmente?

35%

Google Test

26%

Não escrevo testes de unidade para C++

17%

Escrevo testes de unidade, mas não uso frameworks

12%

Catch

9%

CppUnit

7%

Boost.Test

3%

CppUTest

3%

doctest

4%

Outros

34%

Google Test

17%

Não escrevo testes de unidade para C++

21%

Escrevo testes de unidade, mas não uso frameworks

14%

Catch

14%

CppUnit

7%

Boost.Test

5%

CppUTest

3%

doctest

4%

Outros

21%

Google Test

27%

Não escrevo testes de unidade para C++

21%

Escrevo testes de unidade, mas não uso frameworks

17%

Catch

11%

CppUnit

7%

Boost.Test

3%

CppUTest

4%

doctest

6%

Outros

Os engenheiros preferem muito mais escrever código do que testes para esse código, e o tempo gasto escrevendo testes supera quaisquer benefícios reais em longo prazo.

Guy Davidson

Chefe de prática de engenharia, Creative Assembly

A estatística de que um quarto dos desenvolvedores não está escrevendo testes de unidade me assusta. Não tenho certeza sobre como você expressa isso ou qual framework você usa, mas todos nós precisamos escrever testes.

Titus Winters

Principal Engineer no Google

Como você gerencia suas bibliotecas de terceiros em C++?

25%

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

24%

Compilo as bibliotecas separadamente usando suas instruções

21%

Uso um gerenciador de pacotes do sistema

18%

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

14%

Nenhuma das opções acima, não tenho dependências

8%

vcpkg

6%

Conan

6%

Nuget

1%

build2

1%

Hunter

5%

Outros

28%

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

26%

Compilo as bibliotecas separadamente usando suas instruções

24%

Uso um gerenciador de pacotes do sistema

21%

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

9%

Nenhuma das opções acima, não tenho dependências

4%

vcpkg

5%

Conan

7%

Nuget

1%

build2

7%

Outros

34%

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

25%

Compilo as bibliotecas separadamente usando suas instruções

17%

Uso um gerenciador de pacotes do sistema

27%

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

12%

Nenhuma das opções acima, não tenho dependências

8%

vcpkg

4%

Conan

7%

Nuget

2%

build2

5%

Outros

A situação atual com o empacotamento do código C++ para consumo de terceiros é refletida aqui. Estou ansioso para que esse problema seja resolvido, mas não estou otimista de que isso virá a acontecer.

Guy Davidson

Chefe de prática de engenharia, Creative Assembly

O estado do gerenciamento de dependências e do gerenciamento de pacotes me deixa triste. O valor de builds reproduzíveis e cadeias de dependência claras é enorme. Existe muito “acaba funcionando” nesse meio.

Titus Winters

Principal Engineer no Google

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

57%

CMake

33%

Makefile

33%

Projeto do Visual Studio

11%

Ninja

9%

Gradle

7%

Projeto Xcode

6%

Sistema de build personalizado

4%

Qmake

3%

Bazel

2%

Autotools

63%

CMake

43%

Makefile

29%

Projeto do Visual Studio

15%

Ninja

12%

Gradle

4%

Projeto Xcode

4%

Sistema de build personalizado

6%

Qmake

2%

Bazel

3%

Autotools

54%

CMake

33%

Makefile

49%

Projeto do Visual Studio

8%

Ninja

10%

Gradle

9%

Projeto Xcode

8%

Sistema de build personalizado

3%

Qmake

3%

Bazel

3%

Autotools

Sou conhecido publicamente por comparar o CMake à síndrome de Estocolmo para engenheiros de C++. Ele tornou-se o padrão de fato, para o bem ou para o mal, conforme demonstrado pela liderança clara que detém sobre seus concorrentes.

Guy Davidson

Chefe de prática de engenharia, Creative Assembly

Quais compiladores você usa regularmente?

67%

GCC

36%

Clang

32%

MSVC

12%

Clang-cl

11%

Intel

7%

Compilador para microcontroladores

6%

IntelLLVM

3%

Personalizado

2%

Outros

No CLion, você pode usar compiladores baseados em GCC, Clang, MSVC e IAR. Para casos raros ou personalizados, um recurso de compilador personalizado permite que você use qualquer compilador arbitrário no CLion.

Que outras linguagens de programação você usa em seus projetos junto com o C++?

44%

Python

30%

C

19%

Linguagens de script Shell

15%

Java

12%

SQL

11%

JavaScript

11%

C#

9%

HTML/CSS

5%

Assembly

5%

Go

A onipresença do Python como linguagem de programação para IA e ML significa que não há surpresas aqui. A existência de bibliotecas de qualidade, como numpy e pandas, o torna uma escolha óbvia. Talvez eles precisem de análogos na biblioteca padrão, ou precisamos resolver o problema do empacotamento.

Guy Davidson

Chefe de prática de engenharia, Creative Assembly

Qual das seguintes ferramentas você ou sua equipe usa para aplicação de diretrizes ou outra tarefa de qualidade/análise de código?

37%

Ferramenta fornecida por meu IDE

24%

Clang-tidy

21%

ClangFormat

17%

Clang-analyzer/Clang Static Analyzer

10%

Cppcheck

7%

Cpplint

6%

SonarLint/SonarQube/SonarCloud

4%

Coverity

2%

PVS-Studio

2%

Parasoft C/C++test

Com apenas 30% das pessoas evitando análises estáticas, estou razoavelmente confiante de que o open source aberto se tornará cada vez mais seguro e protegido.

Guy Davidson

Chefe de prática de engenharia, Creative Assembly

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

48%

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

26%

Está integrada ao nosso pipeline de CI/CD

24%

Nunca executamos análises de código

20%

Usamos análises dinâmicas

17%

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++?

42%

Otimizando dependências e includes de cabeçalho

30%

Cabeçalhos pré-compilados

22%

Paralelizando a compilação de arquivos-fonte

17%

Cache de compilador

15%

Módulos

12%

Linking incremental

5%

Builds do Unity

Pequeno é bonito neste caso. Estou interessado em ver como cabeçalhos pré-compilados, módulos e builds de unidade interagirão no ano que vem.

Guy Davidson

Chefe de prática de engenharia, Creative Assembly

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.