C++
evolucionó de C, el cual, a su vez, evolucionó de dos lenguajes de programación
anteriores, BCPL y B. En 1967, Martin Richards desarrolló BCPL como un lenguaje
para escribir software para sistemas operativos y compiladores. Ken Thompson
modeló muchas de las características de C en su lenguaje B, luego del
desarrollo de su contraparte BCPL y, en 1970, utilizó B para crear las primeras
versiones del sistema operativo UNIX en los laboratorios Bell, sobre una
computadora DEC PDP-7. Tanto BCPL como B eran lenguajes “sin tipo” (cada uno
ocupaba una “palabra” en memoria y, por ejemplo, el trabajo de procesar un
elemento como un número completo o un número real era responsabilidad del
programador).
El lenguaje C
evolucionó a partir de B; dicha evolución estuvo a cargo de Dennis
Ritchie en los laboratorios Bell y, en 1972, se implementó en una computadora
DEC PDP-11. C utiliza muchos conceptos
importantes de BCPL y B cuando agrega tipos de datos y otras características.
Inicialmente, C se hizo muy popular como
lenguaje de desarrollo para sistema operativo UNIX. En la actualidad, la
mayoría de los sistemas operativos están escritos en C y/o C++, y
C se encuentra disponible para la
mayoría de las computadoras, y es independiente del hardware. Con un diseño
cuidadoso, es posible escribir programas en C que sean portables para la
mayoría de las computadoras.
Para fines de la década de los setenta, C evolucionó en lo que ahora se conoce como “C
tradicional”, “C clásico”, o “C de Kernighan y Ritchie”. La publicación que en 1978 Prentice Hall
hiciera del libro de Kernighan y Ritchie, El lenguaje de programación C, atrajo mucho la atención de la gente a dicho
lenguaje.
La amplia utililzación de C para distintos tipos de
computadoras (en ocasiones llamadas plataformas de hardware) ocasionó,
desafortunadamente, muchas variantes. Éstas eran similares, pero a menudo
incompatibles, lo que se volvió un problema serio para los desarrolladores que
necesitaban escribir programas que se pudieran ejecutar en distintas
plataformas. Entonces, se hizo evidente la necesidad de una versión estándar de
C. En 1983, se creó el comité técnico X3J11 bajo la supervisión del American
National Standards Committee on Computers and Information Processing (X3), para “proporcionar una
definición del lenguaje clara e independiente de la computadora”. En 1989, el
estándar fue aprobado. ANSI cooperó con la International Organization for
Standardization (ISO) para estandarizar C
a nivel mundial; el documento conjunto del estándar se publicó en 1990 y
se le conoce como ANSI/ISO 9899:1990. Las copias de este documento pueden
solicitarse a la ANSI. La segunda edición del libro de Kernighan y Ritchie,
publicada en 1988, menciona esta versión denominada ANSI C, una versión del lenguaje
que actualmente se utiliza a nivel mundial.
A principios de la década de los ochenta, Bjarne
Stroustrup desarrolló una extensión de C en los laboratorios Bell: C++. C++
proporciona un conjunto de características que “pulen” al lenguaje C; pero lo más
importante, proporciona la capacidad de una programación orientada a objetos.
Una revolución se está gestando en la comunidad del
software. Escribir software rápida, correcta y económicamente es aún una meta
escurridiza, en una época en la que la demanda de nuevo y más poderoso software
se encuentra a la alza. Los objetos son, esencialmente, componentes
reutilizables de software que modelan elementos reales. Los desarrolladores de
software están descubriendo que utilizar una metodología de diseño e implementación
modular y orientada a objetos puede hacer más productivos a los grupos de
desarrollo de software, que mediante las populares técnicas de programación
anteriores, tales como la programación estructurada. Los programas orientados a
objetos son más fáciles de comprender, corregir y modificar.
Se han creado muchos otros lenguajes orientados a
objetos, incluyedo Smalltalk; desarrollado por Xerox en su Centro de
Investigaciones de Palo Alto (PARC). Smalltalk es un lenguaje orientado a
objetos puro (literalmente todo es un objeto). C++ es un lenguaje híbrido (en
él es posible programar tanto en estilo C, como en estilo orientado a objetos,
o en ambos).
No hay comentarios:
Publicar un comentario