Sie sind auf Seite 1von 10

UNIVERSIDAD NACIONAL DE SAN MARTIN Facultad de Ingeniera de Sistemas e Informtica

ALUMNO: Jonattan Torres Quevedo CURSO: Estructura de Datos TEMA: Historia del Lenguaje C++ DOCENTE: Ing. Leif Jhonattan Arvalo Arvalo

FECHA: 01/04/11

TARAPOTO PERU 2011

INTRODUCCION

En la actualidad, el C++ es un lenguaje verstil, potente y general. Su xito entre los programadores profesionales le ha llevado a ocupar el primer puesto como herramienta de desarrollo de aplicaciones. El C++ mantiene las ventajas del C en cuanto a riqueza de operadores y expresiones, flexibilidad, concisin y eficiencia. Adems, ha eliminado algunas de las dificultades y limitaciones del C original. La evolucin de C++ ha continuado con la aparicin de Java, un lenguaje creado simplificando algunas cosas de C++ y aadiendo otras, que se utiliza para realizar aplicaciones en Internet. Hay que sealar que el C++ ha influido en algunos puntos muy importantes del ANSI C, como por ejemplo en la forma de declarar las funciones, en los punteros a void, etc. En efecto, aunque el C++ es posterior al C, sus primeras versiones son anteriores al ANSI C, y algunas de las mejoras de ste fueron tomadas del C++.

HISTORIA DEL LENGUAJE C++


Los orgenes de C++ datan de 1980 cuando se agregaron a C las clases, la verificacin del tipo de los argumentos de las funciones y su conversin, y otros aspectos menores; el lenguaje resultante se denomin 'C con Clases'. La descripcin inicial de 'C con Clases' se realiz en Enero de 1982. Este lenguaje fue creado por el Dr. Bjarne Stroustrup, miembro de Laboratorios Bell de AT&T. Entre 1983 y 1984, 'C con Clases' fue rediseado, extendido y reimplantado; el lenguaje resultante fue denominado C++. El nombre C++ (en espaol se pronuncia C ms ms y en ingls C plus plus) fue acuado por Rick Mascitti en el verano de 1983. El nombre representa la naturaleza evolutiva de las modificaciones con respecto a C. Los caracteres '++' hacen referencia al operador de incremento en C. La expresin C = C + 1 es equivalente a C++. En octubre de 1984, Bjarne Stroustrup realiza la descripcin formal de C++. Despus de refinamientos adicionales, C++ es puesto a disposicin general en 1985 y fue documentado por su propio autor en el libro "The C++ Programming Language", publicado en 1986 por Addison-Wesley. En 1987, se hizo evidente la necesidad de estandarizar a C++ debido al explosivo crecimiento de su empleo. Se comienza a preparar el camino de su formalizacin manteniendo contactos entre los realizadores de compiladores de C++ y los principales usuarios mediante correo ordinario y electrnico (e-mail) y reuniones de cuerpo presente en conferencias sobre C++ y en otros sitios. En diciembre de 1989, por iniciativa de la compaia Hewlett-Packard, el comit ANSI X3J16, tuvo una reunin organizativa a los efectos de estandarizar el C++. En febrero de 1990, Margaret Ellis y Bjarne Stroustrup, ambos miembros de AT&T, escribieron el libro "The Annotated C++ Reference Manual" y publicado por Addison-Wesley. (Este libro ha sido seleccionado por ANSI para servir como documento base para la estandarizacin formal de C++). En junio de 1991, en Lund, Suecia, el comit ANSI unific formalmente los esfuerzos por un C++ estndar, en varias naciones como Francia, Alemania, Dinamarca, Japn, Suecia y Reino Unido bajo los auspicios del Instituto Internacional de Estndares. En marzo de 1992, los comits ANSI X3J16 e ISO WG21 prepararon un borrador de trabajo para un estndar C++. En 1997 se logra llegar a un C++ estndar, ISO/IEC 14882. Bjarne Stroustrup escribe el libro "The C++ Programming Language - 3rd. ed." publicado por Addison Wesley Longman, Inc. La corriente orientadora a objetos le proviene, principalmente, del lenguaje Simula67. C++ es hbrido porque ha juntado dos corrientes de programacin: la programacin procedimental y la programacin orientada a objetos.

