C++

Compartir:

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

Compartir:

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

8%

C++98 / C++03

27%

C++11

21%

C++14

43%

С++17

29%

C++20

10%

С++23

13%

No lo sé seguro

6%

C++98 / C++03

28%

C++11

27%

C++14

48%

С++17

37%

C++20

14%

С++23

13%

No lo sé seguro

5%

C++98 / C++03

25%

C++11

15%

C++14

48%

С++17

39%

C++20

16%

С++23

10%

No lo sé seguro

Diego Rodríguez-Losada González

Lead Architect, JFrog

No hay sorpresas en el nivel de adopción de C++23 y las normas anteriores: los patrones de adopción son prácticamente los mismos que en los últimos años, solo que con una ventana temporal en movimiento. C++23 muestra una adopción del 10 % en 2023, algo inferior a la adopción de C++20 en 2020 (12 %), lo que probablemente esté relacionado con el número de novedades que aportaba C++20 en comparación con C++23.

Inbal Levi

Ingeniero jefe de software de MPGC Services Ltd (Millennium), miembro del comité del WG21

Es estupendo ver que una parte tan importante de la industria de los juegos y los sistemas integrados trabaja ya con C++20. Esta versión amplía las capacidades en tiempo de compilación, lo que es muy beneficioso para estas industrias con mucho énfasis en el rendimiento en tiempo de ejecución. Espero ver tasas de adopción similares para C++23 en los próximos años.

Bryce Adelstein Lelbach

Arquitecto principal de NVIDIA

Un gran salto en la adopción de C++20 tiene sentido, ya que las implementaciones se han hecho mucho más maduras y completas. Creo que veremos un gran cambio de C++17 a C++20 como dialecto «base» para gran parte de la comunidad en los próximos años.

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

57%

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

12%

C++11

2%

C++14

16%

С++17

9%

C++20

5%

С++23

50%

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

1%

C++98 / C++03

4%

C++14

21%

С++17

13%

C++20

10%

С++23

42%

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

2%

C++98 / C++03

5%

C++11

25%

С++17

19%

C++20

7%

С++23

45%

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

1%

C++11

1%

C++14

31%

C++20

22%

С++23

Diego Rodríguez-Losada González

Lead Architect, JFrog

¿El 57 % de los que utilizan C++98/03 no piensan pasarse a otro estándar? Eso podría ser decepcionante, pero dado que, en general, únicamente el 8 % de los encuestados siguen con C++98/03, significa que solo alrededor del 4 % del código C++ del mundo se queda con ese antiguo estándar, lo que no está mal y es similar a otros lenguajes de programación.

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

48%
53%

Conceptos

43%
49%

Módulos

32%
29%

Corrutinas

3%
3%

Otro

29%
21%

Ninguno/a

Diego Rodríguez-Losada González

Lead Architect, JFrog

Aunque últimamente se ha avanzado mucho en los sistemas de compilación y en el ecosistema para dar soporte a los módulos C++20, la mitad de los encuestados que planean utilizar módulos C++20 (supongo que en producción) en el próximo año me parece demasiado optimista. No creo que lleguemos a ese punto en los próximos 12 meses.

Inbal Levi

Ingeniero jefe de software de MPGC Services Ltd (Millennium), miembro del comité del WG21

Me alegra mucho ver el rápido ritmo de adopción de funciones en el mundo de los sistemas integrados, que tradicionalmente ha sido conocido por adoptarlo todo con lentitud. Creo que esto también está relacionado con las grandes ventajas que C++20 puede aportar al ámbito de los integrados.

Bryce Adelstein Lelbach

Arquitecto principal de NVIDIA

Me pregunto cuánta gente ha intentado realmente utilizar los módulos. Hay mucho interés pero no tanta adopción.

¿Qué IDE o editor utiliza más para el desarrollo en 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%

Otro

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%

Otro

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%

Otro

Diego Rodríguez-Losada González

Lead Architect, JFrog

El mercado está claramente dominado por Microsoft y JetBrains. Parece que el rápido crecimiento de VS Code por fin se está ralentizando (al menos entre el público de C++) y ha empezado a estabilizarse en cuotas iguales para los tres principales actores: CLion, VS y VS Code.

¿Qué marcos de trabajo de pruebas de unidad utiliza habitualmente, en caso de hacerlo?

26%

29%

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

17%

16%

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

35%

33%

GoogleTest

12%

12%

Catch

9%

9%

CppUnit

Diego Rodríguez-Losada González

Lead Architect, JFrog

El 29 % sigue sin escribir pruebas de unidad para su código C++, lo cual es triste. Aunque la cifra siga disminuyendo lentamente con el paso de los años, no es lo suficientemente rápido. El futuro del lenguaje también depende de que se arreglen cosas como esta.

Inbal Levi

Ingeniero jefe de software de MPGC Services Ltd (Millennium), miembro del comité del WG21

Me sorprende ver el número de desarrolladores que escriben pruebas de unidad sin marcos de trabajo. El comité se está esforzando por promover el tema de los gestores de paquetes, lo que espero que repercuta en la reducción de estas cifras en los próximos años, tanto para los que no escriben pruebas de unidad como para los que lo hacen sin marco.

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

