O guia e a lista de livros C++ definitivos

esta pergunta tenta recolher as poucas pérolas entre as dezenas de maus livros de C++ que são publicados todos os anos.

Ao contrário de muitas outras linguagens de programação, que são frequentemente captadas em movimento a partir de tutoriais encontrados na Internet, poucos são capazes de rapidamente pegar C++ sem estudar um livro C++ bem escrito. É demasiado grande e complexo para fazer isto. Na verdade, é tão grande e complexo, que há muitos livros de C++ muito maus lá fora. E nós somos sem falar de mau estilo, mas coisas como o sporting ([5]}erros factuais claramente óbvios e promovendo péssimos estilos de programação .

Por Favor, edite a resposta aceite para fornecer livros de qualidade e um nível aproximado de habilidade - de preferência Depois a discutir a sua adição na sala de chat C++ . (Os regulares podem desfazer impiedosamente o seu trabalho se discordarem de uma recomendação.) Adicionar uma breve descrição / borrão acerca cada livro que você leu/beneficiou pessoalmente. Sinta-se livre para debater a qualidade, títulos, etc. Os livros que satisfaçam os critérios serão acrescentados à lista. Livros que têm resenhas da Associação de Usuários de C E C++ (ACCU) têm links para a resenha.

*Nota: as FAQs e outros recursos podem ser encontrados no C++ tag info e no c++ - faq .

 4252
Author: sbi, 2008-12-23

1 answers

Principiante

Introdução, sem experiência de programação anterior

  • C++ Primer * (Stanley Lippman, Josée Lajoie, e Barbara E. Moo) (atualizado para o C++11) Vem em 1k páginas, esta é uma profunda introdução em C++ que cobre praticamente tudo em linguagem muito acessível, em formato e em grande detalhe. A quinta edição (lançada em 16 de agosto de 2012) cobre o C++11. [Revisão]

  • programação: princípios e práticas de utilização de C++ (Bjarne Stroustrup, 2. A Edição-Maio 25, 2014) (updated for C++11/C++14 ) An introduction to programming using C++ by the creator of the language. Uma boa leitura, que assume nenhuma experiência de programação anterior, mas não é apenas para iniciantes.

* Não confundir com Primer Plus C++ (Stephen Prata), com um significativamente menos favorável revisão

Introdução, com experiência de programação anterior

  • Um Passeio de C++ (Bjarne Stroustrup) (2ª edição para C++17) O "tour" é uma rápida (cerca de 180 páginas e 14 capítulos) tutorial visão geral de todos de padrão de C++ (linguagem e biblioteca padrão, e C++11) a moderadamente alto nível para pessoas que já conhece C++ ou pelo menos são programadores experientes. Este livro é um versão estendida do material que constitui os capítulos 2-5 da linguagem de Programação C++, 4ª edição.

  • C acelerado++ (Andrew Koenig e Barbara Moo, 1. ª edição - 24 de agosto de 2000) isto basicamente cobre o mesmo terreno que o Primer de C++ , mas fá-lo num quarto do seu espaço. Isto é em grande parte porque não tenta ser uma introdução à programação , mas uma introdução a C++ para pessoas que têm previamente programado em alguma outra língua. Tem uma curva de aprendizagem mais íngreme, mas, para aqueles que podem lidar com isso, é uma introdução muito compacta à linguagem. (Historicamente, ele abriu novos caminhos ao ser o primeiro livro de iniciantes a usar uma abordagem moderna para ensinar a língua.) Apesar disso, o c++ ensina que é puramente C++98. Revisão]

