C++ en una frase
C++ es un lenguaje de programación de tipado estático y compilado que convierte tu código fuente directamente en código máquina nativo. Esa única decisión de diseño -sin intérprete, sin máquina virtual entre tu programa y la CPU- es la razón por la que C++ es uno de los lenguajes más rápidos que puedes escribir, y por la que impulsa el software que sencillamente no puede ser lento.
Aquí está el obligatorio primer programa. Ejecútalo aquí mismo:
Aquí hay más estructura que en un lenguaje de scripting, y es a propósito: C++ te da un control preciso a cambio de ser explícito. Iremos desglosando cada pieza de esto a lo largo de las próximas páginas.
Por qué C++ es rápido
La mayoría de los lenguajes de scripting ejecutan tu código a través de un intérprete o una máquina virtual que lee y ejecuta instrucciones en tiempo de ejecución. C++ se salta todo eso:
- Un compilador (como
g++oclang++) lee tu código fuente.cppy lo traduce en instrucciones máquina para un procesador y un sistema operativo concretos. - El resultado es un ejecutable independiente que la CPU ejecuta directamente: nada se interpone entre tu código y el hardware.
Como no hay ninguna traducción ocurriendo mientras el programa se ejecuta, los programas de C++ arrancan al instante y corren a la velocidad máxima del procesador. También obtienes un control preciso sobre la memoria y el hardware que los lenguajes de más alto nivel te ocultan deliberadamente.
La contrapartida: ese código máquina está construido para una sola plataforma. Un ejecutable compilado en Windows no funcionará en un Mac; recompilas el código fuente para cada destino. (Compáralo con Java, que compila a bytecode portable que se ejecuta en cualquier JVM.)
Tipado estático y multiparadigma
Dos propiedades dan forma a cómo se ve y se siente el código C++.
Tipado estático significa que cada variable tiene un tipo conocido en tiempo de compilación, y el compilador comprueba tus tipos antes de que el programa siquiera se ejecute:
count es un int durante toda su vida; intentar almacenar "hello" en él no compilaría. Esto detecta toda una clase de errores de forma temprana, a costa de tener que escribir más al principio.
Multiparadigma significa que C++ no te obliga a usar un único estilo. Puedes escribir código procedimental simple, organizar la lógica en clases (orientado a objetos) o usar plantillas para código genérico y reutilizable. La mayoría de los programas reales mezclan los tres. Esta flexibilidad es potente, pero también significa que C++ tiene una gran superficie que aprender: lo abordaremos un concepto a la vez.
Para qué se usa C++
C++ aparece allí donde el rendimiento y el control son innegociables:
- Motores de juegos: Unreal Engine, el núcleo de Unity y la mayor parte del código de los juegos AAA.
- Software de sistemas: sistemas operativos, controladores de dispositivos y navegadores como Chrome y Firefox.
- Servicios de alto rendimiento: bases de datos, sistemas de trading e infraestructura de búsqueda donde cuentan los microsegundos.
- Embebidos y hardware: firmware para coches, drones, dispositivos médicos y IoT.
Si un software tiene que ser rápido, caber en una memoria reducida o hablar directamente con el hardware, hay muchas probabilidades de que esté escrito en C++.
C++ no es C (pero empezó ahí)
C++ surgió de C en los años 80 como "C con clases", y sigue siendo en su mayoría un superconjunto: mucho código C válido compila como C++. Pero el lenguaje ha crecido enormemente desde entonces.
C++ añade programación orientada a objetos, plantillas para código genérico, referencias, excepciones y una rica biblioteca estándar llena de herramientas listas para usar. Este fragmento usa una de ellas, vector: un arreglo redimensionable que gestiona su propia memoria, algo que tendrías que construir a mano en C:
El C++ moderno (los estándares C++11, C++17 y C++20) se apoya mucho en herramientas como estas para hacer el lenguaje más seguro y expresivo que sus raíces en C. Un error común de principiante es escribir C++ al estilo de C -memoria manual, arreglos crudos por todas partes- cuando la biblioteca estándar ya resuelve el problema por ti. A lo largo de estos documentos favoreceremos el estilo moderno.
Siguiente: Instalar C++
Para escribir y ejecutar C++ en tu propia máquina necesitas un compilador, normalmente g++ (parte de GCC), clang++ o la cadena de herramientas MSVC en Windows. La siguiente página te guía a través de la instalación de uno y la confirmación de que funciona desde tu terminal.
Preguntas frecuentes
¿Para qué se usa C++?
C++ impulsa software donde la velocidad y el control son importantes: motores de juegos (Unreal, el núcleo de Unity), sistemas operativos, navegadores (Chrome, Firefox), bases de datos, sistemas de trading y dispositivos embebidos. Su fortaleza es ejecutarse cerca del hardware sin renunciar a características de alto nivel como clases, plantillas y la biblioteca estándar.
¿C++ es compilado o interpretado?
C++ es compilado. Un compilador como g++ o clang++ traduce tu código fuente directamente a código máquina nativo para una CPU y un sistema operativo concretos, produciendo un ejecutable independiente. No hay ningún intérprete ni máquina virtual entre tu programa y el procesador, y por eso C++ es tan rápido.
¿Cuál es la diferencia entre C y C++?
C++ empezó como "C con clases" y es en su mayoría un superconjunto de C, por lo que la mayoría del código C compila como C++. Las grandes incorporaciones son la programación orientada a objetos (clases y herencia), las plantillas, la biblioteca estándar (contenedores como vector y map), las referencias, las excepciones y muchas funciones de seguridad y comodidad que C no tiene.