Ir al contenido principal

Historia del lenguaje C++


C es un lenguaje de propósito general que se puede utilizar para escribir cualquier tipo de programa, pero su éxito y popularidad está especialmente relacionado con el sistema operativo UNIX, parte de un lenguaje anterior, el lenguaje B, escrito por Ken Thompson en 1970.
 En 1972 es Dennis Ritchie (de los Laboratorios Bell de AT&T) quien diseña finalmente C a partir del B de Thompson, aportando un diseño de tipos y estructuras de datos que consiguen una claridad y eficacia en el lenguaje muy superior. Es un lenguaje que permite realizar una programación estructurada economizando las expresiones, con abundancia de operadores y tipos de datos, codificando en alto y bajo nivel simultáneamente, reemplazando ventajosamente la programación en ensamblador y permitiendo una utilización natural de las funciones primitivas del sistema. Además, no está orientado a ningún área en especial y sobre todo consigue un código objeto altamente optimizado que repercute en que los programas son muy rápidos.

C++, Java y C#, los tres lenguajes más populares junto con C en esta primera década del siglo XXI son herederos directos del propio C con características orientadas a objetos y a Internet. Actualmente, y aunque C sigue siendo, el más utilizado en el mundo de la educación como primer lenguaje de programación y también copa un porcentaje alto de utilización en el campo profesional, los tres lenguajes con características técnicas de orientación a objetos incluido el C, son los lenguajes más empleados en el mundo educativo, profesional y científico actual.
Aunque C es un lenguaje muy potente, tiene dos características que lo hacen inapropiado como una introducción moderna a la programación ya que C, requiere un nivel de sofisticación a sus usuarios que les obliga a un difícil aprendizaje a los programadores principiantes ya que es de comprensión difícil a demás C, fue diseñado al principio de los setenta, y la naturaleza de la programación ha cambiado de modo significativo en la década de los ochenta y noventa- para subsanar estas “deficiencias” Bjarne Stroustrup de AT&T Bell Laboratories desarrolló C++ al principio de la década de los ochenta.
Las características más notables que han ido incorporándose a C++ son:
·         Herencia múltiple
·         Genericidad
·         Plantillas
·         Funciones virtuales
·         Excepciones, etc.
C++ ha ido evolucionando año a año y como su autor ha explicado:
“evolucionó siempre para resolver problemas encontrados por los usuarios y como consecuencia de conversaciones entre el autor, sus amigos y sus colegas”
Bjarne Stroustrup
C++ es un lenguaje orientado a objetos que se ha hecho muy popular y con una gran difusión en el mundo del software y actualmente constituye un lenguaje estándar para programación orientada a objetos, aunque también puede ser utilizado como lenguaje estructurado al estilo de C si se desea trabajar al modo clásico de programación estructurada, sobre todo si se desea trabajar con algoritmos y estructura de datos.
La última variante que ha surgido de C es el moderno C#. En el año 2000, Microsoft presenta su plataforma .NET junto con un nuevo lenguaje, C# (diseñado por Anders Hejlsberg), que servirá de lenguaje principal de la plataforma. C# es un híbrido de C++ y Java que fusiona, principalmente, la capacidad de combinar operadores propia del primero (no incorpora la herencia múltiple) con la plena orientación a objetos del segundo. La orientación a objetos es tal que el propio programa está encapsulado en una clase. Actualmente C# se encuentra entre los 10 lenguajes más utilizados. A pesar de su corta historia, ha recibido la aprobación del estándar de dos organizaciones: en el 2001 se aprueba el ECMA y en el 2003 el ISO.
Historia del C++

