
¿Qué es C++?
C++ es una versión mejorada y extendida del lenguaje de programación C, desarrollado por Stroustrup en 1979 como parte de su proyecto de doctorado. Stroustrup diseñó lo que denominó “C con clases”, que luego llamó C++, porque consideraba que los lenguajes de programación existentes tenían limitaciones y no eran lo mejor para proyectos de gran escala.
Por eso utilizó C para desarrollar el lenguaje de programación que estaba buscando, porque C era un lenguaje efectivo y rápido en su funcionamiento.
C++ es un lenguaje de programación de propósito general refinado y eficaz. Este lenguaje de formato libre y compilado es el más adecuado para los programadores de nivel intermedio.
Sin embargo, quienes quieran comenzar a programar con C++ encontrarán que pueden aprender rápidamente conceptos de programación que los llevarán a un largo trayecto en su carrera.
Es compatible con la programación orientada a objetos, tomando todas sus características. Estos conceptos hacen que el lenguaje C++ sea diferente y se use principalmente para desarrollar aplicaciones de manera fácil y conceptualizada.
Historia de C++
- Diseño e implementación. C++ fue diseñado e implementado en 1980 por Bjarne Stroustrup en los laboratorios AT&T Bell, fusionando los conceptos de programación procedimental y orientado a objetos. En el lenguaje C, el operador ++ se utiliza para incrementar una variable, manifestando así la idea de Stroustrup de que C++ fuera la siguiente generación del lenguaje C.
- Lanzamiento inicial. Fue lanzado en 1985 al mercado. En 1986, Stroustrup publicó su famoso libro, El lenguaje de programación C++, convirtiéndose en el manual de referencia del lenguaje.
- C 2.0. El lanzamiento más importante de C++ fue C 2.0 en 1989, documentado por Ellis y Stroustrup en El manual de referencia anotado de C++. Era un lenguaje totalmente orientado a objetos.
- Versión estandarizada. En 1998 se lanzó la primera versión estandarizada, C++ 98. Este estándar internacional para C++ fue desarrollado por el American National Standards Institute (ANSI) y la International Standards Organization (ISO). En 2003, se publicó el siguiente estándar C++ 03 con la intención de corregir errores identificados en C++ 98 y garantizar que el lenguaje tuviera una mayor portabilidad y coherencia.
- Actualizaciones recientes. La siguiente actualización importante llegó en 2011, y se denominó C++ 11. Se le agregaron varias características que mejoraban su rendimiento al tiempo de ejecución. Después apareció C++ 14, donde se realizaron algunas mejoras y se corrigieron errores de C++ 11. La siguiente versión lanzada en 2017 fue C++ 17, con varias características nuevas y una biblioteca estándar mucho más extensa. Luego C++ 20.
Características de C++
– Lenguaje de programación de propósito general. C++ puede utilizarse para desarrollar una gran variedad de aplicaciones, como sistemas operativos, videojuegos, software de escritorio, aplicaciones científicas y sistemas embebidos.
– Basado en C. Fue creado como una extensión del lenguaje C, por lo que conserva gran parte de su sintaxis y funcionalidades, añadiendo nuevas características.
– Programación orientada a objetos. Permite organizar el código mediante clases y objetos, facilitando la reutilización y el mantenimiento de los programas.
– Alto rendimiento. Genera código muy eficiente y rápido, por lo que es ampliamente utilizado en aplicaciones que requieren un alto desempeño.
– Programación multiparadigma. Soporta diferentes estilos de programación, como programación procedimental, programación orientada a objetos, programación genérica o programación funcional.
– Control directo de la memoria. Permite gestionar la memoria de forma manual mediante punteros y asignación dinámica, ofreciendo un mayor control sobre los recursos del sistema.
– Portabilidad. Los programas escritos en C++ pueden ejecutarse en diferentes sistemas operativos con pocas modificaciones.
– Amplia biblioteca estándar. Incluye una extensa colección de funciones, estructuras de datos y algoritmos que facilitan el desarrollo de software.
– Compatibilidad con hardware. Permite interactuar directamente con componentes del hardware, lo que lo hace ideal para sistemas de bajo nivel.
– Uso profesional e industrial. Es uno de los lenguajes más utilizados en áreas como desarrollo de videojuegos, motores gráficos, aplicaciones financieras, inteligencia artificial y sistemas operativos.
Tipos de datos en C++
- Primarios
- Int. Sirve para almacenar números enteros. La memoria que ocupa depende del compilador (32 o 64 bits). Ocupa 4 bytes de memoria cuando se trabaja con un compilador de 32 bits.
- Float. Sirve para almacenar fracciones de hasta 7 dígitos decimales. Se conoce como un tipo de coma flotante de precisión simple. Ocupa 4 bytes de memoria.
- Char. Se usa para almacenar un conjunto de todos los caracteres. Puede incluir letras del alfabeto, números y también caracteres especiales. Ocupa 1 byte de memoria, siendo la unidad direccionable más pequeña de una máquina.
- Double. Sirve para almacenar fracciones de hasta 15-16 dígitos decimales. Por lo general, se conoce como un tipo de coma flotante de doble precisión.
- Vacío (Null). Indica cero o ningún valor de retorno. Generalmente se usa para asignar el valor nulo al declarar una función.
- Bool. Este tipo de datos se refiere a un valor booleano o lógico. Puede tomar el valor de verdadero o falso.
- Secundarios
- Arreglos. Es un conjunto de datos que tienen el mismo tipo de datos, a los cuales se accede mediante un nombre común.
- Punteros. Son básicamente variables que se utilizan para almacenar la dirección de memoria de otra variable.
- Funciones. Es un grupo de sentencias que realizan una tarea específica. Las funciones son bibliotecas incorporadas o definidas por el usuario.
- Definidos por el usuario
- Estructuras. Es un tipo de datos en el que se puede hacer una colección de diferentes tipos de datos y acceder a ellos a través de un objeto.
- Unión. Brinda la posibilidad de almacenar diferentes tipos de datos en la misma ubicación de memoria.
Aplicaciones de C++
- Aplicaciones. Muchas aplicaciones de los sistemas Adobe se desarrollan en C++, como Illustrator, Photoshop, Adobe Premiere e Image Ready.
- Sistemas operativos. Se utiliza en todos los sistemas operativos importantes, como Linux, Windows y macOS, por ser un lenguaje de programación de bajo nivel.
- Compiladores. La mayoría de los compiladores están escritos en lenguaje C++. También los que se usan para compilar otros lenguajes, como C#, Java, etc.
- Juegos. Sirve para anular la complejidad de los juegos 3D, ayudando a optimizar los recursos. Además, es compatible con la opción multijugador en redes.
- Navegadores web. Permite una rápida ejecución y representación de los gráficos, que resulta crítico para los usuarios actuales, quienes demandan contenidos que puedan aparecer rápidamente en los navegadores web. C++ se usó para hacer los navegadores de Internet Google Chrome y Mozilla Firefox.
- Internet de las cosas. Varios productos del Internet de las cosas, como relojes inteligentes, automóviles, lavadoras, enrutadores e interruptores, utilizan C++ porque requieren un código lo más cercano posible al hardware.
- Nube/Sistemas distribuidos. Se usa en la nube en sistemas de almacenamiento y sistemas distribuidos, donde los sistemas escalables de archivos necesitan trabajar estrechamente con el hardware y también es crítica la compatibilidad con diferentes máquinas.
- Acceso a bases de datos. Se utiliza para desarrollar software de base de datos de código abierto. Un software de administración de bases de datos muy popular y utilizado en las organizaciones, MySQL, está escrito en C++ gracias a los beneficios que ofrece. Existen otras aplicaciones basadas en el acceso a software de bases de datos, que son Wikipedia, Yahoo, YouTube, Quora, etc.
Ejemplos de C++
- Número primo. Este programa recibe del usuario un número entero positivo y lo almacena en la variable n. Luego, se ejecuta el bucle for, que verifica si el número ingresado es perfectamente divisible entre i o no. El ciclo for se inicia con un valor inicial de i igual a 2, aumentando el valor de i en cada iteración. Si el número ingresado por el usuario es perfectamente divisible entre i, se asigna isPrime a falso y el número no será un número primo. Sin embargo, si el número no es perfectamente divisible entre i hasta que la condición de prueba i <= n / 2 sea verdadera significa que solo es divisible entre 1 y ese mismo número. Entonces, el número dado es un número primo.

