C++ Breve Historia de C++: Martin Richards Ken Thompson B BCPL
C++ Breve Historia de C++: Martin Richards Ken Thompson B BCPL
C++ Breve Historia de C++: Martin Richards Ken Thompson B BCPL
En 1972 Denis Ritchie escribe un lenguaje basado en BCPL y B con varias mejoras que
contribuyen a su posterior popularidad; lo llamó C. La eficiencia del C en términos de
ejecución y administración de recursos lo hizo el preferido de las empresas de software
que diseñaban sistemas operativos y compiladores. Una de sus principales
características es su independencia del hardware, lo cual permitía inicialmente correr
programas C en cualquier plataforma con mínimas modificaciones. Pero las empresas
de software comenzaron a diseñar versiones de C particulares que le quitaban
portabilidad a los programas. Por eso, en el 1983 el ANSI creó un comité técnico para
su standarización. La versión aprobada junto a la ISO vió la luz en 1990 y se lo conoce
como ANSI C.
El nombre de C++ fue idea de Rick Masciatti haciendo uso del operador postincremento
del lenguaje y sugería que era el lenguaje que le seguía a C. Este compilador fue
creciendo con renovadas características que lo hacen muy original, manteniendo la
compatibilidad con su antecesor C. C++ incorpora clases y funciones virtuales
basándose en SIMULA67, tipos genéricos y expresiones de ADA, la posibilidad de
declarar variables en cualquier lugar de ALGOL68, así como otras características que
no existían antes: herencia múltiple, espacios en nombres, funciones virtuales puras, etc.
Alex Stepanov y Adrew Koenig idearon la biblioteca STL, la cual le da a C++ una
potencia única entre los lenguajes de alto nivel.
Hoy día, C++ posee una notable inserción en el mundo de las computadoras y es un de
los lenguajes clásicos de programación: tanto sistemas operativos y compiladores, como
aplicaciones.
Sección de Acceso Rápido de Subtemas de Este Capítulo:
Introducción. | Conceptos Gral. | De C a C++. | C++ y ANSI C. | De Turbo C a Turbo C++. |
Mejoras de Turbo C++. | Antecesores de C. | ¿Por que Usar C o C++?. | Familia del C y C++. |
El lenguaje C fue inventado e implementado por primera vez en 1970 en AT&T por Dennis Ritchie en un
DEC PDP-11 usando Unix como Sistema Operativo. C es el resultado de un proceso de desarrollo
comenzando con un lenguaje anteriormente denominado BCPL, que aun hay quien lo usa principalmente
en Europa.
¿Por qué el nombre de C? Por la influencia que tuvo del lenguaje B, BCPL fue desarrollado por Martin
Richards e influenciado por B inventado en Bell Labs. por Ken Thompson. En los años 70´s el lenguaje B
llevo al desarrollo de C.
La versión original de C fue popularizada por el libro clásico "El Lenguaje de Programación C" por Brian
Kernighan y Dennis Ritchie. Durante muchos años el Estándar de C fue realmente la versión
proporcionada con la versión 5 del Sistema Operativo Unix. Con la Popularidad de las
Microcomputadoras se crearon muchas implementaciones de C, pero en realidad, como no existía ningún
estándar aparecieron muchas discrepancias. Para Remediar la situación, el Instituto de Estándares
Americano (ANSI) estableció un comité a principios del Verano de 1983 para crear el estándar que
definiera de una vez por todas al lenguaje C. La definición resultante, el estándar ANSI o " ANSI C " que
se esperaba fuera aprobada a fines de 1988.
La mayoría de las características del estándar ya se encuentran soportadas por compiladores modernos.
Uno de los propósitos del estándar fue asegurar que la mayoría de los programas existentes pudiesen
permanecer validos o, al menos, que las computadoras pudieran producir mensajes de advertencia acerca
de nuevos comportamientos.
Una Segunda contribución significativa del estándar es la definición de una biblioteca que acompañe a C,
la cual especifica funciones para tener acceso al Sistema Operativo (p/e leer archivos, escribir en ellos
etc.) E/S con formato, Asignación de Memoria, Manipulación de Cadenas y otras actividades semejantes,
una colección de Headers estándar proporcionan un acceso uniforme a las declaraciones de funciones y
tipos de datos.
La mayor parte de las bibliotecas esta estrechamente modelada con base en la biblioteca estándar del
sistema Unix.
BCPL y B son lenguajes "carentes de Tipos". En contraste, C proporciona una variedad de tipos de datos.
Los tipos de datos fundamentales son caracteres, enteros y números de punto flotante de varios tamaños.
Además existe una jerarquía de tipo de datos derivados, creados con apuntadores, arreglos, estructuras y
uniones. Las expresiones se forman a partir de operadores y operandos, cualquier expresión, incluyendo
una asignación o una llamada a función, puede ser una proposición. Los apuntadores proporcionan una
aritmética de direcciones independiente de la maquina.
C proporciona las construcciones fundamentales de control de flujo que se requieren en programas bien
estructurados: Agrupación de proposiciones, toma de decisiones (if-else), selección de un caso entre un
conjunto de ellos (switch), iteración con la condición de paro en la parte superior (while, for) o en la parte
inferior (do) y terminación prematura de ciclos (break).
Dentro de los cambios de C, hay uno de relevancia, en New Jersey en 1980, Bjarne Stroustrop desarrollo
en Bell Labs. a C++ o llamado también "C con clases", por lo que en 1983 se cambio el nombre por el de
C++. Desde entonces ha experimentado 2 revisiones de importancia, una en 1985 y otra en 1989.
Ya se destaco la eficiencia, por la cual no debe de haber ningún problema al usar C++ en lugar
de C.
La similitud entre C y C++ es sin embargo engañosa, debido a que C++ requiere un método de
programación nuevo, un nuevo paradigma llamado "Orientado a Objetos" que da nuevos beneficios con el
uso de las clases y los objetos.
Stroustrup [1986] advierte: "Mientras mas se conoce a C, es mas difícil evitar escribir en C++ con estilo
C, y perder ahí algunos beneficios potenciales de C++ ".
Como podrá comprobar, una de las razones que motivaron al desarrollo de C++ fue la de permitirle al
programador manejar programas de una complejidad cada vez mas creciente.
Es un hecho que C++ es un Superconjunto de C; por lo que la mayoría de los programas de C son
también implícitamente programas de C++, sin embargo, hay una cuantas diferencias mínimas entre
ANSI C y C++ que impiden que pocos programas de C se puedan compilar mediante un compilador C++
o viceversa:
En C no es un error declarar una variable Global varias veces (aunque esto sea una mala
practica) En C++ esto es un error.
En C un identificador puede tener hasta 31 caracteres de longitud. En C++ no hay tal limite. No
obstante que desde un punto de vista practico, identificadores extremadamente largos son
difíciles de manejar.
El manejó en C++ con todas sus características de Clases y Objetos tal como los Constructores,
destructores, funciones amigas, sobrecarga de funciones, referencias, herencia, poliformismo,
encapsulación, abstracciones etc. que en C no se manejan.
Las Extensiones de los archivos de cada uno es para ANSI C *.c para C++ *.cpp
Conceptos Generales de C
De C a C++. C++ es un Superconjunto de C. Todas las construcciones de C están presentes en C++. Los
programas que se compilan bajo C deberían poder hacerlo bajo C++. Los programas que siguen el
estándar de Kernighan y Ritchie pueden dar origen a errores cuando se someten a un compilador de C++,
y siempre dan origen a avisos. Los programas que no generan avisos bajo Turbo C 2.0 tampoco deberían
generar errores al ser compilados bajo turbo C++.
Para confirmar esto, Turbo C++ distingue entre un programa C y un programa C++ examinando su
extensión. si el nombre del archivo fuente termina en .c se considera un programa de C; si termina en
.cpp, se entiende que es un programa C++, a no ser que la opción C++ haya sido activada en el menú
Options/Compiler.
C++ y ANSI C. Comparten algo mas que una herencia en común. Muchas de las extensiones de C ANSI,
tales como el formato de la declaración de sus funciones y el uso de los tipos de fuentes de datos, se
trasladan a C++. Además de esto, C++ ha ampliado con objeto de incluir las ultimas novedades ANSI y
guardar la máxima compatibilidad. C++ comparte las siguientes características con ANSI, aunque exista
alguna diferencia menor:
Prototipo de Funciones.
Variables register
#pragmas
De Turbo C a Turbo C++. Aunque Turbo C++ se desvía de Turbo C, la interrelación entre ambos es
inconfundible. Turbo C++ conserva tanto la versión del compilador Orientado a la línea de ordenes, como
el entorno interactivo de desarrollo (IDE), pero en un entorno de ventanas. Además, Turbo C++ admite
ahora la entrada de información desde un ratón o desde el teclado.
Borland C++ incluye características estándar para facilitar el desarrollo de grandes aplicaciones
de Software.
Borland C++ corre bajo el ambiente Windows de cualquier versión (inferiores a la 3.0), y
contiene un Kit de herramientas para el desarrollo de aplicaciones de Windows (cabecera
Windows.h)
Para Efectos practicos de este tutorial, se podran correr las aplicaciones en la versón Borland C++ 3.0 de
DOS, pero tambien puede Ud utilizar la versión Borland 3.1 C++ para Windows.
¿CUALES SON LAS CARACTERISTICAS DE TURBO C++ 3.0 PARA DOS?. De manera interna
Turbo C++ contiene una pequeña guia de aprendizaje para guiar al programador en su avance cotidiado
de trabajo, con una ayuda sensible al contexto, y mantiene un gran poder en su editor, compilador,
depurador y ensamblador, todo para un desarrollo de aplicaciones de C y C++ facílmente. Ademas cuenta
con las siguientes ventajas:Contiene capacidades para ensamblador, programación Orientada a Objetos,
Soporte para Templates, Librerias de Clases Standares incluyendo iostreams, y números complejos,
cabeceras precompildas para una compilación rapída, Un Administrador inteligente de Proyectos con una
utileria MAKE, mas de 450 librerias de funciones incluyendo las gráficas, incluye editor multi-archivos
con soporte para macros, archivos muy grandes, ilimitado un-do y re-do,y una sintaxis sobresaltada por
colores.
C Pertenece a una familia bien establecida de lenguajes cuya tradición enfatiza virtudes como fiabilidad,
regularidad, simplicidad de uso. Los miembros de esta familia se llaman a menudo "Lenguajes
Estructurados", cuya disciplina es hacer programas fáciles de leer y escribir, esto fue todo un Paradigma o
Ideología en los años 70´s.
C++ ya no entra dentro de esta familia de lenguajes Estructurados, si no en el ultimo de los Paradigmas
establecidos en los 80´s y 90´s: El Orientado a Objetos.