Boas Práticas

  • eficácia C++ (Scott Meyers, 3. a edição-22 de Maio, 2005) foi escrito com o objetivo de ser o melhor segundo livro que programadores C++ devem ler, e foi bem sucedido. Edições anteriores foram destinadas a Programadores vindos de C, a terceira edição muda isso e Visa programadores vindos de linguagens como Java. Ele apresenta ~50 regras de polegar fáceis de lembrar, juntamente com a sua lógica em um estilo muito acessível (e agradável). Para C++11 e C++14, Os exemplos e alguns problemas estão desatualizados e o C++ moderno eficaz deve ser preferido. Revisão]

  • Eficaz Moderno C++ (Scott Meyers) Este é, basicamente, a nova versão do Eficaz C++, destinado a programadores de C++ fazendo a transição de C++03 C++11 e C++14.

  • STL eficaz (Scott Meyers) isto tem como objetivo fazer o mesmo com a parte da biblioteca padrão que vem do STL o que eficaz C++ fez com a linguagem como um todo: apresenta regras de polegar ao longo com a sua lógica. [Revisão]

Intermédio

  • mais eficaz C++ (Scott Meyers)ainda mais regras do polegar do que eficaz C++. Não tão importante como os do primeiro livro, mas ainda é bom saber.

  • excepcional C++ (Herb Sutter) apresentado como um conjunto de quebra-cabeças, este tem uma das melhores e minuciosas discussões sobre a gestão adequada de recursos e a segurança de exceção em C++ através da aquisição de recursos é a inicialização (RAII), além da cobertura em profundidade de uma variedade de outros tópicos, incluindo o idioma pimpl, pesquisa de nomes, bom design de classe, e o modelo de memória C++. Revisão]

  • mais excepcional C++ (Herb Sutter) cobre tópicos adicionais de segurança de excepção não abrangidos emC++, Para além da discussão da programação orientada a objectos eficaz em C++ e utilização correcta do STL. Revisão]

  • estilo C++ excepcional (Herb Sutter) discute programação genérica, otimização e gerenciamento de recursos; este livro também tem uma excelente exposição de como escrever código modular em C++ usando funções não-membros e o princípio de responsabilidade única. Revisão]

  • normas de codificação C++ (Herb Sutter Andrei Alexandrescu) "Coding standards" aqui não significa " quantos espaços devo indentar o meu código?"Este livro contém 101 Melhores Práticas, expressões idiomáticas e armadilhas comuns que podem ajudá-lo a escrever código C++ correto, compreensível e eficiente. Revisão]

  • C++ Modelos: O Guia Completo (David Vandevoorde e Nicolai M. Josuttis) Este é a livro sobre modelos, como existiam antes do C++11. Cobre tudo, desde o básico até alguns dos mais avançados modelo metaprogramação e explica todos os detalhes de como os modelos funcionam (conceitualmente e em como eles são implementados) e discute muitas armadilhas comuns. Tem excelentes resumos da regra de uma definição (RLL) e resolução de sobrecarga nos apêndices. A segunda edição cobrindo C++11, C++14 e C++17 já foi publicada . Revisão]


Avançado

  • Desenho C++ Moderno (Andrei Alexandrescu) a groundbreaking book on advanced generic programming techniques. Introduz design baseado em políticas, listas de tipos e linguagens de programação genéricas fundamentais, em seguida, explica quantos padrões de design úteis (incluindo alocadores de pequenos objetos, functores, fábricas, visitantes, e multi-métodos) podem ser implementados de forma eficiente, modulada e limpa usando programação genérica. Revisão]

  • Metaprogramação De Modelos C++ (David Abrahams e Aleksey Gurtovoy)

  • concorrência em C++ em acção (Anthony Williams) um livro que cobre suporte de concorrência C++11, incluindo a biblioteca thread, a biblioteca atomics, o modelo de memória C++, bloqueios e mutexes, bem como questões de concepção e depuração de aplicações multithreaded.

  • Programação Avançada de C++ (Davide Di Gennaro) um manual pré-C++11 de técnicas TMP, focado mais na prática do que na teoria. Há uma tonelada de trechos neste livro, alguns dos quais são tornados obsoletos por traços de tipo, mas as técnicas, são no entanto úteis para saber. Se você pode aturar a formatação peculiar/ edição, é mais fácil de ler do que Alexandrescu, e indiscutivelmente, mais gratificante. Para desenvolvedores mais experientes, há uma boa chance de que você possa pegar algo sobre um canto escuro de C++ (uma peculiaridade) que normalmente só vem através de uma vasta experiência.


