C++ lenguaje de programación

C++


C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al lenguaje de programación C mecanismos que permiten la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.


Posteriormente se añadieron facilidades de programación genérica, que se sumaron a los paradigmas de programación estructurada y programación orientada a objetos. Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma.
Actualmente existe un estándar, denominado ISO C++, al que se han adherido la mayoría de los fabricantes de compiladores más modernos. Existen también algunos intérpretes, tales como ROOT.
Una particularidad del C++ es la posibilidad de redefinir los operadores, y de poder crear nuevos tipos que se comporten como tipos fundamentales.

El nombre "C++" fue propuesto por Rick Mascitti en el año 1983, cuando el lenguaje fue utilizado por primera vez fuera de un laboratorio científico. Antes se había usado el nombre "C con clases". En C++, la expresión "C++" significa "incremento de C" y se refiere a que C++ es una extensión de C.
Uno de los requisitos originales para C++ era la compatibilidad con el lenguaje C. Desde entonces, C++ se ha desarrollado con varias iteraciones, C con clases, la especificación del lenguaje original de C++ y luego las muchas mejoras subsiguientes. Debido a esta herencia, C++ se conoce a menudo como lenguaje de programación multiparadigma.

En C++, puede realizar programación puramente de procedimiento de estilo C con punteros sin formato, matrices, cadenas de caracteres terminadas en null, estructuras de datos personalizadas y otras características que pueden ofrecer un gran rendimiento, pero también generar errores y complejidad. Debido a que la programación de estilo C está llena de peligros como estos, uno de los objetivos fundamentales de C++ era que los programas tuvieran seguridad de tipos y fueran más fáciles de escribir, ampliar y mantener. Desde el principio, C++ adoptó paradigmas de programación tales como la programación orientada a objetos. A lo largo de los años, se han agregado características al lenguaje, junto con bibliotecas estándar altamente probadas de estructuras de datos y algoritmos. Estas adiciones son las que han hecho posible el estilo moderno de C++.

Conceptos generales de la programación orientada a objetos
Clase: Es una plantilla que define la estructura de un conjunto de objetos, que al ser creados se llamarán las instancias de la clase. Esta estructura está compuesta por la definición de los atributos y la implementación de las operaciones (métodos ).


Objeto: Es la implementación de una instancia de clase, es decir, una ocurrencia de esta, que tiene los atributos definidos por la clase, y sobre la que se puede ejecutar las operaciones definidas en ella.
Identidad: Característica de cada objeto que lo diferencia de los demás, incluyendo de aquellos que pudieran pertenecer a la misma clase y tener los mismos valores en sus atributos.
Herencia: Es la capacidad que tienen las clases para heredar propiedades y métodos de otras clases.

Características del lenguaje C++

Las características principales del lenguaje de programación c++ son las siguientes.


Sintaxis heredada del lenguaje C.

Tiene un estandard ISO, conocido como ANSI-C++. La última revisión fue en el 2011.
Lenguaje fuertemente tipado. El programador debe saber como hacer y declarar el código para que funcione.
Programación orientada a objetos, lo que comunmente se puede encontrar por POO.
Abstracción.
Encapsulado.
Herencia.
Polimorfismo.
Sobrecarga de operadores.
Soporta expresiones Lambda, también llamadas funciones anónimas.
Control de excepciones.
Biblioteca estándar, que suele venir con el compilador. No solo estamos hablando de las funciones de sistema, como puede ser cout, sino de:
Plantillas de clases (o colecciones de objetos) para vectores, listas, mapas, colas, pilas, ec.
Soporte multihilo.

Compatibilidad de C con C++. Un compilador de c++ puede compilar código escrito en C, o usar librerías de c con poca modificación de código..
Uso de punteros.
Es portátil, tiene un gran número de compiladores en diferentes plataformas y sistemas operativos.
Eficiencia con el hardware, al ser un lenguaje compilado. Además, se acerca bastante a un lenguaje de bajo nivel.
Una de las pricipales desventajas (o crítica) de C++, es su complejidad. Es un lenguaje pensado para programadores con experiencia programando.

VENTAJAS DE PROGRAMAR EN C++

Existen compiladores de C++ para diferentes sistemas operativos, lo cual representa una ventaja en cuestión de portabilidad. Es posible compilar nuestro código en diferentes plataformas, si se separa el código operativo del código de interfaz gráfica. Así, si se desea compilar para los sistemas de Apple o Linux, simplemente se tendrá que modificar el código relacionado con la interfase gráfica. Esto reduce el tiempo de programación para pasar el código de un sistema a otro. En lenguajes de programación como Visual Basic esto resulta imposible ya que no existen compiladores para código de Visual Basic en otros sistemas diferentes de Windows.
Lenguaje muy didáctico, gracias a este lenguaje puedes aprender muchos otros lenguajes con gran facilidad, como C#, Java, Visual Basic, Javascript, PHP, entre otros. 
 C y C++ son lenguajes tan robustos y versátiles, que actualmente son muy utilizados en la creación de software, como sistemas operativos (windows, GNU/Linux, Mac OSX, android), utilidades (Bibliotecas, servicios, herramientas de mantenimiento), y en software de desarrollo como compiladores, depuradores e IDE (entornos de desarrollo integrados)
Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los más empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura).
C++ es apreciado por la eficiencia de su código y es de los lenguajes de programación más populares para crear software de sistemas y para crear aplicaciones.


Es un lenguaje muy empleado, existen muchos tutoriales en línea, libros, códigos fuentes abiertos... hay material de sobra y basta para aprender lo necesario y mucho más con este lenguaje.

DESVENTAJAS DE PROGRAMAR EN C++

Uso de DLLs (librerías dinámicas) muy complejo. Java y .Net han evolucionado estos conceptos manipulando las DLLs mediante los frameworks que proveen. En cambio, en C++ el desarrollador debe encargarse de cargar y liberar de memoria estas librerías, y correr los riesgos por el manejo de esta memoria.
Elaborar un sistema en C++ es como construir un rascacielos: tiene buen soporte y es robusto, pero si existen errores en los pisos inferiores toda la parte superior se viene abajo terriblemente.

Manejo de punteros y memoria respecto a ello. Claro, esta también es una gran ventaja porque permite un mejor control de la memoria y una buena administración de recursos de computadora, pero la inexperiencia de los desarrolladores o la pérdida de costumbre con este tipo de variables (sobre todo cuando son dobles o triples punteros, inclusive de mayor orden) los lleva al desastre. 
No es recomendable para desarrollo de páginas Web.

Uno de los motivos que más quebraderos de cabeza ha traído a los programadores en lenguaje C es la correcta liberación de la memoria. Si se te olvida liberar algo de memoria, cuando el programa termina esa memoria se queda ocupada (aunque el programa ya no siga ejecutándose), son los famosos “Memory Leaks”.
Es difícil (o por lo menos no es tan sencillo como en otros lenguajes) programar bases de datos.