La guía y la lista definitiva del libro del C
(1)
Esta pregunta intenta recopilar una lista mantenida por la comunidad de libros de calidad en el lenguaje de programación C, dirigida a varios niveles de habilidad.
C es un lenguaje de programación complejo que es difícil de recoger en la marcha mediante la lectura de 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 serios errores técnicos.
Por favor sugiera ediciones a la respuesta aceptada para agregar libros de calidad, con un nivel de habilidad aproximado y una breve descripción / descripción sobre 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.)
Siéntase libre de debatir las opciones de libros, la calidad, los encabezados, los resúmenes, los niveles de habilidad y cualquier otra cosa que vea que está mal. Los libros que son considerados satisfactorios por la comunidad C aquí se quedarán en la lista; el resto se eliminará regularmente.
Para los libros que tienen revisiones de la Asociación de usuarios de C y C ++ (ACCU), se debe agregar un enlace a esas revisiones junto con el libro.
Ver también:
- Otros recursos relacionados con C en el wiki de c tag
- Una lista similar para C ++: La guía y la lista de libros C ++ definitiva
Referencia (Todos los Niveles)
El lenguaje de programación C (2 ª Edición) - Brian W. Kernighan y Dennis M. Ritchie (1988). Sin embargo, el lenguaje ha cambiado y el buen estilo C se ha desarrollado en los últimos 25 años, y hay partes del libro que muestran su edad.
C: Un Manual de Referencia (5ta edición) - Samuel P. Harbison y Guy R. Steele (2002). Un libro de referencia excelente sobre C, hasta e incluyendo C99. No es un tutorial, y probablemente no apto para principiantes. Es genial si necesita escribir un compilador para C, como los autores tenían que hacer cuando comenzaron.
C Referencia de bolsillo (O''Reilly) - Peter Prinz y Ulla Kirch-Prinz
El comp.lang.c Preguntas frecuentes - Steve Summit. Sitio Web con respuestas a muchas preguntas sobre C.
Varias versiones de los estándares del lenguaje C se pueden encontrar aquí .
El nuevo estándar C - una referencia anotada (PDF) - Derek M. Jones. El "nuevo estándar" al que se hace referencia es el antiguo estándar C99 en lugar de C11.
Principiante
Programación en C (4ta edición) - Stephen Kochan (2014). Una buena introducción general y tutorial.
C Primer Plus (5ª Edición) - Stephen Prata (2004)
C Programming: A Modern Approach (2ª edición) - KN King (2008). Un buen libro para aprender C.
Un libro sobre C - Al Kelley / Ira Pohl
El Libro C (Free Online) - Mike Banahan, Declan Brady y Mark Doran
Programación práctica de C (3ra edición) - Steve Oualline (1997)
C: Cómo programar (6ta edición) - Paul Deitel y Harvey M. Deitel. Un montón de buenos consejos y mejores prácticas para los principiantes. El índice es muy bueno y sirve como una referencia decente (no sólo totalmente completa, y muy superficial).
Primera cabeza C - David Griffiths y Dawn Griffiths
Comenzando C (5ta edición) - Ivor Horton. Muy buena explicación de punteros, usando un montón de programas pequeños pero completos.
Sams Teach Yourself C en 21 días - Bradley L. Jones y Peter Aitken (2002). Muy buenas cosas introductorias.
Aprenda C La manera dura - Zed Shaw. Un tutorial para principiantes que apuntan a prácticas modernas, con un enfoque en seguridad. Vea el preámbulo para más información. Advertencia: este libro no es para los débiles de corazón, pero esa es su fuerza-no intenta protegerse de la verdad, sino que expone los detalles sangrientos y luego explica cómo lidiar con ellos. Además, el libro enseña C la forma de Linux , que algunos pueden ver como una fuerza y otros como una discapacidad excesivamente restrictiva.
Programación de Aplicaciones en ANSI C - Richard Johnsonbaugh y Martin Kalin (1996).
Intermedio
Programación Orientada a Objetos con ANSI-C (PDF Gratuito) - Axel-Tobias Schreiner
C Interfaces e implementaciones - David R. Hanson. Proporciona información sobre cómo definir un límite entre una interfaz y la implementación en C de una manera genérica y reutilizable. También demuestra este principio aplicándolo a la implementación de mecanismos comunes y estructuras de datos en C, tales 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 bits de una forma que otras personas podrían reutilizar para sus propios proyectos. Es un modelo de buena programación C usando técnicas de diseño moderno (incluyendo la abstracción de datos de Liskov), mostrando cómo organizar un gran proyecto C como un montón de bibliotecas útiles.
El libro del rompecabezas de C - Alan R. Feuer (1998)
La Biblioteca C Estándar - PJ Plauger (1992). Contiene el código fuente completo para una implementación de la biblioteca estándar C89, junto con 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 allá).
Algoritmos en C - Robert Sedgewick. Te da una idea real de la implementación de algoritmos en C. Muy lúcido y claro; probablemente hará que desee tirar todos sus otros libros de algoritmos y mantener este uno.
Punteros en C - Kenneth Reek
Punteros en C - Naveen Toppo y Hrishikesh Dewan
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 los programadores intermedios practicando problemas escritos en este libro. Este es un buen enfoque similar a un libro de cocina sugerido por los contribuidores comp.lang.c.
Experto
Programación Expert C: Deep C Secrets - Peter van der Linden (1994). Mucha información interesante y historias de guerra del equipo compilador de Sun, pero un poco anticuado en lugares.
Programación avanzada de C por ejemplo - John W. Perry
Programación avanzada en el entorno UNIX - Richard W. Stevens y Stephen A. Rago (2013). Descripción completa de cómo utilizar las API de Unix del código C, pero no tanto sobre la mecánica de la codificación C.
Avanzado C: Alimentos para el Paladar Educado - Narain Gehani (1985). Grande en punteros, punteros a las funciones, y una variedad de temas avanzados, tales como cómo se almacena la materia en memoria, memoria dinámica, uso de la pila, llamada de la función, paso del parámetro, etc. Asume que usted tiene una buena comprensión de C para comenzar con. Advertencia: antes de la norma ANSI y un montón de diseño de programación moderna.
Programación de Computadores: Una Introducción para el Científicamente Inclinado - Sander Stoks (2008). Gran libro sobre el uso científico de los lenguajes de programación.
Inversión: Secretos de la ingeniería inversa - Eldad Eilam (2005). Para aquellos que quieren probar los límites de su ética.
Uncategorized
Esencial C (PDF Gratuito) - Nick Parlante. Tenga en cuenta que esto describe el lenguaje C90 en varios puntos ( por ejemplo , al discutir
//
comentarios y colocación de declaraciones de variables en puntos arbitrarios en el código), por lo que debe tratarse con cierta precaución.C Preguntas Frecuentes de Programación: Steve Summit (1995).
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, teniendo en cuenta la concurrencia y la modularidad.
La Práctica de la Programación - Brian W. Kernighan y Rob Pike (1999). Un muy buen libro para acompañar a K & R.
C Traps and Pitfalls de A. Koenig (1989). Muy bueno, pero el estilo C pre-fechas estándar C, lo que hace que sea menos recomendable en estos días.
Algunos han defendido la eliminación de ''Trampas y trampas'' de esta lista porque ha atrapado a algunas personas en cometer errores; otros continúan abogando por su inclusión. Tal vez debería ser considerado como un libro "experto" porque requiere un conocimiento moderadamente extenso de C para entender lo que ha cambiado desde que fue publicado.
Sistemas informáticos: la perspectiva de un programador (3ª edición) - Randal E. Bryant y David O''Hallaron (2015). Explica el lenguaje C en un estilo narrativo inconexo, como Pulp Fiction .
Abstracción y Especificación en el Desarrollo del Programa - Barbara Liskov y John V. Guttag (1986) ( no la versión basada en Java más reciente de Liskov solo). Este es un texto de pregrado, con algunas ideas vale la pena pensar.
Diseño Compuesto / Estructurado - Glenford J. Myers (1978). Este y otros libros de finales de los setenta y principios de los ochenta de Yourdon y Myers ofrecen excelentes ideas sobre el diseño estructurado.
Construya su propio Lisp . Una manera agradable 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 esto no es un libro como tal, todo programador C experimentado debe leer e implementar tanto como sea posible. MISRA-C fue originalmente pensado como guía para aplicaciones críticas de seguridad en particular, pero se aplica a cualquier área de aplicación donde se desea un código C estable, sin errores (¿quién no quiere menos errores?). MISRA-C se está convirtiendo en el estándar de facto en toda la industria embebida y se está volviendo cada vez más popular incluso en otras ramas de programación. Existen (al menos) tres publicaciones de la norma, una de 1998, una de 2004 y una de 2012, donde la última es la actual, relevante. También hay un documento de las Directrices de Cumplimiento de MISRA a partir de 2016, y MISRA C: 2012 Enmienda 1 - Guías Adicionales de Seguridad para MISRA C: 2012 (publicado en abril de 2016).
Nótese que algunas de las restricciones en las reglas MISRA no son apropiadas para cada contexto. Por ejemplo, la directiva 4.12 establece que "no se utilizará la asignación de memoria dinámica". Esto puede ser apropiado en los sistemas embebidos para los cuales se diseñan las reglas MISRA; no es apropiado en todas partes. (Los compiladores, por ejemplo, usan generalmente 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 en Beginner''s C (116 títulos) y Advanced C (76 títulos). La mayoría de estos no parecen estar en el sitio principal más, y usted no puede navegar por el tema de todos modos.
Advertencias
Tenga cuidado con los libros escritos por Herbert Schildt . En particular, debe mantenerse alejado de C: The Complete Reference , conocido en algunos círculos como C: The Complete Nonsense.
También tenga cuidado con el libro "Let Us C" de Yashwant Kanetkar. Es un libro horriblemente anticuado que enseña Turbo C y tiene mucho material obsoleto, engañoso y francamente incorrecto.
Otros contribuyentes , no acreditados en el historial de revisiones:
Alex Lockwood , Ben Jackson , Bubbles , garras , coledot , Daniel Holden , Dervin Thunk , dwc , Erci Hou , Garen , haziz , Johan Bezem , Jonathan Leffler , Josué Partogi , Lucas , Lundin , Matt K. , mossplix , Matthieu M. , midor , Nietzche-jou , Norman Ramsey , r3st0r3 , ridthyself , Roberto S. Barnes , Anillo de Tim , Tony Bai , VMAtm