VERSIONES EXISTENTES DEL C++


* XCode. * Borland C++ * Codewarrior C++ * Comeau C++ * Cygwin (GNU C++) * MINGW - Minimalist GNU for Windows. * Dev C++ (IDE que usa MinGW) * wx-Dev C++ (IDE basado en Dev C++) * Digital Mars C++ * DJ Delorie's C++ development system for DOS/Windows (GNU C++) * Edison Design Group C++ Front End * Green Hills C++ * HP C++ para UNIX y HP C++ para OpenVMS. * IBM C++ * Intel C++ * The LLVM Compiler Infrastructure. * Mentor Graphics/Microtec Research C++ * Microsoft Visual C++ * Microsoft Visual Studio Express Editions * Paradigm C++ * The Portland Group C++ * SGI C++ * Sun C++ * Sun Studio. * WindRiver's Diab C++ * ZinjaI

El C++ real y el C++ Estndar


Al hablar de lenguajes no privados tan universales como C++, es un Comit Internacional el que decide como es (o debe ser) el lenguaje. Posteriormente los fabricantes de compiladores intentan adecuar sus productos a las directrices del Estndar, aunque en ocasiones incluyen por su cuenta caractersticas y funcionalidades especficas (principalmente en las libreras que acompaan al compilador en forma de herramientas). Esto significa que existen tantas versiones de C++ como plataformas distintas, ya que existen compiladores C++ para virtualmente cada combinacin de hardware y Sistema Operativo conocidos. Las diferencias entre estos C++ reales y el C++ Estndar (o de Stroustrup), es por supuesto variable en funcin del grado de adecuacin que haya logrado cada fabricante. Adems, el Estndar es bastante tolerante y permite a los implementadores decidir por su cuenta ciertas cuestiones de detalle. Todos estos factores hacen que en ocasiones, dos compiladores distintos aplicados al mismo cdigo conduzcan a resultados diferentes. Por supuesto, no nos referimos a que 2 + 2 dejen de ser 4, sino a errores y avisos de cosas que son o no permitidas en segn qu plataforma. A las consideraciones anteriores hay que aadir que los ordenadores son finitos, lo que exige que las aplicaciones que corren en ellos sean necesariamente finitas. En consecuencia, los fabricantes de compiladores se ven obligados a imponer ciertas condiciones y lmites a sus productos. Por ejemplo: el Estndar dice que los bloques, zonas de programa englobadas en llaves { }, pueden ser anidados (bloques dentro de otros bloques). Sin embargo las implementaciones pueden sealar un lmite mximo de anidamiento para estos casos. Naturalmente los lmites y condiciones pueden variar para cada compilador. El Estndar solo exige que estas limitaciones estn debidamente documentadas.

VENTAJAS DEL C++


- Lenguaje de programacin orientado a objetos. - Lenguaje muy didctico, gracias a este lenguaje puedes aprender muchos otros lenguajes con gran facilidad, como C#, Java, Visual Basic, Javascript, PHP, entre otros. - Es muy potente en lo que se refiere a creacin de sistemas complejos, un lenguaje muy robusto. - Actualmente, puede compilar y ejecutar cdigo de C, ya viene con libreras para realizar esta labor. - Es un lenguaje muy empleado, existen muchos tutoriales en lnea, libros, cdigos fuentes abiertos... hay material de sobra y basta para aprender lo necesario y mucho ms con este lenguaje. - Existen muchos algoritmos cuyo pseudocdigo se encuentra ya desarrollado en C++, de manera que puedes tomarlo y amoldarlo a tu solucin (porque el que veas un fragmento de cdigo no asegura que sea correcto al 100%).

DESVENTAJAS DEL C++