Referência Style-Todos Os Níveis

  • a linguagem de Programação C++ (Bjarne Stroustrup) (actualizado para C++11) a introdução clássica para C++ pelo seu criador. Escrito em paralelo com o clássico K&R, isto realmente se parece muito com ele e cobre quase tudo, desde a linguagem central até a biblioteca padrão, até os paradigmas de programação para a filosofia da linguagem. [Revisão] Nota: Todas as versões da norma c++ são seguidas nesta questão: onde encontro a norma c++ actual .

  • Biblioteca Padrão C++ Tutorial e Referência (Nicolai Josuttis) (atualizado para C++11) O introdução e de referência para a Biblioteca Padrão C++. A segunda edição (lançada em 9 de abril de 2012) cobre C++11. Revisão]

  • Os fluxos e locais de IO C++ (Angelika Langer e Klaus Kroft) há muito pouco a dizer sobre este livro exceto que, se você quer saber alguma coisa sobre córregos e locais, então este é o único lugar para encontrar respostas definitivas. Revisão]

Referências C++11/14:

  • a norma C++ (INCITS / ISO / IEC 14882-2011) Este, é claro, é o árbitro final de tudo o que é ou não C++. No entanto, esteja ciente de que se trata apenas de uma referência para os utilizadores experientes dispostos a dedicar tempo e esforço consideráveis para a sua compreensão. Como de costume, o primeiro lançamento foi bastante caro ($300 + US), mas agora foi lançado em formato eletrônico por $ 60US.

  • O padrão C++14 está disponível, mas aparentemente não de forma econômica - diretamente da ISO {[12] } custa 198 Francos suíços (cerca de US $ 200). Para a maioria das pessoas, o projecto final antes da normalização é mais do que adequado (e gratuito). Muitos vão preferir um ainda mais novo draft , documentando novas funcionalidades que poderão ser incluídas em C++17.

  • Visão geral do Novo C++ (C++11/14) PDF (somente) (Scott Meyers) (atualizado para C++1y/C++14) Estes são os materiais de apresentação (slides e algumas anotações de aula) dos três dias de curso de formação oferecido por Scott Meyers, o que é um altamente respeitado autor em C++. Embora a lista de itens seja curta, a qualidade é alta.

  • O Núcleo C++ Orientações (C)++11/14/17/...) ( edited by Bjarne Stroustrup and Herb Sutter) é um documento on-line em evolução que consiste em um conjunto de diretrizes para o uso do poço C++ moderno. As diretrizes são focadas em questões de nível relativamente mais elevado, tais como interfaces, gerenciamento de recursos, gerenciamento de memória e concurrencia que afetam a arquitetura de aplicativos e design de bibliotecas. O projecto foi anunciado na CppCon ' 15 por Bjarne Stroustrup e outros e acolhe com agrado as contribuições do comunidade. A maioria das orientações são complementadas com uma fundamentação e exemplos, bem como discussões sobre o possível apoio a ferramentas. Muitas regras são projetadas especificamente para serem automaticamente verificáveis por ferramentas de análise estática.

  • O super-FAQ C++ (Marshall Cline, Bjarne Stroustrup e outros) é um esforço da Fundação padrão C++ para unificar as FAQs C++ anteriormente mantidas individualmente por Marshall Cline e Bjarne Stroustrup e também incorporando novas contribuicao. Os itens abordam principalmente questões em um nível intermediário e são muitas vezes escritos com um tom humorístico. Nem todos os itens podem estar totalmente atualizados com a última edição da norma C++ ainda.

  • cppreference.com (C++03/11/14/17/...) (iniciado por Nate Kohl) é um wiki que resume o núcleo básico-recursos de linguagem e tem uma ampla documentação da biblioteca padrão C++. A documentação é muito precisa, mas é mais fácil de ler do que a documento padrão oficial e oferece melhor navegação devido à sua natureza wiki. O projeto documenta todas as versões da norma C++ e o site permite filtrar o display para uma versão específica. O projecto foi apresentado por Nate Kohl na CppCon'14 .


