AMPLIACIÓN

En 1973, el lenguaje C se había vuelto tan potente que la mayor parte del kernel Unix, originalmente escrito en el lenguaje ensamblador PDP-11/20, fue reescrita en C. Éste fue uno de los primeros núcleos de sistema operativo implementados en un lenguaje distinto al ensamblador.

La imagen “http://upload.wikimedia.org/wikibooks/es/f/f9/Programacion_C.png” no puede mostrarse, porque contiene errores.

El C de Kernighan y Ritchie

En 1978, Ritchie y Brian Kernighan publicaron la primera edición de El lenguaje de programación C. Este libro fue durante años la especificación informal del lenguaje. El lenguaje descrito en este libro recibe habitualmente el nombre de "el C de Kernighan y Ritchie" o simplemente "K&R C" (

Kernighan y Ritchie introdujeron las siguientes características al lenguaje:

El C de Kernighan y Ritchie es el subconjunto más básico del lenguaje que un compilador debe de soportar. Durante muchos años, incluso tras la introducción del ANSI C, fue considerado "el mínimo común denominador" en el que los programadores debían programar cuando deseaban que sus programas fueran transportables, pues no todos los compiladores soportaban completamente ANSI, y el código razonablemente bien escrito en K&R C es también código ANSI C válido.an

En estas primeras versiones de C, las únicas funciones que necesitaban ser declaradas si se usaban antes de la definición de la función eran las que retornaban valores no enteros. Es decir, se presuponía que una función que se usaba sin declaración previa devolvería un entero.

Dado que el lenguaje C de K&R no incluía ninguna información sobre los argumentos de las funciones, no se realizaba comprobación de tipos en los parámetros de las funciones, aunque algunos compiladores lanzan mensajes de advertencia si se llamaba a una función con un número incorrecto de argumentos.

En los años siguientes a la publicación del C de Kernighan y Ritchie, se añadieron al lenguaje muchas características no oficiales, que estaba soportadas por los compiladores de AT&T, entre otros. Algunas de estas características eran:

- Funciones void y el tipo de datos void *.

- Funciones que retornaban tipos de datos struct o union.

- Asignación de tipos de datos struct.

- Calificador const, que hace que un objeto sea de sólo lectura.

- Una biblioteca estándar, que incorporaba la mayoría de las funcionalidades implementadas por varios desarrolladores de compiladores.

- Enumeraciones.

La imagen “http://www.cepal.info/front/img/01.JPG” no puede mostrarse, porque contiene errores.

ANSI C e ISO C

A finales de la década de 170, C empezó a sustituir a BASIC como lenguaje de programación de microcomputadores predominante. Durante la década de 1980 se empezó a usar en los IBM PC, lo que incrementó su popularidad significativamente. Al mismo tiempo, Bjarne Strustrup empezó a trabajar con algunos compañeros de Bell Labs para añadir funcionalidades de programación orientada a objetos a C. El lenguaje que crearon, llamado C++, es hoy en día el lenguaje de programación de aplicaciones más común en el sistema operativo Microsoft Windows, mientras que C sigue siendo más popular en el entorno Unix. Otro lenguaje que se desarrolló en esa época, Objetive C, también añadió características de programación orientada a objetos a C. Aunque hoy en día no es tan popular como C++, se usa para desarrollar aplicaciones Cocoa para Mac OS X

En 1983, el INEE organizó un comité, X3j11, para establecer una especificación estándar de C. Tras un proceso largo y arduo, se completó el estándar en 1989 y se ratificó como el "Lenguaje de Programación C" ANSI X3.159-1989. Esta versión del lenguaje se conoce a menudo como ANSI C, o a veces como C89 .

En 1990, el estándar ANSI  fue adoptado por la OIE  en el estándar ISO/IEC 9899:1990. Esta versión se conoce a veces como C90. No obstante, "C89" y "C90" se refieren en esencia al mismo lenguaje.

Uno de los objetivos del proceso de estandarización del ANSI C fue producir una extensión al C de Kernighan y Ritchie, incorporando muchas funcionalidades no oficiales. Sin embargo, el comité de estandarización incluyó también muchas funcionalidades nuevas, como prototipos de función, y un preprocesador mejorado. También se cambió la sintaxis de la declaración de parámetros para hacerla semejante a la empleada habitualmente en C++.

La imagen “http://sistemas.unmsm.edu.pe/images/c++.jpg” no puede mostrarse, porque contiene errores.

ANSI C está soportado hoy en día por casi la totalidad de los compiladores. La mayoría del código C que se escribe actualmente está basado en ANSI C. Cualquier programa escrito sólo en C estándar sin código que dependa de un hardware determinado funciona correctamente en cualquier plataforma que disponga de una implementación de C compatible. Sin embargo, muchos programas han sido escritos de forma que sólo pueden compilarse en una cierta plataforma, o con un compilador concreto, esto puede ser debido a diversos motivos:

- La utilización de bibliotecas no estándar, como interfaces gráficos de usuario.

- El uso de compiladores que no cumplen las especificaciones del estándar.

- El uso de tipos de datos suponiendo que tendrán el mismo tamaño u orden de los bits en todas las plataformas.

La macro __STDC__ puede usarse para dividir el código en secciones ANSI y K&R para el compilador.

C99

Tras el proceso de estandarización de ANSI, la especificación del lenguaje C permaneció relativamente estable durante algún tiempo, mientras que C++ siguió evolucionando. Sin embargo, el estándar continuó bajo revisión a finales de la década de 1990, lo que llevó a la publicación del estándar ISO 9899:1999 en 1999. Este estándar se denomina habitualmente "C99". Se adoptó como estándar ANSI en marzo de 2000.

Las nuevas características de C99 incluyen:

- Funciones online.

- Las variables pueden declararse en cualquier sitio, en lugar de poder declararse sólo tras otra declaración o al comienzo de una declaración compuesta.

- Muchos tipos de datos, incluyendo long long int , un tipo de datos booleano, y un tipo complex que representa números complejos.

- Arrays de longitud variable.

- Soporte para comentarios de una línea que empiecen con //, como en BCPL o en C++, característica para la que muchos compiladores habían dado soporte por su cuenta.

- Muchas funciones nuevas, como snprintf()

- Muchos headers nuevos, como stdint.h.

Una consideración importante es que hasta la publicación de este estándar, C había sido mayormente un subconjunto estricto del C++. Era muy sencillo "actualizar" un programa de C hacia C++ y mantener ese código compilable en ambos lenguajes. Sin embargo, el nuevo estándar agrega algunas características que C++ no admite, como por ejemplo los inicializadores estáticos de estructuras. También define al tipo "bool" de una manera que no es exactamente la del C++.

El compilador GCC, entre muchos otros, soportan hoy en día la mayoría de las nuevas características de C99. Sin embargo, este nuevo estándar ha tenido peor acogida entre algunos desarrolladores de compiladores, como Microsoft y Borland, que se han centrado en C++. Brandon Bray, de Microsoft, dijo a este respecto: "En general, hemos visto poca demanda de muchas características de C99. Algunas características tienen más demanda que otras, y consideraremos incluirlas en versiones futuras siempre que sean compatibles con C++."

http://www.wikipedia.org

La imagen “http://upload.wikimedia.org/wikibooks/pt/6/6d/Programar_c_cover.png” no puede mostrarse, porque contiene errores.

 

 

Hosted by www.Geocities.ws

1