- Uso de DLLs (libreras dinmicas) muy complejo. Java y .Net han evolucionado estos conceptos manipulando las DLLs mediante los frameworks que proveen. En cambio, en C++ el desarrollador debe encargarse de cargar y liberar de memoria estas libreras, y correr los riesgos por el manejo de esta memoria. - Elaborar un sistema en C++ es como construir un rascacielos: tiene buen soporte y es robusto, pero si existen errores en los pisos inferiores toda la parte superior se viene abajo terriblemente. - Manejo de punteros y memoria respecto a ello. Claro, esta tambin es una gran ventaja porque permite un mejor control de la memoria y una buena administracin de recursos de computadora, pero la inexperiencia de los desarrolladores o la prdida de costumbre con este tipo de variables (sobre todo cuando son dobles o triples punteros, inclusive de mayor orden) los lleva al desastre. - No es recomendable para desarrollo de pginas Web. - Existen muchos entornos de programacin para C++. No existen estndares para ello. De manera que puedes encontrar C++ para Unix/Linux, C++ para Windows, C++ para MacOS, y asi indistintamente. Adems, en cada SO encuentras diferentes IDEs de desarrollo, y tambin encuentras IDEs para desarrollo de aplicaciones grficas como Anjuta, Qt para Unix/Linux, Borland C++ Builder y Visual Studio C++ para Windows...

DIFERENCIA ENTRE EL C Y EL C++


1.- Aunque C++ es un superconjunto de C, existen algunas diferencias entre los dos. En primer lugar, en C cuando una funcin no toma parmetros, su prototipo tiene la palabra void. Sin embargo en C++ void no es necesario(opcional). Prototipo en C: Prototipo en C++: char f1(void); char f1();

2.- Otra diferencia entre C y C++ es que en un programa de C++ todas las funciones deben estar en forma de prototipo, en C los prototipos se recomiendan, pero son opcionales. Tambin si una funcin de C++ es declarada para devolver un valor obligatoriamente la sentencia return debe devolver un valor, en C no es necesario que se devuelva.

3.- Otra diferencia es el lugar donde se declaran las variables locales. En C, deben ser declaradas solo al principio del bloque, mientras que en C++ las variables se pueden declarar en cualquier punto. Aunque es conveniente realizarlo siempre al comienzo de la funcin. 4.- C es un lenguaje libre estandarizado por ISO MUY PEQUEO que admite programacin estructurada (la de toda la vida), nada ms. til en programacin de microchips, sistemas operativos, drivers y programacin web. 5.- C++ es un lenguaje libre estandarizado por ISO MUY GRANDE, que admite: Programacin estructurada (la de toda la vida), la totalidad de la POO (objetos, herencia simple, herencia mltiple, polimorfismo, upcasting, downcasting, RTTI, interfaces, clases abstractas, clases amigas, operadores, sobrecarga... y mil cosas ms avanzadas), programacin genrica (plantillas, STL, conceptos de contenedores, estructuras de datos genricas, <b>metaprogramacin</b>... es una programacin que no dispone ningn otro lenguaje mayoritario por el momento)... y otras caractersticas ms avanzadas como los punteros inteligentes, programacin lambda, programacin "fsica"... Tambin se usa como programacin por eventos (MFC, Qt, Gtk y otras GUIs).

LIBRERIAS DEL LENGUAJE C++


En lo que respecta al lenguaje C++, existen dos tipos fundamentales de libreras: ESTTICAS y DINMICAS, que aunque comparten el mismo nombre genrico "librera", utilizan mecanismos distintos para proporcionar su funcionalidad al ejecutable. En ambos casos es costumbre, que junto a las libreras propiamente dichas (ficheros .lib, .a, .dll etc), se incluya un fichero .h denominado "de cabecera", porque es tradicin utilizar las primeras lneas del programa para poner las directivas #include que los incluirn en el fuente durante la fase de pre-proceso. Este fichero contiene las declaraciones de las entidades contenidas en la librera, as como las macros y constantes predefinidas utilizadas en ella, de forma que el programador solo tiene que incluir el correspondiente fichero .h en su aplicacin para poder utilizar los recursos de la librera en cuestin (recuerde que en C/C++ es imprescindible incluir la declaracin de cualquier funcin o clase antes de su utilizacin). Este sistema tiene la ventaja adicional de que proporciona al usuario la informacin mnima para su uso. Es decir, la "interfaz" de las funciones o clases que utilizar. En el caso de funciones esto se concreta en el prototipo); en el caso de clases, en la especificacin de sus mtodos y propiedades pblicas.