- Bibliotecas. Los desarrolladores tienen acceso a muchas funciones integradas proporcionadas por el lenguaje C++. Esto ahorra tiempo y agiliza el desarrollo. Algunos de los archivos de encabezado C++ con sus funcionalidades proporcionadas son:
- iomanip: contiene manejadores de flujo que formatean los flujos de datos.
- iostream: funciones estándares de entrada y salida.
- cstdlib: función para convertir números a texto y viceversa,
- cmath: funciones de la biblioteca matemática, asignación de memoria, números aleatorios y otras funciones de utilidad.
- fstream: funciones que realizan la entrada y la salida de archivos en el disco.
- ctime: función para manejar hora y fecha.
- memory: clases y funciones utilizadas por la Biblioteca estándar de C++ para asignar memoria.
Ventajas y desventajas de C++
Ventajas
- Velocidad. Como C++ es una versión extendida de C, un lenguaje de programación de bajo nivel, es uno de los lenguajes más rápidos disponibles. Esto lo hace útil en aquellas áreas donde el desempeño requerido sea crítico.
- Cercano al hardware. Es uno de los lenguajes de programación más cercano al hardware. Esto es muy ventajoso en aquellos espacios donde el software deba tener una relación estrecha con el hardware para realizar eficientemente un soporte de bajo nivel.
- Eficiencia. Tiene una biblioteca estándar de plantillas que se puede usar ampliamente cuando se está codificando. Estas bibliotecas proporcionan algoritmos eficientes que permiten al programador ahorrar tiempo y esfuerzo, que de otra forma se malgastarían creando código.
- Libertad para elegir estilos de programación. Admite unos siete estilos diferentes de codificación, que lo convierte en un lenguaje de programación de múltiples modelos. Así, se puede seleccionar un estilo que se adapte a un caso particular de uso, sin tener que utilizar objetos.
- Capacidad para descomponer problemas complejos. Puede resolver problemas complejos de forma intuitiva creando objetos. Además, las funciones de C++ permiten dividir el código en bloques lógicos claros, fáciles de entender y de probar y modificar.
- Capacidad para detectar errores antes de la ejecución. Tiene un tipo estático, lo que significa que el compilador no hace suposiciones sobre lo que escribe el programador. El beneficio es que el compilador puede detectar errores y fallas antes de la ejecución, lo que puede ahorrar tiempo a largo plazo.
Desventajas
- Uso de punteros. Los punteros son un concepto relativamente difícil de comprender y además consumen mucha memoria. El mal uso de punteros puede hacer que el sistema se bloquee o se comporte de forma anómala. Un problema importante es cuando los datos apuntan lo mismo desde dos puntos iniciales diferentes, causando un problema significativo, generándose confusión en la codificación.
- Problemas de seguridad. Si bien la programación orientada a objetos brinda bastante seguridad a los datos que se manejan, siguen existiendo algunos problemas de seguridad por la disponibilidad de funciones de amigo, variables globales y punteros.
- Ausencia de recolector de basura. Le da al usuario el control completo de administrar la memoria de la computadora. Carece de la función de un recolector de basura para filtrar automáticamente los datos innecesarios y por eso no admite la asignación dinámica de memoria.
- Ausencia de un hilo. No admite subprocesos integrados. El concepto de hilo es relativamente nuevo en C++, ya que originalmente no existía. Ahora C++ es capaz de soportar funciones lambda.
- Programas compilados. Como lenguaje que se compila, los archivos ejecutables producidos por el compilador a partir del código fuente no son portátiles y solo se ejecutarán en la plataforma (hardware más sistema operativo) de destino para la que fueron compilados, o una plataforma binaria compatible.
- Puede ser complejo. Puede resultar complejo, ya que permite las clases, que son funciones con un mismo nombre. Por tanto, se debe usar un sistema de manejo de símbolos. Además, resulta complejo para un programa de alto nivel muy grande. C++ se usa comúnmente para aplicaciones específicas de una plataforma.
Referencias
- C++ Programming for Beginners: History, Benefits and Applications. Recuperado de simplilearn.com.
- Uses of C++ in Real World. Recuperado de educba.com.
- What are the top 10 features of C++? Recuperado de edureka.co.
- C++ Language: Features, Uses, Applications & Advantages. Recuperado de hackr.io.
- Learn Data Types in C and C++ with Example in Just 4 mins. Recuperado de data-flair.training.