La guía final y lista de libros en C ++.

Esta pregunta trata de recolectar algunas perlas entre docenas de libros malos en C ++, que se publican cada año.

A diferencia de muchos otros lenguajes de programación, que a menudo se seleccionan de los libros de texto que se encuentran en Internet, pocos de ellos pueden captar rápidamente C ++ sin aprender un libro de C ++ bien escrito. Para hacer esto, es demasiado difícil y difícil. De hecho, es tan grande y complejo que hay muchos libros muy malos de C ++ . Y no estamos hablando de un estilo malo, sino de cosas como divisar errores obvios y promover estilos de programación terriblemente malos.

Edite la respuesta aceptada para proporcionar libros de calidad y un nivel aproximado de habilidades, preferiblemente después de analizar su adición al chat de C ++ . (Las personas normales pueden cancelar su trabajo sin piedad si no están de acuerdo con la recomendación). Agregue un breve anuncio / descripción de cada libro que lea / reciba personalmente. Siéntase libre de discutir calidad, titulares, etc. Los libros que coincidan con los criterios se agregarán a la lista. Los libros que tienen reseñas de la Asociación de Usuarios de C y C ++ (ACCU) tienen enlaces a la revisión.

* Nota. Las preguntas frecuentes y otros recursos se pueden encontrar en la etiqueta C ++ y en Sub>

4250
23 дек. fijado por grepsedawk 23 dic. 2008-12-23 08:23 '08 a las 8:23 AM 2008-12-23 08:23
ответ 1 respuesta

novicio

Introductorio, sin experiencia en programación

  • C ++ Primer * (Stanley Lippmann, José Lajay y Barbara E. Mu) ( actualizado para C ++ 11 ) Esta es una introducción de 1 página, que es una introducción muy detallada a C ++, que cubre casi todo en un lenguaje muy accesible y es muy detallada. La quinta edición (publicada el 16 de agosto de 2012) cubre C ++ 11. [Revisión]

  • Programación: principios y práctica utilizando C ++ ( Bjarn Straustrup, 2ª edición - 25 de mayo de 2014) ( actualizado para C ++ 11 / C ++ 14 ) Introducción a la programación utilizando el creador del lenguaje C ++. Buena lectura, que no implica ninguna experiencia previa en programación, pero no solo para principiantes.

* No debe confundirse con C ++ Primer Plus (Stephen Prath) con una revisión significativamente menos favorable.

Introductorio, con experiencia previa en programación.

  • C ++ Tour (Bjarne Straustrup) ( 2ª edición para C ++ 17 ) El Tour es una breve descripción general (aproximadamente 180 páginas y 14 capítulos) del libro de texto en todo C ++ estándar (lenguaje y biblioteca estándar, y utiliza C ++ 11 ) en niveles moderadamente altos Nivel para personas que ya conocen C ++ o al menos son programadores experimentados. Este libro es una versión ampliada del material en los capítulos 2–5 del lenguaje de programación C ++, 4ª edición.

  • C ++ acelerado (Andrew Koenig y Barbara Mu, 1ª edición, 24 de agosto de 2000) Básicamente cubre el mismo terreno que C ++ Primer, pero lo hace en la cuarta parte de su espacio. Esto se debe en gran parte al hecho de que no es un intento de ser una introducción a la programación, sino una introducción a C ++ para personas que previamente han programado en otro idioma. Tiene una curva de aprendizaje más pronunciada, pero para aquellos que pueden manejarlo, esta es una introducción muy compacta al lenguaje. (Históricamente, fue el primero en abrir un libro que utilizó un enfoque moderno para el aprendizaje de idiomas). A pesar de esto, el C ++ que enseña es puramente C ++ 98. [Revisión]

