Download historia del c++
Document related concepts
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.