Guia e lista do livro C definitivo

([23]) esta questão tenta recolher uma lista dequalidade livros sobre a linguagem de programação C, orientados para vários níveis de competência.

C é uma linguagem de programação complexa que é difícil de pegar on-the-go lendo tutoriais on-line. Um livro abrangente é muitas vezes a melhor maneira de aprender a língua, e encontrar um bom livro é o primeiro passo. É importante evitar livros mal escritos, e mais importante ainda, livros que contêm erros técnicos graves.

por favor, sugira edições para a resposta aceite para adicionar livros de qualidade, com um nível aproximado de habilidade e uma breve descrição/borrão sobre cada livro. Note que a pergunta está bloqueada, por isso não serão aceites novas respostas. Uma única resposta está sendo mantida com a lista)

sinta-se livre para debater escolhas de livros, qualidade, títulos, resumos, níveis de habilidade, e qualquer outra coisa que você vê que está errado. Os livros que são considerados satisfatórios pela comunidade C aqui permanecerão na lista; o resto será removido regularmente.

para livros que têm resenhas da Associação de Usuários de C E C++ (ACCU), um link para essas resenhas deve ser adicionado juntamente com o livro.

Ver também:


esta questão foi discutida emMeta como parte da auditoria das questões suprimidas 2018.
o consenso era mantê-la intacta e activamente mantida.

 400
c
Author: lillq, 2009-02-18

1 answers

Aviso!

Esta é uma lista de livros aleatórios de qualidade diversa. Na opinião de algumas pessoas (com alguma justificação), já não é uma lista de livros recomendados. Alguns dos livros listados contêm declarações descaradamente incorretas ou ensinam práticas erradas/prejudiciais. As pessoas que estão cientes de tais livros podem editar esta resposta para ajudar a melhorá-lo. A lista de livros C enlouqueceu. O que fazer com ele?, e também suprimir a auditoria às perguntas 2018.

Referência (Todos Os Níveis)


Principiante

  • C In Easy Steps (5th Edition) - Mike McGrath (2018). É um bom livro para aprender e referenciar C.

  • Eficaz C - Robert C Seacord (2020). Uma boa introdução ao C moderno, incluindo capítulos sobre alocação de memória dinâmica, sobre a estrutura do programa, e sobre depuração, teste e análise. Ele tem alguns ponteiros para prováveis características C2x.

Intermédio

  • Modern C - Jens Gustedt (2017 1st Edn; 2020 2nd Edn). Cobre C em 5 níveis (encontro, conhecimento, cognição, experiência, ambição) de iniciando C para avançado C. cobre C11 e C17, incluindo threads e acesso atômico, o que poucos outros livros fazem. Nem todos os compiladores reconhecem essas características em todos os ambientes.

  • C Interfaces e implementações - David R. Hanson (1997). Fornece informações sobre como definir uma fronteira entre uma interface e a implementação em C de uma forma genérica e reutilizável. Demonstra igualmente este princípio aplicando-o à aplicação de mecanismos comuns. e estruturas de dados em C, tais como listas, conjuntos, exceções, manipulação de cordas, alocadores de memória, e muito mais. Basicamente, Hanson pegou todo o código que tinha escrito como parte do ícone do edifício e {158]} lcc e tirou os melhores pedaços de uma forma que outras pessoas poderiam reutilizar para seus próprios projetos. É um modelo de boa programação C usando técnicas de design modernas (incluindo a abstração de dados de Liskov), mostrando como organizar um grande projeto C como um monte de útil biblioteca.

  • The C Puzzle Book - Alan R. Feuer (1998)

  • The Standard C Library - P. J. Plauger (1992). Ele contém o código fonte completo para uma implementação da biblioteca padrão C89, juntamente com extensas discussões sobre o projeto e por que o código é projetado como mostrado.

  • 21st Century C: C Tips from the New School - Ben Klemens (2012). Além da língua C, O Livro explica gdb, valgrind, autotools e git. Os comentários sobre estilo são encontrados na última parte (Capítulo 6 e mais além).

  • Algorithms in C - Robert Sedgewick (1997). Dá-lhe uma compreensão real dos algoritmos de implementação em C. muito lúcido e claro; provavelmente fará você querer jogar fora todos os seus outros livros de algoritmos e manter este.

  • Extremo C: forçar os limites do que C e você pode fazer - Kamran Amini (2019). Este livro baseia - se no seu conhecimento C existente para ajudá-lo a tornar-se um programador C mais especialista. Tu vais. obtenha insights sobre o design de algoritmos, funções e estruturas, e entenda tanto multi-threading e multi-processamento em um ambiente POSIX.

Perito