Clássicos / Antigos

Nota: algumas informações contidas nestes livros podem não estar actualizadas ou já não ser consideradas boas práticas.

  • O Concepção e evolução de C++ (Bjarne Stroustrup) se você quer saber por que {[11] } a linguagem é como é, este livro é onde você encontra respostas. Isto cobre tudo antes da normalização de C++.

  • Reflexões em C++ - (Andrew Koenig e Barbara Moo) [Análise]

  • estilos e expressões de Programação Avançada em C++ (James Coplien) um predecessor do padrão movimento, ele descreve muitos "idiomas" específicos de c++. É certamente um livro muito bom e ainda pode valer a pena ler se você puder dispensar o tempo, mas bastante antigo e não atualizado com o C++atual.

  • Desenho de Software C++ em grande escala (John Lakos) Lakos explica técnicas para gerenciar grandes projetos de software c++. Certamente, uma boa leitura, se estivesse actualizada. Foi escrito muito antes do C++ 98 e falha em muitas funcionalidades importantes (por exemplo, espaços de nomes). para projectos de grande escala. Se você precisa trabalhar em um grande projeto de software C++, você pode querer lê-lo, embora você precisa tomar mais do que um grão de sal com ele. O primeiro volume de uma nova edição é previsto para 2018.

  • Dentro do modelo de Objecto C++ (Stanley Lippman) se você quer saber como funções de membro virtual são comumente implementadas e como objetos de base são comumente dispostos na memória em um cenário multi-herança, e como tudo isso afeta o desempenho, é aqui que você vai encontrar discussões exaustivas sobre tais tópicos.

  • o Manual de referência C++ anotado (Bjarne Stroustrup, Margaret A. Ellis) este livro está bastante desatualizado no fato de que explora a versão C++ 2.0 de 1989 - modelos, exceções, namespaces e novos moldes ainda não foram introduzidos. Dizendo que, no entanto, este livro passa por todo o padrão C++ do tempo explicando a lógica, o possível implementações, e características da linguagem. Este não é um livro para aprender princípios e padrões de programação em C++, mas para entender todos os aspectos da linguagem C++.

  • pensar em C++ (Bruce Eckel, 2nd Edition, 2000). Two volumes; is a tutorial style free set of intro level books. Downloads: vol 1, vol 2 . Infelizmente, eles são marcados por uma série de erros triviais (por exemplo, manter que os temporários são automaticamente {[[0]}), Sem lista de errata oficial. Uma lista parcial de errata 3rd está disponível em ([[405]} http://www.computersciencelab.com/Eckel.htm mas aparentemente não é mantida.

  • Scientific and Engineering C++: An Introduction to Advanced Techniques and Examples (John Barton e Lee Nackman) É um livro abrangente e muito detalhado que tentou explicar e fazer uso de todos os recursos disponíveis Em C++, na context of numerical methods. Ele introduziu na época várias novas técnicas, como o padrão de modelo curiosamente recorrente (CRTP, também chamado de truque Barton-Nackman). Foi pioneira em várias técnicas como análise dimensional e diferenciação automática. Ele veio com um monte de código compilável e útil, variando de um analisador de expressão para um invólucro de Lapack. O código ainda está disponível aqui: http://www.informit.com/store/scientific-and-engineering-c-plus-plus-an-introduction-9780201533934. Infelizmente, os livros tornaram-se um pouco desatualizados no estilo e características C++, no entanto, foi um incrível tour-de-force na época (1994, pré-STL). Os capítulos sobre a herança dinâmica são um pouco complicados de entender e não muito úteis. Uma versão atualizada deste livro clássico que inclui semântica de movimento e as lições aprendidas com o STL seria muito bom.

 4124
Author: George Stocker, 2018-08-14 17:39:44