Mejores practicas

  • Efectivo C ++ (Scott Meyers, 3ª edición, 22 de mayo de 2005) Esto se escribió con el objetivo de convertirse en el mejor segundo libro de C ++ que los programadores necesitan leer, y tuvo éxito. Las versiones anteriores fueron diseñadas para los programadores que vinieron de C, la tercera edición lo modifica y está destinada a los programadores de lenguajes como Java. Presenta ~ 50 reglas de oro fácilmente recordadas, junto con su lógica en un estilo muy accesible (y agradable). Para C ++ 11 y C ++ 14, los ejemplos y algunos problemas están desactualizados, y se debería preferir C ++ moderno y efectivo. [Revisión]

  • Effective Modern C ++ (Scott Meyers) Esta es básicamente una nueva versión de Effective C ++, diseñada para programadores de C ++, que se mueve de C ++ 03 a C ++ 11 y C ++ 14.

  • STL efectivo (Scott Meyers) Esto se hace para formar la misma parte de la biblioteca estándar que se origina a partir de STL, como hizo Efectivo C ++ con el lenguaje en su conjunto: presenta las reglas de la práctica junto con su justificación. [Revisión]

intermedio

  • C ++ más efectivo (Scott Meyers) Incluso más reglas prácticas que C ++ efectivo. No es tan importante como en el primer libro, pero es útil saberlo.

  • Excepcional C ++ (Herb Sutter) Presentado como un conjunto de rompecabezas, contiene una de las mejores y detalladas discusiones sobre la administración adecuada de recursos y las excepciones de seguridad en C ++ a través de "Adquiring resources - initialization (RAII)", además de la cobertura en profundidad de muchos otros temas, incluido el lenguaje pimpl. , búsqueda de nombres, buen diseño de clase y modelo de memoria C ++. [Revisión]

  • Más Excepcional C ++ (Herb Sutter) Cubre temas de seguridad de excepciones adicionales no cubiertos en Excepcional C ++, además de analizar la programación eficiente orientada a objetos en C ++ y el uso adecuado de STL. [Revisión]

  • Estilo excepcional de C ++ (Herb Sutter) Discute la programación general, la optimización y la administración de recursos; este libro también contiene una excelente presentación de cómo escribir código modular en C ++ usando funciones que no son miembros y el principio de responsabilidad compartida. [Revisión]

  • Estándares de codificación de C ++ (Herb Sutter y Andrei Aleksandrescu) "Estándares de codificación" aquí no significa "¿cuántos espacios debo sangrar para mi código?" Este libro contiene 101 prácticas recomendadas, expresiones idiomáticas y errores comunes que pueden ayudarlo a escribir un código C ++ correcto, comprensible y efectivo. [Revisión]

  • Plantillas de C ++: la guía completa (David Vandevoorde y Nicolai M. Josuttis) Este es un libro sobre las plantillas como existía antes de C ++ 11. Cubre todo, desde la metaprogramación de plantillas más básica hasta la más avanzada, y explica cada detalle de cómo Las plantillas funcionan (conceptualmente y cómo se implementan), y analiza muchos errores comunes. Tiene un excelente resumen de la regla de definición única (ODR) y la resolución de sobrecarga en las aplicaciones. La segunda edición, que abarca C ++ 11, C ++ 14 y C ++ 17, ya se ha publicado. [Revisión]

  • C ++ 17 - La guía completa (Nikolai M. Josuttis) Este libro describe todas las nuevas funciones introducidas en el estándar C ++ 17, que abarcan todo desde simples, como "variables incorporadas", "constexpr if" y hasta "recursos de memoria polimórficos "y" Datos nuevos y eliminados con datos sobredimensionados ".


border=0

