





EL LENGUAJE C
by Ulise Barria 9-737-729
En 1978, Ritchie y Brian Kernighan publicaron la primera edición de El lenguaje de programación C, también conocido como La biblia de 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" (La segunda edición del libro cubre el estándar ANSI C, descrito más abajo).
Kernighan y Ritchie introdujeron las siguientes caracterÃsticas al lenguaje:
El tipo de datos struct.
El tipo de datos long int.
El tipo de datos unsigned int.
Los operadores =+ y =- fueron sustituidos por += y -= para eliminar la ambigüedad sintáctica de expresiones como i=-10, que se podrÃa interpretar bien como i =- 10 o bien como i = -10.
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.
En las primeras versiones del lenguaje, la definición de funciones se hacÃa mediante un 'prototipo de función' (function prototype), el cual indicaba al compilador el tipo de retorno de la función. Aunque este método tiene una gran desventaja respecto al nuevo, debido a que no comprueba el número ni el tipo en la lista de argumentos; en otras palabras, es mucho más fácil cometer errores al hacer una llamada a una función con argumentos incorrectos.
Ejemplo del "viejo estilo":
int power(); /* Podria haberse omitido (*) */
power()
int a, b;
{
int n;
for (n = 1; b > 0; --b)
n *= a;
return n;
}
Ejemplo de la nueva definición:
int power(int a, int b)
{
int n;
for (n = 1; b > 0; --b)
n *= a;
return n;
}
(*) Por defecto, el tipo de retorno en C es int, por lo que la declaración entera int power(); podrÃa haberse omitido.
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 (en lugar de punteros).
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.