¿Qué libro de C y C ++ es bueno para principiantes y para usuarios intermedios?

Una lista (no exhaustiva):

(Fuente: La guía y lista definitiva de libros de C ++)

PrincipianteIntroductorio, sin experiencia previa en programación

  1. Programación: Principios y práctica usando C ++ (Bjarne Stroustrup) ( actualizado para C ++ 11 / C ++ 14 ) Una introducción a la programación usando C ++ por el creador del lenguaje. Una buena lectura, que no supone experiencia previa en programación, pero no es solo para principiantes.

Introductorio, con experiencia previa en programación.

  1. C ++ Primer * (Stanley Lippman, Josée Lajoie y Barbara E. Moo) ( actualizado para C ++ 11 ) Con 1k páginas, esta es una introducción muy completa a C ++ que cubre casi todo en el lenguaje en un formato muy accesible y en gran detalle La quinta edición (lanzada el 16 de agosto de 2012) cubre C ++ 11. [Revisión]
  2. Un recorrido por C ++ (Bjarne Stroustrup) El “recorrido” es una descripción general rápida (aproximadamente 180 páginas y 14 capítulos) de todo C ++ estándar (lenguaje y biblioteca estándar, y el uso de C ++ 11 ) a un nivel moderadamente alto para las personas quienes ya conocen C ++ o al menos son programadores experimentados. Este libro es una versión extendida del material que constituye los capítulos 2-5 del lenguaje de programación C ++, cuarta edición.
  3. C ++ acelerado (Andrew Koenig y Barbara Moo) Esto básicamente cubre el mismo terreno que el C ++ Primer , pero lo hace en un cuarto de su espacio. Esto se debe en gran medida a que no intenta ser una introducción a la programación , sino una introducción a C ++ para las personas que previamente han programado en otro lenguaje. Tiene una curva de aprendizaje más pronunciada, pero, para aquellos que pueden hacer frente a esto, es una introducción muy compacta al lenguaje. (Históricamente, abrió nuevos caminos al ser el primer libro para principiantes en utilizar un enfoque moderno en la enseñanza del idioma). [Revisión]
  4. Pensando en C ++ (Bruce Eckel) Dos volúmenes; es un conjunto gratuito de estilo tutorial de libros de nivel de introducción. Descargas: vol. 1, vol. 2. Desafortunadamente, están empañados por una serie de errores triviales (por ejemplo, mantener que los temporales son constantes automáticamente), sin una lista oficial de erratas. Una lista parcial de erratas de terceros está disponible en (“Pensar en C ++”), pero aparentemente no se mantiene.

* No debe confundirse con C ++ Primer Plus (Stephen Prata), con una revisión significativamente menos favorable.
Mejores prácticas

  1. Efectivo C ++ (Scott Meyers) Esto fue escrito con el objetivo de ser el mejor segundo libro que los programadores de C ++ deberían leer, y tuvo éxito. Las ediciones anteriores estaban dirigidas a programadores procedentes de C, la tercera edición cambia esto y apunta a los programadores procedentes de lenguajes como Java. Presenta ~ 50 reglas básicas fáciles de recordar junto con su justificación en un estilo muy accesible (y agradable). [Revisión]
  2. Effective STL (Scott Meyers) Esto tiene como objetivo hacer lo mismo con la parte de la biblioteca estándar que proviene del STL, lo que Effective C ++ le hizo al lenguaje en su conjunto: presenta reglas generales junto con su justificación. [Revisión]

Intermedio

  1. C ++ más efectivo (Scott Meyers) Incluso más reglas generales que C ++ efectivo . No es tan importante como los del primer libro, pero aún así es bueno saberlo.
  2. Excepcional C ++ (Herb Sutter) Presentado como un conjunto de acertijos, este tiene una de las mejores y minuciosas discusiones sobre el manejo adecuado de los recursos y la seguridad excepcional en C ++ a través de la adquisición de recursos es la inicialización (RAII) además de la cobertura en profundidad de una variedad de otros temas que incluyen la expresión idiomática, la búsqueda de nombres, el buen diseño de clase y el modelo de memoria C ++. [Revisión]
  3. Más Excepcional C ++ (Herb Sutter) Cubre temas de seguridad de excepción adicionales no cubiertos en Excepcional C ++ , además de la discusión de la programación orientada a objetos efectiva en C ++ y el uso correcto del STL. [Revisión]
  4. Estilo excepcional de C ++ (Herb Sutter) Analiza la programación genérica, la optimización y la gestión de recursos; Este libro también tiene una excelente exposición de cómo escribir código modular en C ++ mediante el uso de funciones no miembros y el principio de responsabilidad única. [Revisión]
  5. Estándares de codificación C ++ (Herb Sutter y Andrei Alexandrescu) “Estándares de codificación” aquí no significa “¿cuántos espacios debo sangrar mi código?” Este libro contiene 101 mejores prácticas, modismos y errores comunes que pueden ayudarlo a escribir código C ++ correcto, comprensible y eficiente. [Revisión]
  6. Plantillas C ++: la guía completa (David Vandevoorde y Nicolai M. Josuttis) Este es el libro sobre plantillas tal como existía antes de C ++ 11. Cubre todo, desde lo más básico hasta algunas de las metaprogramaciones de plantillas más avanzadas y explica cada detalle de cómo funcionan las plantillas (tanto conceptualmente como cómo se implementan) y discute muchas trampas comunes. Tiene excelentes resúmenes de la Regla de una definición (ODR) y la resolución de sobrecarga en los apéndices. Una segunda edición está programada para 2016. [Revisión]
  7. Efectivo C ++ moderno (Scott Meyers) Este libro describe cómo escribir un software realmente excelente usando C ++ 11 y C ++ 14, es decir, usando C ++ moderno.

