Tecnología

C++: historia, características, tipos de datos, ejemplos


C++ es una versión mejorada y extendida del lenguaje de programación C, que fue desarrollado por Stroustrup en 1979 como parte de su proyecto de Ph.D. Stroustrup diseñó lo que denominó “C con clases”, que luego fue llamado 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 que es 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.

Índice del artículo

Historia

Diseño e implementación

C++ fue diseñado e implementado en 1980 por Bjarne Stroustrup en los Laboratorios AT&T Bell, fusionando maravillosamente 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 que C++ fuera la próxima generación del lenguaje C.

Lanzamiento inicial

C++ fue lanzado en 1985 por primera vez al mercado. En 1986, Stroustrup publicó su famoso libro llamado 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 fue que 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 del lenguaje 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 fue lanzado C++ 14, donde se realizaron algunas mejoras y se corrigieron errores de C++ 11. La siguiente versión lanzada en 2017 fue C++ 17, que tiene varias características nuevas y una biblioteca estándar mucho más extensa.

Características de C++

Lenguaje de uso popular

C++ es utilizado considerablemente entre los desarrolladores, principalmente en las aplicaciones. Contiene todas las partes importantes, como un lenguaje central que proporciona todos los bloques de desarrollo requeridos, tales como variables, tipos de datos, literales, etc.

Es el cuarto lenguaje de programación más popular, según el índice de la comunidad de programación TIOBE.

Los usos de C++ lo convierten en el lenguaje más conveniente, debido a sus características. Es el primer lenguaje de inicio para cualquier desarrollador que está interesado en trabajar con lenguajes de programación. Es fácil de aprender, ya que es un lenguaje basado puramente en conceptos.

Su sintaxis es muy simple, facilitando su escritura, y los errores se pueden replicar fácilmente. Antes de usar cualquier otro lenguaje, los programadores han preferido aprender primero C++ y luego posteriormente usar otros.

Sin embargo, la mayoría de los desarrolladores intentan seguir con C++ debido a su amplia variedad de uso y compatibilidad con múltiples plataformas y software.

Orientado a objetos

La actualización principal de C a C++ es la programación orientada a objetos. Esto significa que el foco está en los “objetos” y los manejos alrededor de estos objetos.

Sigue los conceptos de polimorfismo, herencia, encapsulación y abstracción, facilitando el desarrollo y mantenimiento.

Procedimental

C++ admite el concepto de procedimientos y subrutinas, que encierran segmentos de código en bloques reutilizables, a los que se puede “llamar” para realizar tareas individuales.

Los procedimientos y subrutinas se conocen como funciones en C++. Una función puede tomar cero o más parámetros, y retornar cero o un valor.

Programación estructurada

El código en C++ es modular, con el soporte de funciones, clases y objetos, acoplándose los módulos libremente.

Las sentencias de control del flujo en C++ son similares a las encontradas en muchos otros lenguajes de programación estructurada. Estas son if-else para implementar la lógica de decisión, y for, while y do-while para implementar iteraciones o bucles.

Gestión de memoria

C++ admite la asignación dinámica de memoria. Así, puede liberar la memoria asignada en cualquier momento.

Punteros

Son variables que almacenan la dirección de otra variable. El puntero apunta a la ubicación en la memoria de una variable. C++ admite punteros para así proporcionar soluciones a muchos problemas que exigen acceso a la ubicación de la memoria.

Lenguaje compilado

Antes de poder ejecutarse, un programa en C++ debe ser traducido a las instrucciones nativas de la máquina destino por un programa llamado compilador. Sin compilación, no se puede ejecutar ningún programa en C++. El compilador compila el programa C++ para que luego se pueda ejecutar.

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.

¿Para qué sirve C++? Aplicaciones

Aplicaciones

Muchas aplicaciones de los sistemas Adobe se desarrollan en C++, como Illustrator, Photoshop, Adobe Premiere e Image Ready.

Sistemas operativos

C++ 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 compiladores 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 que esté 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

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: contiene funciones estándares de entrada y salida.

– cstdlib: contiene la función para convertir números a texto y viceversa,

– cmath: contiene funciones de la biblioteca matemática, asignación de memoria, números aleatorios y varias otras funciones de utilidad.

– fstream: contiene funciones que realizan la entrada y la salida de archivos en el disco.

– ctime: contiene la función para manejar la hora y fecha.

– memory: contiene clases y funciones utilizadas por la Biblioteca estándar de C++ para asignar memoria.

Ventajas

Velocidad

Como C++ es una versión extendida de C, que es 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

C++ es uno de los lenguajes de programación que está 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 así realizar eficientemente un soporte de bajo nivel.

Eficiencia

C++ 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 también esfuerzo, que de otra forma se malgastarían creando código.

Libertad para elegir estilos de programación

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

C++ puede resolver problemas complejos de forma intuitiva creando objetos. Además, las funciones de C++ permiten dividir el código en bloques lógicos que son claros, fáciles de entender y fáciles de probar y modificar.

Capacidad para detectar errores antes de la ejecución

C++ 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 problemas confusos dentro de 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

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

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

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

  1. Simplilearn (2020). C++ Programming for Beginners: History, Benefits and Applications. Tomado de: simplilearn.com.
  2. Educba (2020). Uses of C++ in Real World. Tomado de: educba.com.
  3. Dmitrii Rassokhin (2020). The C++ programming language in cheminformatics and computational chemistry. Journal of Cheminformatics. Tomado de: jcheminf.biomedcentral.com.
  4. Edureka! (2020). What are the top 10 features of C++? Tomado de: edureka.co.
  5. Aman Goel (2020). C++ Language: Features, Uses, Applications & Advantages. Hackr. Tomado de: hackr.io.
  6. Steemit (2020). C++: Learn to code. History, advantages, disadvantages of C++ language. Tomado de: steemit.com.
  7. Data Flair (2019). Learn Data Types in C and C++ with Example in Just 4 mins. Tomado de: data-flair.training.