Download historia del c++

Document related concepts

C (lenguaje de programación) wikipedia , lookup

Biblioteca estándar de C wikipedia , lookup

Errno.h wikipedia , lookup

D (lenguaje de programación) wikipedia , lookup

Common Lisp wikipedia , lookup

Transcript
http://c.conclase.net/curso/index.php?cap=900
HISTORIA DEL C++
C++ Es heredero directo del lenguaje C que a su vez se deriva del lenguaje B. C se
mantiene como un subconjunto de C++. Otra fuente de inspiración fue simula 67 del
que tomo el concepto de clase (con clases derivadas y funciones virtuales).
El lenguaje de programación fue desarrollado por Denis Ritchie de AT&T Bell
Laboratories que se utilizo para escribir y mantener el sistema operativo UNIX(hasta
que apareció C, el sistema operativo UNIX fue desarrollado por Ken Thompsom en
AT&T bell Laboratories mediante un lenguaje ensamblador o en B). C es un lenguaje
de propósito general que se puede utilizar para escribir cualquier tipo de programa, pero
su éxito y popularidad esta especialmente relacionado con el sistema operativo UNIX
(fue desarrollado como lenguaje de programación de sistemas, es decir, un lenguaje de
programación para escribir sistemas operativos y utilidades del sistema).
C++ además de añadir propiedades de programación muy potente
C++ es un lenguaje de alto nivel.
C++ utiliza el paradigma de programación orientada a objetos.
BCPL  B  C  C++
Orígenes de C++:
C++ nació básicamente como una extensión al lenguaje "C", de los laboratorios Bell de AT&T, el cual fue
desarrollado en 1969-1973 al mismo tiempo que en los mismos laboratorios se desarrollaba el sistema
operativo Unix. C a su vez esta basado o tiene sus bases en el lenguaje "B", desarrollado por Ken Thompson
especialmente pensando en Unix. Y también "B" provenía de BCPL, desarrollado en los 60's por Martin Richards
en
el
MIT.
En 1971 Dennis Ritchie en los laboratorios Bell extendió el lenguaje "B", agregándole tipos, en lo que se llamo
el nuevo "B" (NB-NewB), estas extensiones tuvieron gran influencia de ALGOL68. Después de reestructurar el
lenguaje
y
rescribir
el
compilador
surgió
el
nuevo
lenguaje
denominado
"C".
En 1983, con varias versiones de "C" alrededor del mundo, la ANSI estableció un comité que se encargaría de
publicar
un
estándar
de
"C"
para
1989.
En 1983, Bjarne Stroustrup de Laboratorios Bell creo "C++", el cual fue diseñado también para la plataforma
Unix, y es una mejora del "C", que se enfoco principalmente a agregar características que soportaran el nuevo
(en esa época) paradigma de la orientación a objetos, permitiendo a los programadores mejorar la calidad del
código,
haciendo
mas
fácil
de
crear
código
reutilizable.
En la actualidad existe un comité de la ANSI el cual se encargó de crear un estándar para C++, el cual fue
publicado en 1998 y que continua revisando nuevas mejoras para el lenguaje. A pesar de esto existen
diferentes versiones en una misma plataforma y en diferentes plataformas, las cuales no cumplen por completo
con el estándar ANSI y/o que agregan funcionalidad que no se ha estandarizado, por lo cual hay que tener en
cuenta el compilador y la plataforma en la cual se utilizará C++..Los diseñadores de C++ crearon el lenguaje
con desde el punto de vista de que el programador sabe lo que hace. Los beneficios de esto son pocas
limitaciones en la manera en que un desarrollador ataca un problema y la desventaja que es fácil escribir
código que maneja mal la memoria ocasionando errores y/o que puede ocasionar un "cash" en el sistema
operativo.
Principales características de C++:
C++ es entonces un lenguaje que contiene tanto características de un lenguaje procedural clásico como
construcciones de estilo orientado a objetos, y a diferencia de los primeros lenguajes orientados objetos, los
cuales eran muy lentos e ineficientes, C++ fue pensado para mantener la eficiencia y la rapidez.
C++ es un lenguaje de propósito general que soporta el paradigma orientado a objetos, contiene 74 palabras
reservadas y fundamentalmente soporta la programación orientada a objetos a través de herencia,
polimorfismo parametrizado (plantillas), polimorfismo ad hoc (Coerción de tipos y sobrecarga de funciones) y
encapsulamiento
(al
manejar
clases
y
objetos).
Otras características importantes de C++ son el manejo de excepciones, la biblioteca estándar y la biblioteca
de plantillas estándar, esta ultima provee funcionalidad para el uso y manejo de clases contenedoras como
vectores, strings, conjuntos, maps, entre otros.
Influencias de C++:
Son muchos los lenguajes de los que C++ ha adquirido conceptos. En el siguiente esquema podemos ver estas
influencias:
C:
Programación
Algol
68:
Sobrecarga,
Declaraciones
ML:
CLU:
Módulos
ADA:
Patrones
Simula 67: Clases, Clases derivadas y Funciones virtuales
Influencias de C++:
Las
principales
ventajas
en
Instrucciones
no
con
y
de
C++
Estructurada
separadas
Excepciones
parámetros
excepciones
son:
- Los programas nuevos pueden ser desarrollados en menos tiempo porque se puede rehusar el - código
- Crear y usar nuevos tipos de datos es más fácil que en otros lenguajes como C
- El manejo de memoria en C++ es mas fácil y transparente Los programas tendrán menos - -- - - errores
porque
C++
usa
una
sintaxis
y
chequeo
de
tipos
más
estricto
Orientación
a
objetos.
Sobrecarga
de
operadores
y
funciones
Rapidez
Genera
programas
compactos
- Argumentos de funciones por default
http://www.itq.edu.mx/vidatec/maestros/sis/mlopez/Tutorial/elem.htm
Directivas de Preprocesador.
Instruyen al compilador para que realice ciertas tareas antes de que la compilación del programa se active.
La directiva mas común es "#include" que le indica al preprocesador que incluya otro archivo fuente C
durante el proceso de compilación, y otra típica es "#define" que es una definición de macros. Es una
libertad del programador en C poder crear sus propias librerías con extensión *.h y luego incluirlas de
manera general en sus programas con la directiva #include. Como se ha mencionado anteriormente, los
archivos de las directivas #include contienen la declaraciõn de variables y funciones útiles para los
programas en C, las mas comunes (por que es un total de 450 funciones y macros) se muestran en la sig.
Tabla:
Librería
Conio.h
Descripción
Permite definir coordenadas de una ventana de texto en pantalla y
manipular texto.
Ctype.h
Declara funciones para la comprobación de caracteres.
Float.h
Define constantes relacionadas con la aritmética de punto flotante
Graphic.h Permite la manipulación de Gráficos
Limits.h
Define constantes para el tamaño de los tipos de enteros
Math.h
Declara funciones y macros matemáticas
Setjmp.h
Proporciona una forma de evitar la secuencia normal de llamada y
regreso de funciones.
Signal.h
DA facilidades para manejar condiciones excepcionales que
aparecen durante la ejecución
Stdio.h
Permite leer y escribir datos de archivos y dispositivos
Sdlib.h
Declara funciones para conversión numérica, asignación de memoria.
String,h
Declara funciones para manipular cadenas como arreglos de
caracteres.
Time.h
Declara funciones para la manipulación de fecha y hora.
Alloc.h
Declara funciones para el manejo de la memoria.
Por ejemplo, en el siguiente programa se imprimirán cadena de caracteres en la pantalla:
printf() es una de las funciones de Salida de caracteres que esta definida en #include<stdio.h>, si yo no
incluyera esta librería en el programa habría error en la compilación, y así cada librería *.h tiene definidas
una serie de funciones especificas.
El Archivo de Cabecera Stdio.h
Cuando nos referimos a entrada/salida estándar (E/S estándar) queremos decir que los datos o bien se
están leyendo del teclado, ó bien se están escribiendo en el monitor de video. Como se utilizan muy
frecuentemente se consideran como los dispositivos de E/S por default y no necesitan ser nombrados en
las instrucciones de E/S. Esto le quedará claro a lo largo de este capítulo. El primer código es el siguiente:
#include <stdio.h> /* define entrada/salida estandar */
int main()
{
int c;
printf("Introduzca cualquier caracter y presione enter,"
"X = termina el programa.\n");
do
{
c = getchar(); /* Toma un caracter del teclado */
putchar(c); /* Despliega el caracter en el monitor */
}
while (c != 'X'); /* Mientras que sea diferente de X */
printf("\nFin del programa.\n");
return 0;
}
CABECERAS DEFINIDAS POR C89
<assert.h>
Define la macro assert( ).
<ctype.h>
Manejo de caracteres
<errno.h>
Informes de error
<float.h>
Define valores en coma flotante dependientes de la implementación
<limits.h>
Define varios limites dependientes de la implementación
<locale.h>
Soporte para la localización
<math.h>
Varias definiciones usadas en la biblioteca matemática
<setjmp.h>
Soporte para saltos no locales
<signal.h>
Soporte para manejo de señales
<stdarg.h>
Soporte para listas de argumentos de longitud variable
<stddef.h>
Define algunas constantes de uso ocomún
<stdio.h>
Soporte para E/S de archivos
<stdlib.h>
Declaraciones variadas
<string.h>
Soporte para las funciones de cadenas
<time.h>
Soporte para las funciones de tiempo del sistema
iostream, contiene los operadores básicos para poder usar la entrada/salida estándar (como por
ejemplo el objeto "cout").
• cstdlib, contiene una serie de operadores y funciones estándar de C++ (como por ejemplo la
función "system").
• math, contiene funciones matemáticas en punto flotante para números reales.
• iomanip, contiene los manipuladores de formato para la entrada/salida estándar.