avanzado

  • Modern C ++ Design (Andrei Aleksandrescu) Un libro innovador sobre técnicas avanzadas de programación comunes. Presenta el diseño basado en políticas, las listas de tipos y los lenguajes de programación generales fundamentales, y luego explica cuántos patrones de diseño útiles (incluidos los asignadores de objetos pequeños, los funtores, las fábricas, los visitantes y los múltiples métodos) se pueden implementar de manera eficiente, modular y puramente utilizando la programación universal. ., [Revisión]

  • Plantilla de metaprogramación en C ++ (David Abrahams y Alexey Gurtovoy)

  • C ++ Concurrencia en Acción (Anthony Williams) Un libro que cubre el soporte de C ++ 11, que incluye una biblioteca de hilos, una biblioteca atómica, un modelo de memoria C ++, bloqueos y exclusión mutua, así como el diseño y la depuración de aplicaciones de múltiples hilos.

  • Metaprogramación avanzada de C ++ (Davide Di Gennaro) Un tutorial preliminar sobre TMP a C ++ 11, se centró más en la práctica que en la teoría. Este libro contiene muchos fragmentos, algunos de los cuales están desactualizados debido a los rasgos de tipo, pero los métodos aún son útiles de conocer. Si puede soportar el extraño formato / edición, es más fácil de leer que Alexandrescu, y quizás sea más útil. Para los desarrolladores más experimentados, existe una buena posibilidad de que pueda encontrar algo sobre el rincón oscuro de C ++ (modas), que generalmente solo proviene de una amplia experiencia.


border=0

Estilo de enlace - todos los niveles

C ++ 11/14/17 / ... Referencias:

  • C ++ 11/14/17 Estándar (INCITS / ISO / IEC 14882: 2011/2014/2017) Este, por supuesto, es el árbitro final de todo lo que es o no es C ++. Sin embargo, tenga en cuenta que esto está pensado únicamente como una referencia para usuarios experimentados que desean dedicar un tiempo y esfuerzo considerables a su comprensión. Estándar C ++ 17 publicado electrónicamente por 198 francos suizos.

  • El estándar C ++ 17 está disponible, pero, aparentemente, no en una forma económica: directamente desde ISO cuesta 198 francos suizos (aproximadamente 200 dólares estadounidenses). Para la mayoría de las personas, el borrador final antes de la estandarización es más que adecuado (y gratuito). Muchos preferirán un borrador aún más reciente que documente nuevas características que probablemente se incluirán en C ++ 20.

  • Descripción general de C ++ (C ++ 11/14) (solo PDF) (Scott Meyers) ( actualizado para C ++ 14 ) Estos son los materiales de presentación (diapositivas y algunas notas de clase) del curso de capacitación de tres días ofrecido por Scott Meyers, quien es un autor de C ++ muy respetado. Aunque la lista de artículos es corta, la calidad es alta.

  • La Guía básica de C ++ (C ++ 11/14/17 / ...) (editada por Bjarn Stroustrup y Herb Satter) es un documento en línea en evolución que consiste en un conjunto de recomendaciones para el uso de un pozo moderno de C ++. Las directrices se centran en problemas de nivel superior, como interfaces, administración de recursos, administración de memoria y concurrencia que afectan la arquitectura de la aplicación y el diseño de la biblioteca. El proyecto fue anunciado en CppCon'15 por Bjarn Straustrup y otros y agradece los comentarios de la comunidad. La mayoría de los manuales se complementan con fundamentos y ejemplos, así como con discusiones sobre posibles apoyos para la herramienta. Muchas reglas están diseñadas específicamente para la verificación automática utilizando herramientas de análisis estático.

  • Super-FAQ C ++ (Marshall Cline, Bjarne Stroustrup y otros) es un intento de la Standard C ++ Foundation por combinar las preguntas más frecuentes de C ++ que previamente fueron apoyadas individualmente por Marshall Cline y Bjarne Stroustrup, además de incluir nuevos materiales. Los temas se ocupan principalmente de las preguntas en el nivel intermedio y, a menudo, se escriben con un tono humorístico. No todos los elementos pueden actualizarse completamente a la última versión del estándar C ++.

  • cppreference.com (C ++ 03/11/14/17 / ...) (iniciado por Nate Kohl) es una wiki que resume las funciones principales del lenguaje principal y tiene una extensa documentación de la biblioteca estándar de C ++. La documentación es muy precisa, pero es más fácil de leer que el documento estándar oficial y proporciona una mejor navegación debido a su naturaleza wiki. El proyecto documenta todas las versiones del estándar C ++, y el sitio le permite filtrar la pantalla para una versión específica. El proyecto fue presentado por Nate Kohl en CppCon'14 .


border=0

Clásico / Older