Los primeros programas se crearon mediante conmutadores. El lenguaje utilizado era el lenguaje máquina. Sólo era aplicable a pequeños programas.
El lenguaje ensamblador apareció para evitar programas usando cadenas de ceros y unos.
En los años 50 aparece el primer lenguaje de alto nivel denominado FORTRAN. Permite la construcción de programas largos, no obstante, se corría el peligro de crear programas difícilmente legibles.
Para evitar este problema, en los años 60 y 70 aparecen los lenguajes estructurados (C, Pascal, Algol), están basados en estructuras de control bien definidas, bloques de código, la ausencia de la instrucción GOTO, y subrutinas independientes que soportan recursividad y variables locales.
Aunque la programación estructurada nos ha llevado a excelentes resultados, cuando se ha aplicado a problemas complejos, los resultados son menos satisfactorios, algunos de los problemas que presenta el modelo tradicional de desarrollo de sistemas de información surgen:
·                   Cuando la complejidad del sistema o su ambigüedad no permite un análisis inicial completo.
·                   Si el sistema desarrollado no se adapta a las necesidades de los usuarios, por falta de entendimiento inicial entre usuarios y diseñadores.
·                   Requiere excesivos recursos dedicados a su mantenimiento.
·                   Resulta difícil llevar a cabo su modificación por cambios del entorno o de los requisitos iniciales.
·                   Cuando necesita incorporar el tratamiento de nuevos tipos de datos como imágenes, sonido, vídeo digital, etc.
Para resolver estos problemas surge la Programación Orientada a Objetos. La POO toma las mejores ideas incorporadas a la programación estructurada y las combina con nuevos y potentes conceptos que permiten organizar los programas en una forma más efectiva.
En los años 70, nace Smalltalk como un lenguaje orientado a objetos puro. En la década de los 80 aparecen lenguajes híbridos orientados a procedimientos y a objetos como C++, e resumen:
·         C++ es un lenguaje de programación creado por Bjarne Stroustrup en los laboratorios de At&T en 1983, teniendo como el lenguaje C.
·         El C++ surgió como un lenguaje orientado a la programación de sistemas y de herramientas, recomendado sobre todo para programadores expertos, y que no llevaba implementadas muchas funciones lo que hacen a c++ un lenguaje más comprensible.
·         C++ pretende llevar a C a un nuevo paradigma de clases y objetos con los que se realiza una comprensión más humana basándose en la construcción de objetos, con características propias solo de ellos, agrupados en clases.
Características de lenguaje C++
Tiene un conjunto completo de instrucciones de control.
Ø  Permite la agrupación de instrucciones.
Ø  Incluye el concepto de puntero (variable que contiene la dirección de otra variable).
Ø  Los argumentos de las funciones se transfieren por su valor.
Ø  E/S no forma parte del lenguaje, sino que se proporciona a través de una biblioteca de funciones.
Ø  Legibilidad: consiste en si el lenguaje tiene una sintaxis sencilla, fáciles de leer y fáciles de compilar
Ø  Ortogonalidad: permite combinar en una sola instrucción diversas características del lenguaje, de esta manera se consiguen programas más cortos y más compactos.
Ø  Naturalidad para la aplicación: consiste en el lenguaje proporcione herramientas adecuadas para el fin para el que está pensado.
Ø  Soporte a la abstracción: Solucionar tipos de problemas y no problemas concretos. Debe permitir que el programador pueda crear funciones y procedimientos.
Ø  Entorno de programación: Los lenguajes han de ir acompañados de un entorno donde programar.
Ø  Portabilidad de los programas: Es un lenguaje que permite crear programas que funcionen en cualquier maquina pertenezca a la plataforma que quiera, distinto fabricante, etc.
Ø  Permite la separación de un programa en módulos que admiten compilación independiente.
Originalmente el Lenguaje C estuvo muy ligado al sistema operativo UNIX como se había mencionado antes que, en su mayor parte, está escrito en C. Más adelante se comenzó a utilizar en otros sistemas operativos para programar editores, compiladores, etc.
Evolución

El Lenguaje C reúne características de programación intermedia entre los lenguajes ensambladores y los lenguajes de alto nivel; con gran poderío basado en sus operaciones a nivel de bits (propias de ensambladores) y la mayoría de los elementos de la programación estructurada de los lenguajes de alto nivel, por lo que resulta ser el lenguaje preferido para el desarrollo de software de sistemas y aplicaciones profesionales de la programación de computadoras.
 En 1970 Ken Thompson de los laboratorios Bell se había propuesto desarrollar un compilador para el lenguaje Fortran que corría en la primera versión del sistema operativo Unix tomando como referencias el lenguaje BCPL; el resultado fue el lenguaje B (orientado a palabras) que resulto adecuado para la programación de software de sistemas.
Con B creó las primeras versiones del sistema operativo UNIX en una computadora DEC PDP-7. Este lenguaje tuvo la desventaja de producir programas relativamente lentos.
En 1972, Dennis Ritchie, estaba finalizando su proyecto, en los famosos laboratorios Bell. “El lenguaje C”, una evolución del B, implementando originalmente en una DECPDP-11. Al contrario de sus antecesores, C era un lenguaje con tipos, es decir, que cada elemento de información ocupaba una palabra en memoria y la tarea de tratar cada elemento de datos como número entero real, o arreglos, no recaía en el programador.
C era conocido como el lenguaje con el cual se desarrolló el sistema operativo UNIX y actualmente la mayoría de los sistemas operativos se codifican en C. Lo bueno de este lenguaje es que no depende de la arquitectura de hardware. Es posible escribir código en C, y llevarlos a otras máquinas. Eso lo convirtió en uno de los lenguajes más portátiles del mercado.
En el lenguaje C, el operador ++ significa, incrementar la variable, se eligió en nombre C++, debido a que éste agregaba al C original el término de Programación Orientada a Objetos (POO), basadas en simula 67. Al ser C++ una variación de C, los programas codificados en C pueden correr tranquilamente en C++.
 En 1990, el lenguaje ha sido descrito por Stroustrup y Ellis en el Annotated C++ Reference Manual editado por Addison-Wesley, existiendo una versión en español del mismo, con el título de C++. Manual de Referencias con anotaciones publicado por Addison Wesley/Días de Santos en 1994.
