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)
Principiante
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
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:
Para resumir mis puntos de vista, que se exponen a continuación, el autor presenta el material de una manera muy simplificada y engañosa, todo el corpus es un desastre, y algunas de las opiniones y análisis que ofrece son simplemente erróneos. Traté de ver este libro a través de los ojos de un novato, pero desafortunadamente estoy sesgado por años de experiencia escribiendo código en C. Es obvio para mí que el autor tiene una comprensión defectuosa de C o está simplificando deliberadamente demasiado Señale dónde está engañando al lector (intencionalmente o no).
"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