25%

24%

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

21%

21%

Uso un administrador de paquetes del sistema

24%

19%

Compilo las bibliotecas por separado utilizando sus instrucciones

18%

18%

Descargo bibliotecas precompiladas de Internet

14%

15%

No tengo ninguna dependencia

Diego Rodríguez-Losada González

Lead Architect, JFrog

Es bueno ver que cada vez menos desarrolladores compilen manualmente bibliotecas siguiendo sus instrucciones. Cabe esperar que el uso de soluciones automatizadas reduzca aún más esta práctica, exclusiva de los ecosistemas C y C++.

Inbal Levi

Ingeniero jefe de software de MPGC Services Ltd (Millennium), miembro del comité del WG21

Creo que esto es un gran indicio de que es necesario un amplio apoyo a los gestores de paquetes en toda la comunidad C++.

Bryce Adelstein Lelbach

Arquitecto principal de NVIDIA

Tarde o temprano, puede que alcancemos un punto de inflexión en el que estos gestores de paquetes (vcpkg, Conan, etc.) sean lo suficientemente maduros y se utilicen lo suficiente como para convertirse en un estándar de facto. Pero aún no hemos llegado a ese punto.

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

57%

54%

CMake

33%

29%

Proyecto de Visual Studio

33%

28%

Makefile

11%

15%

Ninja

9%

6%

Gradle

Bryce Adelstein Lelbach

Arquitecto principal de NVIDIA

Es muy interesante ver cómo CMake pierde cuota de mercado y Ninja la gana. Yo no conocía esta tendencia. Tal vez no sea representativo, pero dado el rápido crecimiento de CMake hasta ahora, estos datos sugieren que ha alcanzado el pico de saturación.

¿Qué compiladores utiliza habitualmente?

65%

GCC

36%

Clang

31%

MSVC

13%

Clang-cl

11%

Intel

9%

Intel LLVM

7%

Compilador para microcontroladores

3%

Personalizado

2%

Otro

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

45%

Python

29%

C

16%

Lenguajes de programación 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

Lead Architect, JFrog

Python es otra herramienta muy útil para la caja de herramientas de los desarrolladores de C++.

Bryce Adelstein Lelbach

Arquitecto principal de NVIDIA

Parece que la tendencia es utilizar más JavaScript y Rust en combinación con C++. Dada la creciente popularidad de Rust, es sorprendente que no haya un crecimiento más rápido de Rust + C++. Eso sugiere que puede ser más difícil utilizar Rust en los proyectos existentes (en contraposición a los nuevos proyectos).

¿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%

31%

Herramienta proporcionada por mi entorno de desarrollo integrado

24%

27%

Clang-tidy

21%

24%

ClangFormat

17%

18%

Clang-analyzer/Clang Static Analyzer

10%

11%

Cppcheck

Bryce Adelstein Lelbach

Arquitecto principal de NVIDIA

Creo que la disminución de las herramientas de análisis proporcionadas por IDE aquí es indicativa de los usuarios que incorporan el análisis estático en su CI, como la ejecución del analizador estático Clang-tidy/ClangFormat/Clang en GitHub Actions.

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

50%

Al compilar, habilitando las comprobaciones necesarias del compilador

27%

Está integrado en nuestro proceso de CI/CD

23%

Nunca ejecutamos análisis del código

19%

Utilizamos análisis dinámico

18%

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

39%

Optimización de las inclusiones en los encabezados y dependencias

28%

Encabezados precompilados

23%

Paralelización de la compilación de archivos fuente

19%

Caché del compilador

14%

Módulos

12%

Vinculación incremental

6%

Builds de Unity

4%

Incredibuild

1%

Electric Cloud

1%

Otro

32%

Ninguno/a

46%

Optimización de las inclusiones en los encabezados y dependencias

26%

Encabezados precompilados

29%

Paralelización de la compilación de archivos fuente

22%

Caché del compilador

17%

Módulos

14%

Vinculación incremental

6%

Builds de Unity

2%

Incredibuild

1%

Electric Cloud

1%

Otro

29%

Ninguno/a

46%

Optimización de las inclusiones en los encabezados y dependencias

35%

Encabezados precompilados

25%

Paralelización de la compilación de archivos fuente

24%

Caché del compilador

16%

Módulos

16%

Vinculación incremental

11%

Builds de Unity

7%

Incredibuild

1%

Electric Cloud

2%

Otro

28%

Ninguno/a

Diego Rodríguez-Losada González

Lead Architect, JFrog

Hace cinco a diez años, el mercado de IDE de C++ estaba dominado esencialmente por un producto, Visual Studio, que era específico de Windows. La gente solía desarrollar en Windows únicamente para tener acceso a un buen IDE. Hoy en día, tenemos dos grandes proveedores en este espacio ―JetBrains y Microsoft―, lo que es estupendo para los usuarios. Con Visual Studio Code y CLion, los IDE son ahora mucho más accesibles para los desarrolladores que no trabajan con Windows.

¡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.