Aprendiendo Desarrollo

Prefacio de la primera edición

C es un lenguaje de programación de propósito general que ofrece como ventajas economía de expresión, control de flujo y estructuras de datos modernos y un rico conjunto de operadores. Además, C no es un lenguaje de “muy alto nivel” ni “grande”, y no está especializado en alguna área especial de aplicación. Pero su ausencia de restricciones y su generalidad lo hacen más conveniente y efectivo para muchas tareas que otros lenguajes supuestamente más poderosos. Originalmente, C fue diseñado para el sistema operativo UNIX y Dennis Ritchie lo implantó sobre el mismo en la DEC PDP-11. El sistema operativo, el compilador de C y esencialmente todos los programas de aplicación de UNIX (incluyendo todo el sofware utilizado para preparar este libro) están escritos en C. También existen compiladores para la producción en otras máquinas, incluyendo la IBM System/370, la Honeywell 6000 y la Interdata 8/32. El lenguaje C no está ligado a ningún hardware o sistema en particular y es fácil escribir programas que correrán sin cambios en cualquier máquina que maneje C.

La finalidad de este libro es ayudar al lector a aprender cómo programar en C. Contiene una introducción general para hacer que los nuevos usuarios se inicien lo más pronto posible, capítulos separados sobre cada característica importante y un manual de referencia. L a mayoría de las exposiciones están basadas en la lectura, escritura y revisión de ejemplos, más que en el simple establecimiento de reglas. En su mayoría, los ejemplos son programas reales y completos, no fragmentos aislados. Todos los ejemplos han sido probados directamente a partir del texto, el cual está en forma legible para la máquina. Además de demostrar cómo hacer un uso efectivo del lenguaje, donde ha sido posible, tratamos de ilustrar algoritmos útiles y principios de buen estilo y diseño.

El libro no es un manual de introducción a la programación; se supone en él familiaridad con los conceptos básicos de programación, como variables, proposiciones de asignación, ciclos y funciones. No obstante, un programador novato deber ser capaz de leer y obtener los conceptos del lenguaje, aunque le ayudaría la cooperación de un colega más experimentado.

De acuerdo con nuestra experiencia, C ha demostrado ser un lenguaje agradable, expresivo y versátil para una amplia variedad de programas. Es fácil de aprender y se obtienen mejores resultados a medida que aumenta nuestra experiencia con él. Deseamos que este libro le ayude al lector a usarlo correctamente.

Las críticas y sugerencias de muchos amigos y colegas han aumentado muchísimo los conceptos de este libro y ha sido un placer escribirlo. En particular nuestro agradecimiento a Mike Bianchi, Jim Blue, Stu Feldman, Doug Mcllroy, Bill Roome, Bob Rosin y Larry Rosler que leyeron cuidadosamente las numerosas versiones. También agradecemos Al Aho, Steve Bourne, Dan Dvorak, Chuck Haley, Debbie Haley, Marión Harrris, Rick Holt, Steve Johnson, John Mashey, Bob Mitze, Ralph Muha, Peter Nelson, Elliot Pinson, Bill Plauger, Jerry Spivack, Ken Thompson y Peter Weinberger por sus valiosos comentarios a través de varias etapas; a Mike Lesk y Joe Ossanna, por su invaluable ayuda en la impresión.

Brian W. Kernighan
Dennis M. Ritchie