Comunidad MUNDOTE



Autor Tema: Historia de C y diferencias entre C y C++  (Leído 4616 veces)

king_arthur

  • Visitante
Historia de C y diferencias entre C y C++
« : 29 de julio de 2006, 05:45:41 pm »
Antecedentes Historicos del 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
b   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.

El prop?sito de C++ es extender a C para proporcionar ocultamiento de información y un estilo de programación que haga ?nfasis en las Clases de Objetos.

La compatibilidad con C, la eficiencia y la verificación estricta en tiempo de compilación fueron las metas principales para el dise?o de C++:

    * La compatibilidad con C permite que el c?digo fuente existente en C contin?e utiliz?ndose. La mayor?a de las implementaciones de C++ son incluso "compatibles en ligado " con C, lo cual significa que un c?digo en C++ compilado por separado puede ligarse con acervos en C ya existentes, sin necesidades de compilar de nuevo los acervos.

    * 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:

    * 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 una constante de car?cter se eleva de forma autom?tica a un entero. En C++ esto no sucede.

    * 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 uso en C++ de la cabecera IOSTREAM.H y todas de sus funciones que en C no se manejan.

    * 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.

    * El uso de la cabecera COMPLEX.H para el manejo de n?meros complejos.

    * El uso en C++ de la clase BCD. Otra manera de representar un numero real es la de usar la t?cnica de Decimal Codificado en Binario o BCD. Su principal ventaja es que no se producen errores de redondeo, esto es mediante la cabecera BCD.H

    * 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.

Las 3 mejoras significativas de Turbo C++ son:

    * El entorno Interactivo de Desarrollo. Que permite al programador editar, compilar, enlazar y depurar en el mismo entorno sin necesidad de conmutar del editor al compilador y al depurador. El programador puede ajustar la compilación y el enlazado a trav?s de opciones del men?, en vez de memorizar las opciones de compilación de las l?neas de ordenes.

    * VROOMM. Gestor de Memoria VROOMM (Virtual Runtime Object Oriented Memory Manager), que es un sofisticado gestor de superposición de memoria que permite a los programadores crear programas de tama?o superior a los 640 Kb.

   * Soporte del lenguaje Ensamblador. Al admitir pseudoregistros y tipo interrupciones

Diagrama mas Expl?cito de los antecesores de C y C++


?Por usar C o C++?

    * Es un lenguaje de Alto nivel.

    * Tienen una escritura Elegante, es decir, programas legibles y entendibles.

    * Tiene programas portables a otros sistemas.

    * Excelentes compiladores disponibles.

    * La compilación es r?pida y peque?a.

    * Sus caracter?sticas de C permiten acceder al control del Hardware.

    * Durante la programación se pueden considerar detalles de bajo nivel.

Espec?ficamente el compilador de Borland C++:

    * Una magnifica interface con el usuario..

    * Se pueden configurar la mayor?a de sus caracter?sticas para fomentar h?bitos.

    * Los errores de sintaxis son inmediatamente detectados con el Editor.

    * El editor emula a los populares editores de texto.

    * Desde el editor tu tienes el control del depurador.

    * 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)

Top de la Pagina

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.

?QUE REQUERIMIENTOS DE SISTEMA NECESITO?, Una PC 286 o superior, MS-DOS 3.31 o posterior, 1 MB en RAM, un DD con un minimo de espacio libre de 5 Mb.

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.

Fuente:http://www.itq.edu.mx/vidatec/maestros/sis/mlopez/Tutorial/int.htm

Espero les sirva ;)
King_Arthur





« Última Modificación: 29 de julio de 2006, 05:47:23 pm por king_arthur »

 

Copyright © Diseño Staff Mundote