Inicios e Historia de C++ Desde 1979

http://upload.wikimedia.org/wikipedia/commons/d/da/BjarneStroustrup.jpg

El lenguaje de programación C++ tiene sus inicios en 1979, cuando Bjarne Stroustrup estaba trabajando en su tesis de Ph.D. Uno de los lenguajes en los que Stroustrup tuvo la oportunidad de trabajar fue Simula, cuyo nombre implica que el lenguaje está diseñado principalmente para simulaciones. El lenguaje Simula 67, que fue una variante con la que Stroustrup trabajó, es considerado como el primer lenguaje con soporte al paradigma de programación orientado a objetos. Stroustrup encontró que el paradigma era muy útil para el desarrollo de software, sin embargo el lenguaje Simula era demasiado lento para uso práctico.


Poco tiempo después, empezó a trabajar en “C con clases”, que como el nombre implica, estaba destinado a ser un superconjunto del lenguaje C. Su objetivo fue el de agregar la programación orientada a objetos en el lenguaje C, que fue (y aún es) un lenguaje muy respetado por su portabilidad sin sacrificar velocidad o funcionalidad de bajo nivel. Su lenguaje incluyó clases, herencia básica, inlining, argumentos de funciones por defecto y chequeo fuerte de tipos de datos, adicionalmente a todas las características del lenguaje C.


El primer compilador de C con Clases se llamó Cfront, que fue derivado de un compilador de C llamado CPre. Fue un programa diseñado para traducir código de C con Clases a C ordinario. Un punto interesante que cabe destacar es que Cfront fue escrito casi completamente en C con Clases, haciéndolo un compilador auto-compilable (que se compila a sí mismo). Cfront fue después abandonado en 1993 después de que se empezó a hacer difícil la adición de nuevas características, como las excepciones de C++. Aún así, Cfront logró un enorme impacto en las implementaciones de los compiladores posteriores y en el sistema operativo Unix.


En 1983, el nombre del lenguaje fue cambiado de C con Clases a C++. El operador ++ del lenguaje C es un operador para incrementar una variable. Muchas nuevas características fueron añadidas en esos tiempos, como las funciones virtuales, sobrecarga de funciones, referencias con el símbolo &, la palabra clave const, y los comentarios de una sola línea usando // (característica tomada del lenguaje BCPL).






En 1985, se publicó la referencia de Stroustrup titulada “The C++ Programming Language”. El mismo año, C++ fue implementado como un producto comercial. El lenguaje no fue oficialmente estandarizado aún, haciendo el libro una referencia muy importante. El lenguaje fue actualizado de nuevo en 1989 para incluir miembros estáticos y protegidos, así como herencia de varias clases.


En 1990, se lanzó el libro “The Annotated C++ Reference Manual”. El mismo año, el compilador Turbo C++ de Borland fue lanzado como un producto comercial. Turbo C++ agregó muchas librerías adicionales que ocasionarían un impacto importante en el desarrollo de C++. Aunque el último lanzamiento estable de Turbo C++ fue en 2006, el compilador es aún ampliamente utilizado.


En 1998, el comité de estándares de C++ publicó el primer estándar internacional C++ ISO/IEC 14882:1998, que informalmente se conoció como C++98. Se dice que el “The Annotated C++ Reference Manual” fue una gran influencia en el desarrollo del estándar. La librería de plantilla estándar (The Standard Template Library), que comenzó su desarrollo conceptual en 1979, también fue incluida. En 2003, el comité respondió a múltiples problemas que fueron reportados en el estándar de 1998, y revisados en consecuencia. El nuevo lenguaje se apodó como C++03.


En 2005, el comité de estándares de C++ publicó un reporte técnico (apodado TR1) detallando varias características que se planeaban agregar al último estándar de C++. El nuevo estándar fue informalmente apodado C++0x y se esperaba lanzar antes del fin de la primera década. Irónicamente, el nuevo estándar fue no se lanzó hasta mediados de 2011. Muchos reportes técnicos fueron lanzados hasta entonces, y algunos compiladores empezaron a agregar soporte experimental a las nuevas características.


A mediados de 2011, el nuevo estándar de C++ (apodado C++11) fue finalizado. El proyecto de librería Boost logró un considerable impacto en el nuevo estándar, y algunos de los nuevos módulos fueron derivados directamente de las correspondientes librerías de Boost. Algunas de las nuevas características incluyen el soporte de expresiones regulares, una librería de aleatorización completa, una nueva librería de tiempo de C++, soporte a atómicos, una librería estándar para manejo de hilos (que hasta 2011, le faltaba tanto a C como a C++), una nueva sintaxis para el bucle for que proporcionaba funcionalidad similar a los bucles foreach de algunos otros lenguajes, la palabra clave auto, nuevas clases contenedoras y un mejor soporte a uniones y a listas de inicialización de arreglos.

No hay comentarios:

Publicar un comentario