c

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:


Referencia (Todos los Niveles)

Principiante

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

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