Esta pregunta intenta recopilar una lista mantenida por la comunidad de libros de calidad en elC lenguaje de programación, dirigido a varios niveles de habilidad.
C es un lenguaje de programación complejo que es difícil de aprender sobre la marcha leyendo tutoriales en línea. Un libro completo es a menudo la mejor manera de aprender el idioma, y encontrar un buen libro es el primer paso. Es importante evitar los libros mal escritos y, lo que es más importante, los libros que contienen errores técnicos graves.
Sugiera modificaciones a la respuesta aceptada para agregar libros de calidad, con un nivel de habilidad aproximado y una breve descripción de cada libro. ( Tenga en cuenta que la pregunta está bloqueada, por lo que no se aceptarán nuevas respuestas. Se mantiene una sola respuesta con la lista )
No dude en debatir las opciones de libros, la calidad, los títulos, los resúmenes, los niveles de habilidad y cualquier otra cosa que vea que esté mal. Los libros que la comunidad C considera satisfactorios aquí permanecerán en la lista; El resto se eliminará regularmente.
Para los libros que tienen reseñas de la Asociación de Usuarios de C y C ++ (ACCU), se debe agregar un enlace a esas reseñas junto con el libro.
Ver también:
- Otros recursos relacionados con C en el C etiqueta wiki
- Una lista similar para c ++: La guía y lista definitiva de libros de C ++
Esta pregunta se discutió en Meta como parte de la auditoría de preguntas eliminadas 2018 .
El consenso fue mantenerlo intacto y mantenido activamente.
Respuestas:
Advertencia
Esta es una lista de libros aleatorios de diversa calidad. En opinión de algunas personas (con alguna justificación), ya no es una lista de libros recomendados. Algunos de los libros enumerados contienen declaraciones descaradamente incorrectas o enseñan prácticas incorrectas / dañinas. Las personas que conocen estos libros pueden editar esta respuesta para ayudar a mejorarla. Ver La lista de libros C se ha vuelto loca. ¿Qué hacer con ello? , y también Auditoría de preguntas eliminadas 2018 .
Referencia (todos los niveles)
El lenguaje de programación C (2ª edición) - Brian W. Kernighan y Dennis M. Ritchie (1988). Sigue siendo una buena, breve pero completa introducción a C (C90, no C99 o versiones posteriores), escrita por el inventor de C. Sin embargo, el lenguaje ha cambiado y se ha desarrollado un buen estilo de C en los últimos 25 años, y hay partes de El libro que muestra su edad.
C: A Reference Manual (5th Edition) - Samuel P. Harbison and Guy R. Steele (2002). Un excelente libro de referencia sobre C, hasta C99 inclusive. No es un tutorial, y probablemente no sea apto para principiantes. Es genial si necesita escribir un compilador para C, como los autores tuvieron que hacer cuando comenzaron.
C Pocket Reference (O'Reilly) - Peter Prinz y Ulla Kirch-Prinz (2002).
Las preguntas frecuentes de comp.lang.c - Steve Summit. Sitio web con respuestas a muchas preguntas sobre C.
Varias versiones de los estándares del lenguaje C se pueden encontrar aquí . Existe una versión en línea del borrador del estándar C11 .
El nuevo estándar C - una referencia anotada (PDF gratuito) - Derek M. Jones (2009). El "nuevo estándar" al que se hace referencia es el antiguo estándar C99 en lugar del C11.
Justificación de la norma C99 .
Principiante
Programación en C: un enfoque moderno (2ª edición) - KN King (2008). Un buen libro para aprender C.
Programación en C (4a edición) - Stephen Kochan (2014). Una buena introducción general y tutorial.
C Primer Plus (5a edición) - Stephen Prata (2004)
Un libro sobre C - Al Kelley / Ira Pohl (1998).
The C Book (Gratis en línea) - Mike Banahan, Declan Brady y Mark Doran (1991).
C: Cómo programar (octava edición) - Paul Deitel y Harvey M. Deitel (2015). Muchos buenos consejos y mejores prácticas para principiantes. El índice es muy bueno y sirve como una referencia decente (solo que no es completamente completa y muy superficial).
Head First C - David Griffiths y Dawn Griffiths (2012).
Beginning C (5th Edition) - Ivor Horton (2013). Muy buena explicación de punteros, utilizando muchos programas pequeños pero completos.
Sams Teach You C en 21 días - Bradley L. Jones y Peter Aitken (2002). Muy buenas cosas introductorias.
Programación de aplicaciones en ANSI C - Richard Johnsonbaugh y Martin Kalin (1996).
Intermedio
Modern C - Jens Gustedt (2017 1st Edn; 2020 2nd Edn). Cubre C en 5 niveles (encuentro, conocimiento, cognición, experiencia, ambición) desde el principio C hasta el avanzado C. Cubre C11 y C17, incluidos hilos y acceso atómico, que pocos otros libros hacen. No todos los compiladores reconocen estas características en todos los entornos.
C Interfaces e implementaciones - David R. Hanson (1997). Proporciona información sobre cómo definir un límite entre una interfaz y la implementación en C de forma genérica y reutilizable. También demuestra este principio al aplicarlo a la implementación de mecanismos comunes y estructuras de datos en C, como listas, conjuntos, excepciones, manipulación de cadenas, asignadores de memoria y más. Básicamente, Hanson tomó todo el código que había escrito como parte de la construcción de Icon y lcc y sacó los mejores fragmentos en una forma que otras personas podrían reutilizar para sus propios proyectos. Es un modelo de buena programación en C que utiliza técnicas de diseño modernas (incluida la abstracción de datos de Liskov), que muestra cómo organizar un gran proyecto en C como un conjunto de bibliotecas útiles.
El libro del rompecabezas C - Alan R. Feuer (1998)
The Standard C Library - PJ Plauger (1992). Contiene el código fuente completo para una implementación de la biblioteca estándar C89, junto con una extensa discusión sobre el diseño y por qué el código está diseñado como se muestra.
Siglo XXI C: C Consejos de la nueva escuela - Ben Klemens (2012). Además del lenguaje C, el libro explica gdb, valgrind, autotools y git. Los comentarios sobre el estilo se encuentran en la última parte (Capítulo 6 y más adelante).
Algoritmos en C - Robert Sedgewick (1997). Le da una idea real de la implementación de algoritmos en C. Muy lúcido y claro; probablemente hará que quieras tirar todos tus otros libros de algoritmos y conservar este.
Punteros sobre C - Kenneth Reek (1997).
Punteros en C - Naveen Toppo y Hrishikesh Dewan (2013).
Resolución de problemas y diseño de programas en C (6ª edición) - Jeri R. Hanly y Elliot B. Koffman (2009).
Estructuras de datos: un enfoque avanzado con C - Jeffrey Esakov y Tom Weiss (1989).
C desatado - Richard Heathfield, Lawrence Kirby, et al. (2000) No es ideal, pero vale la pena que los programadores intermedios practiquen problemas escritos en este libro. Este es un buen enfoque tipo libro de cocina sugerido por los colaboradores de comp.lang.c.
Experto
Programación experta en C: Secretos profundos en C - Peter van der Linden (1994). Mucha información interesante e historias de guerra del equipo de compilación de Sun, pero un poco anticuado en algunos lugares.
Programación avanzada de C por ejemplo - John W. Perry (1998).
Programación avanzada en el entorno UNIX - Richard W. Stevens y Stephen A. Rago (2013). Descripción completa de cómo usar las API de Unix desde el código C, pero no tanto sobre la mecánica de la codificación C.
Sin categorizar
Essential C (PDF gratuito) - Nick Parlante (2003). Tenga en cuenta que esto describe el lenguaje C90 en varios puntos ( p . Ej. , Al analizar los
//
comentarios y la ubicación de declaraciones de variables en puntos arbitrarios del código), por lo que debe tratarse con cierta precaución.C Preguntas frecuentes sobre programación: Preguntas frecuentes - Steve Summit (1995). Este es el libro del sitio web mencionado anteriormente. No cubre C99 o los estándares posteriores.
C en pocas palabras - Peter Prinz y Tony Crawford (2005). Excelente libro si necesita una referencia para C99.
Funcional C - Pieter Hartel y Henk Muller (1997). Enseña prácticas modernas que son invaluables para la programación de bajo nivel, con concurrencia y modularidad en mente.
La práctica de la programación - Brian W. Kernighan y Rob Pike (1999). Un muy buen libro para acompañar a K&R. Utiliza C ++ y Java también.
C Trampas y trampas por A. Koenig (1989). Muy bien, pero el estilo C es anterior al estándar C, lo que lo hace menos recomendable en estos días.
Algunos han abogado por la eliminación de 'Trampas y trampas' de esta lista porque ha atrapado a algunas personas a cometer errores; otros continúan defendiendo su inclusión. Quizás debería considerarse como un libro "experto" porque requiere un conocimiento moderadamente extenso de C para comprender lo que ha cambiado desde su publicación.
Crea tu propia lista - Daniel Holden (2014). Una forma divertida de aprender C.
MISRA-C : estándar de la industria publicado y mantenido por la Motor Industry Software Reliability Association. Cubiertas C89 y C99.
Aunque este no es un libro como tal, muchos programadores recomiendan leer e implementar la mayor cantidad posible. MISRA-C fue originalmente pensado como pautas para aplicaciones críticas de seguridad en particular, pero se aplica a cualquier área de aplicación donde se desee un código C estable y libre de errores (¿quién no quiere menos errores?). MISRA-C se está convirtiendo en el estándar de facto en toda la industria integrada y se está volviendo cada vez más popular incluso en otras ramas de programación. Hay (al menos) tres publicaciones de la norma (1998, 2004 y la versión actual de 2012). También hay un documento de Pautas de cumplimiento de MISRA de 2016, y MISRA C: 2012 Enmienda 1 - Pautas de seguridad adicionales para MISRA C: 2012 (publicado en abril de 2016).
Tenga en cuenta que algunas de las restricciones en las reglas de MISRA no son apropiadas para cada contexto. Por ejemplo, la directiva 4.12 establece "No se utilizará la asignación de memoria dinámica". Esto es apropiado en los sistemas integrados para los que están diseñadas las reglas MISRA; No es apropiado en todas partes. (Los compiladores, por ejemplo, generalmente usan la asignación de memoria dinámica para cosas como tablas de símbolos, y prescindir de la asignación de memoria dinámica sería difícil, si no absurdo).
Listas archivadas de libros revisados por ACCU sobre Beginner's C (116 títulos) de 2007 y Advanced C (76 títulos) de 2008. La mayoría de estos ya no parecen estar en el sitio principal, y no puede navegar por tema de todas formas.
Advertencias
Tenga cuidado con los libros escritos por Herbert Schildt . En particular, debe mantenerse alejado de C: The Complete Reference (4th Edition, 2000), conocido en algunos círculos como C: The Complete Nonsense.
Tampoco utilice el libro Let Us C (16 ° Edición, 2017) por Yashwant Kanetkar. Muchas personas lo ven como un libro obsoleto que enseña Turbo C y tiene mucho material obsoleto, engañoso e incorrecto. Por ejemplo, la página 137 analiza el resultado esperado de
printf("%d %d %d\n", a, ++a, a++)
y no lo clasifica como comportamiento indefinido como debería.Aprenda C The Hard Way (2015) de Zed Shaw. Un libro con críticas mixtas. Una crítica de este libro de Tim Hentenaar:
"Learn C The Hard Way" no es un libro que podría recomendar a alguien que está aprendiendo a programar y aprendiendo C. Si ya eres un programador competente en algún otro idioma relacionado, entonces representa una exposición interesante e inusual sobre C, aunque tengo reservas sobre partes del libro. Jonathan Leffler
Anticuado
Otros contribuyentes , no necesariamente acreditados en el historial de revisiones, incluyen:
Alex Lockwood , Ben Jackson , Bubbles , claws , coledot , Dana Robinson , Daniel Holden , Dervin Thunk , dwc , Erci Hou , Garen , haziz , Johan Bezem , Jonathan Leffler , Joshua Partogi , Lucas , Lundin , Matt K. , mossplix , Matthieu M. , midor , Nietzche-jou , Norman Ramsey , r3st0r3 , ridthyself , Robert S. Barnes , Steve Summit , Tim Ring , Tony Bai , VMAtm
fuente
<Modern C>
valía la pena leer el libro , usaba mucha sintaxis c99 y c11, muy compacto y bien escrito. ¿Y sabes qué? Es gratis !!! Puede descargar la última versión en pdf aquí: icube-icps.unistra.fr/img_auth.php/d/db/ModernC.pdf (BTW, parece que el autor está actualizando y publicando el libro en el enlace anterior según sea necesario)