Sem categoria

  • Essential C (Free PDF) - Nick Parlante (2003). Note que isto descreve a linguagem C90 em vários pontos ( por exemplo , ao discutir os comentários // e colocação de declarações variáveis em pontos arbitrários no código), por isso deve ser tratado com alguma cautela.

  • Q FAQ Da Programação: Perguntas Frequentes - Steve Summit (1995). Este é o livro do site listado anteriormente. Não cobre o C99 nem os padrões posteriores.

  • C in a Nutshell - Peter Prinz and Tony Crawford (2005). Excelente livro se você precisa de uma referência para C99.

  • Functional C - Pieter Hartel e Henk Muller (1997). Ensina práticas modernas que são inestimáveis para programação de baixo nível, com concurrencia e modularidade em mente.

  • The Practice of Programming - Brian W. Kernighan and Rob Pike (1999). Um livro muito bom para acompanhar o K & R. também usa C++ e Java.

  • C Traps and Pitfalls , por A. Koenig (1989). Muito bem, mas o C estilo pré-datas padrão C, O que torna menos recomendável nos dias de hoje.

    alguns argumentaram a favor da remoção de "armadilhas e armadilhas" desta lista porque encurralou algumas pessoas em cometer erros; outros continuam a argumentar a favor da sua inclusão. Talvez deva ser considerado como um livro de "expert" porque requer um conhecimento moderadamente extenso de C para entender o que mudou desde que foi publicado.

  • MISRA-C - padrão da indústria publicado e mantido pela Motor Industry Software Reliability Association. Abrange o C89 e o C99.

    embora este não seja um livro como tal, muitos programadores recomendam ler e implementar o máximo possível. MISRA-C foi originalmente concebido como diretrizes para aplicações críticas à segurança em particular, mas aplica-se a qualquer área de aplicação onde o código C estável e livre de Bugs é desejado (quem não quer menos bugs?). MISRA-C está a tornar - se o de facto padrão em toda a indústria embutida e está ficando cada vez mais popular, mesmo em outros ramos de programação. Existem (pelo menos) três publicações da norma (1998, 2004 e a versão atual de 2012). Há também um documento de orientações de Conformidade MISRA de 2016, e MISRA C:2012 Alteração 1 - orientações de segurança adicionais para MISRA c:2012 (publicado em abril de 2016).

    Note - se que algumas das restrições das regras MISRA não são apropriadas para cada contexto. Por exemplo, a Directiva 4.12 estabelece que "a atribuição dinâmica de memória não deve ser utilizada". Isto é apropriado nos sistemas incorporados para os quais as regras MISRA são projetadas; não é apropriado em toda parte. (Compiladores, por exemplo, geralmente usam alocação de memória dinâmica para coisas como tabelas de símbolos, e fazer sem alocação de memória dinâmica seria difícil, se não absurdo.)

  • Listas arquivadas de livros de ACU-reviewed em Beginner'S C (116 títulos) a partir de 2007 e avançado C (76 títulos) a partir de 2008. A maioria destes não parecem estar mais no site principal, e você não pode navegar por esse assunto de qualquer maneira.


Advertências

Existe uma lista de livros e tutoriais a ser cautelosos na ISO 9899 Wiki, que não está formalmente associada à norma ISO ou à norma C, mas contém informações sobre a norma C (embora contenha o lançamento da norma ISO 9899: 2011 e não mencionar a versão da norma ISO 9899: 2018).

Cuidado com os livros escritos por Herbert Schildt . Em particular, você deve ficar longe de C: A referência completa (4ª edição, 2000), conhecida em alguns círculos como C: O completo absurdo.

Também não use o livro deixe-nos C (16TH Edition, 2017) by Yashwant Kanetkar. Muitas pessoas vêem isso como um livro desatualizado que ensina Turbo C e tem muitos materiais obsoletos, enganosos e incorretos. Por exemplo, a página 137 discute o resultado esperado de printf("%d %d %d\n", a, ++a, a++) e não o categoriza como comportamento indefinido como deveria. Também promove de forma consistente práticas de codificação importáveis e buggy, como o uso gets, %[\n]s em scanf, armazenar o valor de retorno de getchar numa variável do tipo char ou utilizar fflush em stdin.

Learn C The Hard Way (2015) por Zed Shaw. Um livro com críticas mistas. Uma crítica a este livro Hentenaar:

Para resumir os meus pontos de vista, que são apresentados a seguir, o autor apresenta o material de uma forma muito simplista e enganosa, todo o corpo é uma confusão, e algumas das opiniões e análises que oferece são simplesmente erradas. Eu tentei ver este livro através dos olhos de um novato, mas infelizmente eu sou tendenciosa por anos de experiência escrevendo código em C. É óbvio para mim que ou o autor tem uma compreensão errada de C, ou ele está deliberadamente simplificando ao ponto em que ele está realmente enganando o leitor (intencionalmente ou de outra forma).

"aprender C da maneira difícil" não é um livro que eu poderia recomendar a alguém que está aprendendo a programar e a aprender C. Se você já é um programador competente em alguma outra língua relacionada, então representa uma exposição interessante e incomum sobre C, embora eu tenha reservas sobre partes do livro. Jonathan. Leffler


Desactualizado


outros contribuintes, não necessariamente creditados no histórico de revisões, incluem::
Alex Lockwood , Ben Jackson, bolhas , garras , coledot , Dana Robinson, Daniel Holden, sebest , Dervin Tunk , dwc , Erci Hou , Garen , haziz , Johan Bezem , Jonathan Leffler, Joshua Partogi , Lucas , Lundin , Matt K. , Mossplix , Matthieu M. , midor , Nietzche-jou , Norman Ramsey, r3st0r3 , livre-se , Robert S. Barnes , Steve Summit, Tim Anel , Tony Bai , VMAtm

 512
Author: Jonathan Leffler, 2020-12-15 07:13:51