Ipsissima verba Jose Miguel:
> Gracias a todos por vuestros consejos, al final me he decidido por
> EL LENGUAJE DE PROGRAMACION C, ya lo tengo pedido y la semana que
> viene me llegara, aunque mi intencion es comprar todos los que me
> habeis recomendado, pero roma no se construy� en dos dias, asi que
> uno detr�s de otro ;-)
Es una buena elecci�n. Sin embargo nota que (a reserva de que alguien
me corrija, cosa que le agradecer�) ese libro es muy viejo y no
describe un C moderno precisamente, sino el dialecto original que en
el medio se conoce como "K&R".
En general nadie usa ya la sintaxis de K&R, pero todos los
compiladores que conozco la entienden. Y la visceversa no
necesariamente aplica (maldito %$/#& aborto de compilador de
HP-UX...).
El C moderno, usado esencialmente por el mundo entero y su perro, es
algo cercano al lenguaje definido en el documento ANS X3.159-1989,
ratificado en Diciembre de 1989 ("ANSI C"). Digo "cercano" porque no
faltan las "extensiones" (�cof! �cof! *Microsoft* �cof!), las
implementaciones deficientes y las interpretaciones "creativas" del
est�ndar (que adem�s no ayuda mucho, pues deja demasiadas cosas a
criterio de los implementadores, EMO). �sta es una de las principales
razones detr�s de la existencia de monstruosidades como autoconf.
(Por cierto, en este mismo hilo, Tresseth anot� "ANSI C" en su
recomendaci�n del libro de K&R, cosa que me result� curiosa. �Hay una
edici�n actualizada del libro de K&R, entonces?)
El C "post-moderno" es el definido en el documento ISO/IEC 9899,
adoptado por la ISO en 1999 ("C99"). Muchos compiladores a�n se
atragantan con las extensiones (e.g. variables autom�ticas con "scope"
de bloque, no s�lo de funci�n; arreglos de tama�o variable; etc.) , y
hay bastante c�digo ANSI all� afuera que no es portable a C99 con solo
recompilarlo (C99 agrega restricciones un tanto rococ� en lo que toca
a los "casts" de apuntadores, por ejemplo). GCC 3 se apega bastante,
si no es que del todo, a ese est�ndar.
En fin. Nada de esto es muy importante, realmente, puesto que los
conceptos y la mayor parte de la sintaxis siguen siendo los mismos.
Las diferencias son relativamente superficiales. E.g. la definici�n
de una funci�n en C K&R:
int funcion(a, b)
int a;
int b;
{
....
}
Y en C ANSI/ISO:
int funcion(int a, int b)
{
...
}
Cosas por el estilo.
Mi recomendaci�n es que, adem�s del libro de K&R te consigas una copia
del est�ndar C99. Eso no es necesariamente f�cil, porque no est�
disponible al p�blico general, te lo venden (hazme el fabr�n cavor).
Yo uso uno de los �ltimos "drafts" que s� se hicieron p�blicos. Si te
interesa, te lo env�o.
El est�ndar es denso y muy dif�cil de "parsear" por mortales vulgares
y silvestres como nosotros. Pero yo creo que usando el K&R como gu�a,
y el C99 como referencia, estar�s muy bien armado para aprender y
entender C.
Que te sea leve.
-CR
--
Ceterum censeo: SCO delenda est.