Libreras estticas
Denominadas tambin libreras-objeto, son colecciones de ficheros objeto (compilados) agrupados en un solo fichero de extensin .lib, .a, etc. junto con uno o varios ficheros de cabecera (generalmente .h).

Libreras dinmicas
Otra forma de aadir funcionalidad a un ejecutable son las denominadas libreras de enlazado dinmico (repasar en 1.4.4 el significado de "enlazado dinmico"), generalmente conocidas como DLLs, acrnimo de su nombre en ingls ("Dynamic Linked Library"). Estas libreras se utilizan mucho en la programacin para el SO Windows. Este Sistema contiene un gran nmero de tales libreras de terminacin .DLL, aunque en realidad pueden tener cualquier otra terminacin .EXE, .FON, .BPI, .DRV etc. Cualquiera que sea su terminacin, de forma genrica nos referiremos a ellas como DLLs, nombre por el que son ms conocidas.

Diferencias: Librera Esttica "versus" Librera Dinmica


Las diferencias ms relevantes de las libreras dinmicas respecto a las estticas son fundamentalmente dos:

Las libreras estticas quedan incluidas en el ejecutable, mientras las dinmicas son ficheros externos, con lo que el tamao de la aplicacin (nuestro ejecutable) es mayor en el primer caso que en el segundo. Esto puede ser de capital importancia en aplicaciones muy grandes, ya que el ejecutable debe ser cargado en memoria de una sola vez [3]. Las libreras dinmicas son ficheros independientes que pueden ser invocados desde cualquier ejecutable, de modo que su funcionalidad puede ser compartida por varios ejecutables. Esto significa que solo se necesita una copia de cada fichero de librera (DLL) en el Sistema. Esta caracterstica constituye la razn principal de su utilizacin, y es tambin origen de algunos inconvenientes, principalmente en sistemas como Windows en los que existen centenares de ellas.

Librera Estndar C++


Para poner un poco de orden, el Estndar C++ define la denominada Librera Estndar [3] que debe acompaar a cada implementacin del compilador que se adhiera al estndar. Es decir: la norma determina cuales son, como se llaman y como se utiliza este conjunto de algoritmos que deben acompaar (como mnimo) a cada implementacin del compilador que quiera llamarse "Estndar". La ltima versin, ISO/IEC 14882 del ao 1998, especifica que se compone de 32 ficheros de cabecera de nombres fijos y conocidos agrupados segn la funcionalidad de los algoritmos. Son los siguientes: Ficheros <algorithm> <bitset> <complex> <deque> <exception> <fstream> <iomanip> <ios> <iosfwd> <iostream> <istream> <iterator> Funcionalidad/funciones Parte de la STL que describe los algoritmos Parte de la STL relativa a contenedores tipo bitset. Set de valores booleanos. Parte de la librera numrica de la STL relativa a los complejos. Parte de la STL relativa a contenedores tipo deque; un tipo de colas: "Doubleended-queue" . Parte de la librera de diagnstico relativa al manejo de excepciones Flujos hacia/desde ficheros. Manipuladores. Supreclases para manejo de flujos de E/S. Contiene declaraciones adelantadas de todas las plantillas de flujos y sus typedefs estndar. Por ejemplo ostream. Parte del a STL que contiene los algoritmos estndar de E/S. Algoritmos estndar de flujos de entrada. Parte de la STL relacionada con iteradores, un tipo de puntero que permite utilizar los algoritmos de la Librera con las estructuras de datos representadas por los contenedores.

<functional> Parte de la STL relativa a Objetos-funcin

<limits> <list> <locale> <map> <memory> <new> <numeric> <ostream> <queue> <set> <sstream> <stack> <stdexcept>

