C++

Compartir:

Estas preguntas solo se han mostrado a los desarrolladores que seleccionaron C++ como uno de sus tres lenguajes de programación principales.

¿Qué estándares de C++ utiliza habitualmente?

8%

C++98 / C++03

31%

C++11

25%

C++14

41%

C++17

23%

C++20

14%

No lo sé seguro

12%

C++98 / C++03

33%

C++11

24%

C++14

41%

C++17

23%

C++20

12%

No lo sé seguro

9%

C++98 / C++03

31%

C++11

24%

C++14

45%

C++17

25%

C++20

12%

No lo sé seguro

Es estupendo ver que la migración avanza de forma constante. Me alegra especialmente ver que los desarrolladores de juegos adoptan C++20, y estoy deseando que todas las plataformas de juegos sean compatibles con él. Será un reto para los vendedores implementarlo, pero estoy seguro de que merecerá la pena solo por los conceptos y las gamas.

Guy Davidson

Head of Engineering Practice, Creative Assembly

Estoy realmente sorprendido de ver el ritmo de adopción de C++20. Está claro que las cosas están cambiando. Estamos viendo una adopción de nuevos estándares mucho más rápida que en el pasado.

Jason Turner

Formador de C++, conferenciante, autor, YouTuber

Me alegra ver que la gran mayoría de los usuarios utiliza versiones de los últimos 5 años. Además, ver que las versiones anteriores a C++11 caen por debajo del 10 % es una buena noticia. Un par de años más y podremos dejar de incluirlas en este tipo de encuestas.

Titus Winters

Ingeniero principal en Google

Migración de los estándares de C++

42%

No está en mis planes cambiar a otro estándar de C++

15%

a C++11

11%

a C++14

18%

a C++17

16%

a C++20

45%

No está en mis planes cambiar a otro estándar de C++

9%

a C++14

20%

a C++17

26%

a C++20

41%

No está en mis planes cambiar a otro estándar de C++

30%

a C++17

29%

a C++20

47%

No está en mis planes cambiar a otro estándar de C++

53%

a C++20

Recuerde siempre que hay usuarios dispersos por toda la línea temporal de los estándares. Encuestas como esta nos recuerdan que debemos escribir código que funcione en todas partes, no solo en el estándar más reciente.

Guy Davidson

Head of Engineering Practice, Creative Assembly

Me parece especialmente sorprendente, ya que todavía no veo que muchas empresas soliciten formación en C++20. Muchos aún se sienten afortunados de pasar a C++17.

Jason Turner

Formador de C++, conferenciante, autor, YouTuber

¿Tiene previsto su proyecto actual utilizar alguna de estas funciones de C++20 en los próximos 12 meses?

48%

Conceptos

43%

Módulos

32%

Corrutinas

3%

Otro

29%

Ninguno

56%

Conceptos

46%

Módulos

30%

Corrutinas

2%

Otro

28%

Ninguno

53%

Conceptos

53%

Módulos

42%

Corrutinas

1%

Otro

23%

Ninguno

Creo que la funcionalidad [Modules] aún necesita más desarrollo, pero espero no tener razón.

Guy Davidson

Head of Engineering Practice, Creative Assembly

Espero que en los próximos 12 meses las herramientas se pongan al día y sea fácil utilizar Modules.

Jason Turner

Formador de C++, conferenciante, autor, YouTuber

¿Qué editor o entorno de desarrollo integrado utiliza con mayor frecuencia para el desarrollo en 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

JetBrains dispone de una gama de IDE de C++ que le ayudarán a evitar los típicos escollos y quebraderos de cabeza que suelen asociarse a la codificación en C++: CLion para desarrollo multiplataforma e incrustado, ReSharper C++ para usuarios de Visual Studio, y Rider para desarrolladores de Unreal Engine y juegos en C++.

¿Qué marcos de trabajo de pruebas de unidad utiliza habitualmente?

35%

Google Test

26%

No escribo código de pruebas de unidad para C++

17%

Escribo pruebas de unidad, pero no uso ningún marco de trabajo

12%

Catch

9%

CppUnit

7%

Boost.Test

3%

CppUTest

3%

doctest

4%

Otro

34%

Google Test

17%

No escribo código de pruebas de unidad para C++

21%

Escribo pruebas de unidad, pero no uso ningún marco de trabajo

14%

Catch

14%

CppUnit

7%

Boost.Test

5%

CppUTest

3%

doctest

4%

Otro

21%

Google Test

27%

No escribo código de pruebas de unidad para C++

21%

Escribo pruebas de unidad, pero no uso ningún marco de trabajo

17%

Catch

11%

CppUnit

7%

Boost.Test

3%

CppUTest

4%

doctest

6%

Otro

Los ingenieros prefieren sin duda escribir código a realizar pruebas para ese código, y el tiempo dedicado a escribir pruebas supera cualquier beneficio real a largo plazo.

Guy Davidson

Head of Engineering Practice, Creative Assembly

La estadística de que una cuarta parte de los desarrolladores no escribe pruebas de unidad me pone los pelos de punta. No me importa mucho cómo las expreses o qué marco de trabajo utilices, pero todos necesitamos escribir pruebas.

Titus Winters

Ingeniero principal en Google

¿Cómo gestiona las bibliotecas de terceros en C++?

25%

El código fuente de la biblioteca es parte de mi build

24%

Compilo las bibliotecas por separado utilizando sus instrucciones

21%

Uso un administrador de paquetes del sistema

18%

Descargo bibliotecas precompiladas de Internet

14%

Ninguna de las opciones anteriores; no tengo ninguna dependencia