Nota Parte de la información contenida en estos libros puede estar desactualizada o dejar de considerarse una mejor práctica.

  • Diseño y evolución de C ++ (Bjarne Straustrup) Si desea saber por qué el lenguaje es el que es, este libro es donde encontrará las respuestas. Esto cubre todo antes de estandarizar C ++.

  • Reflexiones sobre C ++ - (Andrew Koenig y Barbara Mu) [Revisión]

  • Estilos y expresiones de programación de C ++ extendido (James Coplien) Un precursor de los patrones de movimiento, describe muchas "expresiones idiomáticas" específicas de C ++. Este es ciertamente un muy buen libro, y puede valer la pena leerlo si puede ahorrar tiempo, pero es bastante antiguo y no está actualizado con los eventos actuales de C ++.

  • Diseño de software C ++ a gran escala (John Lacos) Lacos explica los métodos para gestionar proyectos de software C ++ muy grandes. Por supuesto, una buena lectura, si fuera relevante. Fue escrito mucho antes de C ++ 98 y omitió muchas funciones (por ejemplo, espacios de nombres) que son importantes para proyectos a gran escala. Si necesita trabajar en un gran proyecto de software de C ++, puede querer leerlo, aunque necesita traer algo más que un poco de sal. El primer volumen de la nueva edición se espera para 2018 .

  • Dentro del modelo de objetos de C ++ (Stanley Lippman) Si desea averiguar cómo se implementan las funciones de los miembros virtuales y cómo se colocan normalmente los objetos básicos en la memoria en un script con herencia múltiple, y cómo todo esto afecta el rendimiento, aquí encontrará discusiones detalladas sobre dichos temas. .

  • Manual de referencia anotado de C ++ (Bjarne Stroustrup, Margaret A. Ellis) Este libro está bastante desactualizado porque cubre la versión de 1989 de C ++ 2.0: aún no se han presentado patrones, excepciones, espacios de nombres y nuevos lanzamientos. Sin embargo, decir que este libro pasa por todo el estándar de C ++ de ese tiempo, explicando las razones, posibles implementaciones y características del lenguaje. Este no es un libro para aprender los principios y patrones de programación en C ++, sino para comprender todos los aspectos del lenguaje C ++.

  • Pensando en C ++ (Bruce Ekel, 2ª edición, 2000). Dos volúmenes; Este es un conjunto gratuito de libros de texto de nivel de entrada. Descargas: Volumen 1 , Volumen 2 . Desafortunadamente, están eclipsados ​​por una serie de errores triviales (por ejemplo, afirmar que const automáticamente una construcción temporal), sin una lista oficial de errores tipográficos. Una lista parcial de erratas de terceros está disponible en ( http://www.computersciencelab.com/Eckel.htm ), pero esto no parece ser compatible.

  • C ++ científico y técnico: Introducción a los métodos y ejemplos avanzados (John Barton y Lee Nackman) Este es un libro completo y muy detallado que trató de explicar y usar todas las funciones disponibles en C ++ en el contexto de los métodos numéricos. En ese momento, introdujo varios métodos nuevos, como el patrón de repetición de patrones curiosos (CRTP, también llamado truco de Barton-Nackman). Primero aplicó varios métodos, como el análisis dimensional y la diferenciación automática. Viene con un gran número de código compilado y útil, que va desde el analizador de expresiones hasta el envoltorio de Lapack. El código todavía está disponible aquí: http://www.informit.com/store/scientific-and-engineering-c-plus-plus-an-introduction-9780201533934 . Desafortunadamente, los libros se volvieron un tanto anticuados en estilo y características de C ++, pero en ese momento era un viaje increíble (1994, pre-STL). Los capítulos sobre la dinámica de la herencia son un poco difíciles de entender y no son muy útiles. Una versión actualizada de este libro clásico que incorpora semántica de movimientos y lecciones aprendidas de STL sería muy buena.

4251
23 дек. La respuesta se da Johannes Schaub - litb 23 dec. 2008-12-23 08:52 '08 a las 8:52 am 2008-12-23 08:52

Otras preguntas sobre etiquetas o haga una pregunta