Descripcin de propiedades dependientes de la implementacin que afectan a los tipos fundamentales. Parte de la STL relativa a contenedores tipo list; listas doblemente enlazadas. Parte de la STL relativa a la internacionalizacin. Parte de la STL relativa a contenedores tipo map . Utilidades relativas a la gestin de memoria, incluyendo asignadores y punteros inteligentes (auto_ptr). Manejo de memoria dinmica . Parte de la librera numrica de la STL relativa a operaciones numricas. Algoritmos estndar para los flujos de salida. Parte de la STL relativa a contenedores tipo queue; colas de objetos. Parte de la STL relativa a contenedores tipo set. Flujos hacia/desde cadenas alfanumricas. Parte de la STL relativa a contenedores tipo stack; pilas de objetos. Parte de la STL relativa a las clases de las que derivan los objetos lanzados por las excepciones ocasionadas en los algoritmos de la propia STL y otras expresiones. Estas clases son utilizadas para reportar errores detectados durante runtime. Los usuarios tambin pueden utilizar excepciones para reportar errores en sus propios programas.

<streambuf> Parte de la STL relativa al Almacenamiento de flujos de E/S ("Stream buffers"). Define los tipos que controlan la capa de transporte. <string> <typeinfo> <utility> <valarray> <vector> Parte de la STL relativa a contenedores tipo string; una generalizacin de las cadenas alfanumricas para albergar cadenas de objetos. Mecanismo de identificacin de tipos en tiempo de ejecucin. Parte de la STL que contiene elementos auxiliares como operadores y pares (pairs). Parte de la librera numrica de la STL relativa a manejo de matrices numricas () Parte de la STL relativa a los contenedores tipo vector; una generalizacin de las matrices unidimensionales C/C++

Es digno de mencin que aunque generalmente las libreras no aportan ninguna caracterstica al lenguaje (se supone que son utilidades auxiliares que no forman parte del lenguaje propiamente dicho), una pequea porcin de la Librera Estndar C++ s aporta caractersticas que se consideran pertenecientes a este, de forma que deben estar presentes los ficheros de cabecera correspondientes si se desea usarlas.

CONCLUSION

C++ es un potente lenguaje de programacin que apareci en 1980, continuando con las ventajas, flexibilidad y eficacia del C. Es un lenguaje de programacin que permite programar desde sistemas operativos, compiladores, aplicaciones de bases de datos, procesadores de texto, juegos, entre otras cosas. C++ ha ido evolucionando y ha contribuido con la aparicin de Java, simplificando instrucciones de C++, aadiendo nuevas y apareciendo nuevas funcionalidades para realizar aplicaciones utilizables desde Internet. Este lenguaje no es un lenguaje orientado a objetos puro, porque nace como una evolucin de otro anterior. Concretamente del lenguaje C, y desde su nacimiento fue un lenguaje que crearon programadores para utilizarlo ellos mismos. Por esta razn se saltaron algunos aspectos como el diseo, imagen, etc. de este lenguaje.

BIBLIOGRAFIA

http://jorgesaavedra.wordpress.com/2006/12/09/breve-historia-de-c-c-c/ http://informatica-full2.blogspot.com/2009/06/historia-del-lenguaje-c.html http://www.google.com.pe/search?q=HISTORIA+DEL+C%2B%2B&hl=es&sa=G&prmd= ivns&tbs=tl:1&tbo=u&ei=SfGVTe_qGMq0QGj5PnpCw&oi=timeline_result&ct=title&resnum=11&ved=0CGAQ5wIwCg http://www.hackhispano.com/foro/showthread.php?t=28833 http://www.zator.com/libreriasC.htm http://www.mailxmail.com/curso-lenguaje-c-guia-programadores/diferencias-c-c http://www.forosdelweb.com/f96/diferencia-lenguaje-c-c-c-371462/ http://www.chw.net/foro/lenguajes-de-programacion-f22/143579-diferencias-entre-c-y-cen-palabras-simples.html

Das könnte Ihnen auch gefallen