La versión estandarizada por ANSI, la versión 3.0 es la que soportan la mayoría de los fabricantes mundiales, como ser, Borland, AT&T, WatCom, Microsoft etc. Hoy en día, Borland ofrece el compilador de C++ en la versión 5.5 de forma gratuita. Lenguaje C++ Se pronuncia “ce plus plus”. Es un lenguaje extremadamente poderoso y eficiente. C++ es un súper conjunto de C, para aprender C++ significa aprender todo acerca de C, luego aprender programación orientada al objeto y el uso de éstas con C++.
Variantes
Desde el inicio del lenguaje han surgido varias ramas de evolución que han generado varios lenguajes:
·         Objective-C es un primer intento de proporcionar soporte para la programación orientada a objetos en C, de escasa difusión, pero actualmente usado en Mac OS X y GNUstep.
·         C++ (pronunciado C Plus Plus) diseñado por Bjarne Stroustrup fue el segundo intento de proporcionar orientación a objetos a C y es la variante más difundida y aceptada.
Esta versión combina la flexibilidad y el acceso de bajo nivel de C con las características de la programación orientada a objetos como abstracción, encapsulación y ocultación.
También se han creado numerosos lenguajes inspirados en la sintaxis de C, pero que no son compatibles con él:
·         Java, que une una sintaxis inspirada en la del C++ con una orientación a objetos más similar a la de Smalltalk y Objective C.
·         JavaScript, un lenguaje de scripting creado en Netscape e inspirado en la sintaxis de Java diseñado para dar a las páginas web mayor interactividad. A la versión estandarizada se la conoce como ECMAScript.
·         C# (pronunciado C Sharp) es un lenguaje desarrollado por Microsoft derivado de C/C++ y Java.
La importancia de C++
La estandarización del lenguaje ha llevado mucho tiempo, y como todo buen programa, no termina, sino que se mejora paulatinamente. La última versión del estándar es el ANSI/ISO C99, de 1999 precisamente. Hoy en día se está trabajando para liberar la siguiente versión, presumiblemente ANSI/ISO C07.
A diferencia de lenguajes propietarios de una empresa como Java o C#, C++ es un lenguaje que pertenece a todos y por lo tanto todos lo enriquecemos día a día. Pero todos pensamos de forma diferente. Así, la idea del estándar es conciliar las diferentes posturas y generar un lenguaje (con su librería estándar adyacente) lo suficientemente potente y flexible para todos. Hay por supuesto otras razones. Quizás la más notoria es el concepto de portabilidad. Muchas empresas crean diferentes compiladores, y el lenguaje es tan extendido que se emplea para programar en plataformas como Windows, MacOS, Linux, Unix/POSIX y hasta en sistemas empotrados como PocketPC, Palm y otros dispositivos. El estándar garantiza esta portabilidad entre plataformas.
·         Debido a que C es un lenguaje ampliamente disponible, independientemente de la plataforma, y estandarizado, las aplicaciones en C, amenudo pueden ejecutarse sobre un amplio rango de sistemas de cómputo, con muy pocas o ninguna modificación.
·         Una de sus mayores ventajas es que c++ en su o dependencia e n lo que a código fuente se refiere
·         Es un lenguaje que soporta diversos estilos de programación genérica y POO
·         Todos los estilos se basan en una verificación fuente de tipos y permiten alcanzar un alto nivel de abstracción
·         Es un lenguaje que está organizado de tal manera que el lenguaje des mismo, puede hacerse gradualmente obteniendo beneficios prácticos a lo largo del camino.
Conclusión
Nos dimos cuenta cual tan importante fue el lenguaje C++ para la programación hoy en día, ya que muchos de los programas que hoy utilizamos están hechos en C++. También podemos cuán importante fue para el lenguaje C para el C++ ya que sin ella no podríamos tenerlo hoy día, otra es porque fue una mejora para el C, ya que a pesar de ser bueno a la hora programar, no acaba de ser factible, por eso creemos que el C++ es un gran bien para la programación de hoy en día.
Fuentes

Comentarios

Entradas populares de este blog

Evolución de los lenguajes programación

Yo creí que los lenguajes de programación se empezaron a crear desde los 90’s y me llevo la sorpresa que no es así, realmente fue una grata sorpresas. Creo está bien saber cómo han evolucionada ya que podemos saber cómo fueron sus inicios y como han cambiado conforme a las necesidades de programador las ha necesitado. Además también con esto podemos darnos la idea de que lenguaje de programación nos gustaría utilizar y querer manejarlos al 100%. Fuentes: https://www.maestrodelacomputacion.net/historia-de-los-lenguajes-de-programacion/ https://www.timetoast.com/timelines/linea-del-tiempo-evolucion-de-los-lenguajes-de-programacion   https://en.wikipedia.org/wiki/History_of_programming_languages

Presentación de la historia del C++