Avanzado

  1. Diseño moderno de C ++ (Andrei Alexandrescu) Un libro innovador sobre técnicas avanzadas de programación genérica. Presenta un diseño basado en políticas, listas de tipos y modismos genéricos de programación genéricos, luego explica cuántos patrones de diseño útiles (incluidos los asignadores de objetos pequeños, functores, fábricas, visitantes y métodos múltiples) pueden implementarse de manera eficiente, modular y limpia utilizando programación genérica. [Revisión]
  2. Metaprogramación de plantillas C ++ (David Abrahams y Aleksey Gurtovoy)
  3. Concurrencia de C ++ en acción (Anthony Williams) Un libro que cubre el soporte de concurrencia de C ++ 11 que incluye la biblioteca de subprocesos, la biblioteca atómica, el modelo de memoria de C ++, bloqueos y mutexes, así como cuestiones de diseño y depuración de aplicaciones multiproceso.
  4. Metaprogramación avanzada de C ++ (Davide Di Gennaro) Un manual anterior a C ++ 11 de técnicas TMP, centrado más en la práctica que en la teoría. Hay un montón de fragmentos en este libro, algunos de los cuales quedan obsoletos debido a los caracteres tipográficos, pero las técnicas, sin embargo, son útiles para conocer. Si puede soportar el peculiar formato / edición, es más fácil de leer que Alexandrescu y, posiblemente, más gratificante. Para los desarrolladores más experimentados, hay una buena posibilidad de que puedan aprender algo sobre un rincón oscuro de C ++ (una peculiaridad) que generalmente solo se produce a través de una amplia experiencia.

Estilo de referencia: todos los niveles

  1. El lenguaje de programación C ++ (Bjarne Stroustrup) ( actualizado para C ++ 11 ) La introducción clásica a C ++ por su creador. Escrito en paralelo al clásico K&R, esto de hecho se lee muy parecido y cubre casi todo, desde el lenguaje central hasta la biblioteca estándar, desde los paradigmas de programación hasta la filosofía del lenguaje. (De este modo, las últimas ediciones rompen la barrera de la página 1k.) [Revisión] La cuarta edición (lanzada el 19 de mayo de 2013) cubre C ++ 11.
  2. Tutorial y referencia de la biblioteca estándar de C ++ (Nicolai Josuttis) ( actualizado para C ++ 11 ) Introducción y referencia para la biblioteca estándar de C ++. La segunda edición (lanzada el 9 de abril de 2012) cubre C ++ 11. [Revisión]
  3. Las transmisiones y configuraciones regionales de C ++ IO (Angelika Langer y Klaus Kreft) Hay muy poco que decir sobre este libro, excepto que, si desea saber algo sobre transmisiones y configuraciones regionales, este es el único lugar para encontrar respuestas definitivas. [Revisión]

C ++ 11 Referencias:

  1. El estándar C ++ (INCITS / ISO / IEC 14882-2011) Esto, por supuesto, es el árbitro final de todo lo que es o no es C ++. Sin embargo, tenga en cuenta que está destinado únicamente a ser una referencia para usuarios experimentados dispuestos a dedicar un tiempo y esfuerzo considerables a su comprensión. Como de costumbre, el primer lanzamiento fue bastante costoso ($ 300 + US), pero ahora se ha lanzado en forma electrónica por $ 60US
  2. Descripción general del nuevo C ++ (C ++ 11/14) (solo PDF) (Scott Meyers) ( actualizado para C ++ 1y / C ++ 14 ) Estos son los materiales de presentación (diapositivas y algunas notas de clase) de tres curso de capacitación de un día ofrecido por Scott Meyers, quien es un autor muy respetado en C ++. Aunque la lista de artículos es corta, la calidad es alta.

  • Si desea más explicaciones teóricas, puede ir a “Let us C (descargar let us c 8th edition)
  • Si prefiere más programación y menos teoría: “Programación en ANSI C -por el Dr. E. Bala-guru-swamy “.
  • Si quieres una experiencia de aprendizaje completa: “Head First C Book”.

    Todos ellos tendrán conceptos básicos y avanzados de C.

Libros para C : – The Primer C
C La referencia completa (Herbert Schildt)
Libros para C ++: The Primer C ++
C ++ La referencia completa (Herbert Schildt)
Estos son los mejores libros si realmente quieres aprender sobre el lenguaje. También hay algunos libros disponibles como Let Us C de E. Balagurusamy, The C Programming Language de Denis Ritchie y ANSI C.