8%

vcpkg

6%

Conan

6%

Nuget

1%

build2

1%

Hunter

5%

Otro

28%

El código fuente de la biblioteca es parte de mi build

26%

Compilo las bibliotecas por separado utilizando sus instrucciones

24%

Uso un administrador de paquetes del sistema

21%

Descargo bibliotecas precompiladas de Internet

9%

Ninguna de las opciones anteriores; no tengo ninguna dependencia

4%

vcpkg

5%

Conan

7%

Nuget

1%

build2

7%

Otro

34%

El código fuente de la biblioteca es parte de mi build

25%

Compilo las bibliotecas por separado utilizando sus instrucciones

17%

Uso un administrador de paquetes del sistema

27%

Descargo bibliotecas precompiladas de Internet

12%

Ninguna de las opciones anteriores; no tengo ninguna dependencia

8%

vcpkg

4%

Conan

7%

Nuget

2%

build2

5%

Otro

Aquí se refleja la situación actual del empaquetado de código C++ para consumo de terceros. Espero que este problema se resuelva, pero no soy optimista al respecto.

Guy Davidson

Head of Engineering Practice, Creative Assembly

El estado de la gestión de dependencias y paquetes me entristece. El valor de las compilaciones reproducibles y las cadenas de dependencia claras es enorme. En este ámbito hay mucho «parece que funciona».

Titus Winters

Ingeniero principal en Google

¿Qué modelos de proyecto o sistemas de compilación utiliza habitualmente?

57%

CMake

33%

Makefile

33%

Proyecto de Visual Studio

11%

Ninja

9%

Gradle

7%

Proyecto de Xcode

6%

Sistema de build personalizado

4%

Qmake

3%

Bazel

2%

Autotools

63%

CMake

43%

Makefile

29%

Proyecto de Visual Studio

15%

Ninja

12%

Gradle

4%

Proyecto de Xcode

4%

Sistema de build personalizado

6%

Qmake

2%

Bazel

3%

Autotools

54%

CMake

33%

Makefile

49%

Proyecto de Visual Studio

8%

Ninja

10%

Gradle

9%

Proyecto de Xcode

8%

Sistema de build personalizado

3%

Qmake

3%

Bazel

3%

Autotools

Tengo constancia de que comparo CMake con el síndrome de Estocolmo para los ingenieros de C++. Se ha convertido en el estándar de facto, para bien o para mal, como demuestra la clara ventaja que tiene sobre sus competidores.

Guy Davidson

Head of Engineering Practice, Creative Assembly

¿Qué compiladores utiliza habitualmente?

67%

GCC

36%

Clang

32%

MSVC

12%

Clang-cl

11%

Intel

7%

Compilador para microcontroladores

6%

IntelLLVM

3%

Personalizado

2%

Otro

En CLion, puede utilizar compiladores basados en GCC, Clang, MSVC e IAR. Para casos poco frecuentes o personalizados, una función de compilador personalizado le permite utilizar cualquier compilador arbitrario en CLion.

¿Qué otros lenguajes de programación utiliza en sus proyectos además de C++?

44%

Python

30%

C

19%

Lenguajes de programación shell

15%

Java

12%

SQL

11%

JavaScript

11%

C#

9%

HTML/CSS

5%

Assembly

5%

Go

La ubicuidad de Python como lenguaje de programación para IA y ML significa que no hay sorpresas aquí. La existencia de bibliotecas de calidad como numpy y pandas hace que sea una elección obvia. Quizá necesiten análogos en la biblioteca estándar, o tengamos que resolver el problema del empaquetado.

Guy Davidson

Head of Engineering Practice, Creative Assembly

¿Cuál de las siguientes herramientas utiliza usted o su equipo para la aplicación de pautas u otros análisis o calidad del código?

37%

Herramienta proporcionada por mi entorno de desarrollo integrado

24%

Clang-tidy

21%

ClangFormat

17%

Clang-analyzer o Clang Static Analyzer

10%

Cppcheck

7%

Cpplint

6%

SonarLint / SonarQube / SonarCloud

4%

Coverity

2%

PVS-Studio

2%

Parasoft C o C++test

Con solo un 30 % de personas que evitan el análisis estático, confío razonablemente en que el código abierto será cada vez más seguro.

Guy Davidson

Head of Engineering Practice, Creative Assembly

¿Cómo ejecuta usted o su equipo el análisis del código?

48%

Al compilar, habilitando las comprobaciones necesarias del compilador

26%

Está integrado en nuestro proceso de CI/CD

24%

Nunca ejecutamos análisis del código

20%

Utilizamos análisis dinámico

17%

A través de los analizadores de código estático de terceros que se ejecutan en las máquinas de los desarrolladores

1%

Otro

¿Qué herramientas o técnicas utiliza para optimizar los tiempos de compilación de sus proyectos C++?

42%

Optimización de las inclusiones en los encabezados y dependencias

30%

Encabezados precompilados

22%

Paralelización de la compilación de archivos fuente

17%

Caché del compilador

15%

Módulos

12%

Vinculación incremental

5%

Builds de Unity

Lo pequeño es hermoso en este caso. Me interesa ver cómo interactúan las cabeceras precompiladas, los módulos y los builds de unity en el próximo año.

Guy Davidson

Head of Engineering Practice, Creative Assembly

¡Gracias por el tiempo que nos ha dado!

Esperamos que nuestro informe le haya resultado útil. Comparta este informe con sus amigos y compañeros.

Si tiene alguna pregunta o sugerencia, no dude en ponerse en contacto con nosotros a través de surveys@jetbrains.com.