¿Cuál es el mejor compilador para programar en C y C++?

Escribir una pieza importante de código en C o C++ no es una opción ligera. Ya que en el típico proyecto de software de hoy en día, la gente prefiere el tiempo de comercialización más importante en comparación con el rendimiento de los códigos. Como resultado, Javascript, Ruby, Java, Python, PHP dominan en popularidad sobre C o C++. Si usted está comenzando un proyecto en C y C ++, podemos asumir con seguridad que su código es sensible a las características de rendimiento, como las limitaciones de memoria, como los sistemas embebidos, el tiempo real suave, la programación del sistema o la aplicación de escritorio.

Cada uno de estos dominios trae sus restricciones específicas. Reaccionando a estas restricciones, los diseñadores de compiladores también han priorizado ciertas características del compilador.

  • GCC y clang son grandes compiladores para apuntar, si quieres portabilidad con suficiente velocidad
  • Intel y otros compiladores apuntan a la velocidad con relativamente menos énfasis en la portabilidad. Mientras que gcc y clang pueden ajustarse a procesadores y variantes específicas. Estas opciones suelen estar disponibles antes en Intel
  • Los compiladores embebidos tendrán como objetivo la huella de memoria y no se preocuparán demasiado por la velocidad, la portabilidad o los estándares.

C y C++ dejan mucho terreno a los diseñadores de compiladores y entornos de desarrollo. Se refleja en la forma en que muchas respuestas mencionan el entorno de codificación como los compiladores.

Cuando se inicia un proyecto en C o C++ hay que tener en cuenta la siguiente infraestructura de apoyo

  • Entorno de construcción - C, C++ se convierte rápidamente en tedioso para compilar y desplegar. Hay viejas herramientas de compilación como Make y otras relativamente nuevas como Cmake, MSBuild, Bazel y gyp.
  • Editor de código - Vivirá aquí mientras codifica y depura. Elige bien. Hay varias opciones. En Mac, Xcode es una buena opción, Linux viene con varias opciones y en Windows, MSVC es absolutamente estelar.
  • Herramientas de depuración - Como cazador de rendimiento y corrección de código, la depuración debe ir más allá de las declaraciones de impresión. Algunos desarrolladores expertos en C y C++ comprueban el código ensamblador para asegurarse de que el compilador sigue el comportamiento esperado y ajustan el código en consecuencia.
  • Linter - Los linters le permiten analizar el código en busca de normas y referencias de codificación. Algunos linters también le dirán sobre las cabeceras no utilizadas

Con tantas restricciones, esta pregunta no puede tener una respuesta imparcial. Asegurarse de que su código sigue un estándar específico como c++11 o c++14 permite una relativa portabilidad. No es de ninguna manera una garantía.

Siga C++ Reference para encontrar la sintaxis correcta y elegir el objetivo correcto. Mirando sólo compiladores libres en las principales plataformas

  • Para windows hay varias herramientas de compilación
    • Descargar el Visual C++ Build Tools (compilador de C++ independiente, librerías y herramientas)
    • Minimalist GNU para Windows
    • Clang - Getting Started
  • Mac OS X
    • Xcode - Apple Developer
    • gcc - Requiere Xcode y brew para instalarse
  • Linux
    • gcc - Incluido en Linux. En ubuntu instala el paquete build-essential
    • Clang - Instala clang y llvm

Para los que no son libres, el compilador de Intel y la librería de matemáticas son formidables, sobre todo para el rendimiento. Esto no significa que, los compiladores mencionados no produzcan código bueno y rápido.

PS: Nota especial para la generación dañada de desarrolladores de C y C++ de la India (incluido yo mismo). Las escuelas y colegios indios enseñan Turbo C++ y no tienen voluntad de cambiar. Turbo C++ es un producto descontinuado sin uso práctico. Los desarrolladores que salen de estas instituciones se sorprenden al ver que sus habilidades en C y C++ son totalmente inútiles. Las nuevas construcciones y sintaxis, especialmente en Modern C++, permiten un desarrollo de software mucho más maduro y práctico. Turbo C++ era un compilador de 16 bits destinado a MS-DOS y sus variantes. No existe una versión de 32 o 64 bits de Turbo C++. La última versión de Turbo C++ para 4.0 fue en 1993.