Atenção
Esta é uma lista de livros aleatórios de qualidade diversa. Na opinião de algumas pessoas (com alguma justificativa), não é mais uma lista de livros recomendados. Alguns dos livros listados contêm declarações flagrantemente incorretas ou ensinam práticas erradas / prejudiciais. As pessoas que conhecem esses livros podem editar esta resposta para ajudar a melhorá-la. Consulte A lista de livros em C deu errado. O que fazer com isso? , e também Auditoria de perguntas excluídas 2018 .
Referência (todos os níveis)
Principiante
Intermediário
Modern C - Jens Gustedt (1º Edn de 2017; 2º Edn de 2020). Abrange C em 5 níveis (encontro, conhecimento, cognição, experiência, ambição) do início C ao avançado C. Abrange C11 e C17, incluindo threads e acesso atômico, o que poucos outros livros fazem. Nem todos os compiladores reconhecem esses recursos em todos os ambientes.
C Interfaces e implementações - David R. Hanson (1997). Fornece informações sobre como definir um limite entre uma interface e implementação em C de maneira genérica e reutilizável. Ele também demonstra esse princípio aplicando-o à implementação de mecanismos e estruturas de dados comuns em C, como listas, conjuntos, exceções, manipulação de cadeias, alocadores de memória e muito mais. Basicamente, Hanson pegou todo o código que ele havia escrito como parte da construção de Icon e lcc e retirou os melhores bits de uma forma que outras pessoas poderiam reutilizar em seus próprios projetos. É um modelo de boa programação C usando técnicas modernas de design (incluindo a abstração de dados de Liskov), mostrando como organizar um grande projeto C como um monte de bibliotecas úteis.
The C Puzzle Book - Alan R. Feuer (1998)
A biblioteca C padrão - PJ Plauger (1992). Ele contém o código fonte completo para uma implementação da biblioteca padrão C89, juntamente com uma extensa discussão sobre o design e por que o código foi projetado como mostrado.
Século XXI C: C Dicas da Nova Escola - Ben Klemens (2012). Além da linguagem C, o livro explica gdb, valgrind, autotools e git. Os comentários sobre estilo são encontrados na última parte (capítulo 6 e além).
Algoritmos em C - Robert Sedgewick (1997). Oferece uma compreensão real dos algoritmos de implementação em C. Muito lúcido e claro; provavelmente fará com que você queira jogar fora todos os outros livros de algoritmos e manter este.
Ponteiros em C - Kenneth Reek (1997).
Ponteiros em C - Naveen Toppo e Hrishikesh Dewan (2013).
Resolução de Problemas e Design de Programas em C (6ª Edição) - Jeri R. Hanly e Elliot B. Koffman (2009).
Estruturas de dados - uma abordagem avançada usando C - Jeffrey Esakov e Tom Weiss (1989).
C Desencadeado - Richard Heathfield, Lawrence Kirby, et al. (2000) Não é o ideal, mas vale a pena programadores intermediários praticarem os problemas escritos neste livro. Essa é uma boa abordagem semelhante a um livro de receitas sugerida por colaboradores do comp.lang.c.
Especialista
Sem categoria
Essential C (PDF gratuito) - Nick Parlante (2003). Observe que isso descreve a linguagem C90 em vários pontos ( por exemplo , na discussão de //
comentários e na colocação de declarações de variáveis em pontos arbitrários do código); portanto, deve ser tratado com alguma cautela.
C Perguntas freqüentes sobre programação: perguntas freqüentes - Steve Summit (1995). Este é o livro do site listado anteriormente. Não cobre C99 ou os padrões posteriores.
C em poucas palavras - Peter Prinz e Tony Crawford (2005). Excelente livro, se você precisar de uma referência para C99.
C funcional - Pieter Hartel e Henk Muller (1997). Ensina práticas modernas que são inestimáveis para programação de baixo nível, com simultaneidade e modularidade em mente.
A Prática da Programação - Brian W. Kernighan e Rob Pike (1999). Um livro muito bom para acompanhar K&R. Ele também usa C ++ e Java.
C Armadilhas e Armadilhas de A. Koenig (1989). Muito bom, mas o estilo C antecede o padrão C, o que o torna menos recomendável atualmente.
Alguns argumentaram pela remoção de 'Armadilhas e Armadilhas' desta lista, porque prendeu algumas pessoas a cometer erros; outros continuam a defender sua inclusão. Talvez deva ser considerado um livro de "especialistas" porque requer um conhecimento moderadamente extenso de C para entender o que mudou desde que foi publicado.
Crie seu próprio Lisp - Daniel Holden (2014). Uma maneira agradável de aprender C.
MISRA-C - padrão da indústria publicado e mantido pela Motor Industry Software Reliability Association. Abrange C89 e C99.
Embora esse livro não seja um livro, muitos programadores recomendam a leitura e a implementação o máximo possível. O MISRA-C foi originalmente concebido como diretrizes para aplicações críticas de segurança em particular, mas se aplica a qualquer área de aplicação em que seja desejado um código C estável e sem erros (quem não quer menos bugs?). O MISRA-C está se tornando o padrão de fato em toda a indústria incorporada e está se tornando cada vez mais popular, mesmo em outros ramos de programação. Existem (pelo menos) três publicações do padrão (1998, 2004 e a versão atual de 2012). Há também um documento das Diretrizes de conformidade da MISRA de 2016 e a Emenda 1 da MISRA C: 2012: Diretrizes adicionais de segurança para a MISRA C: 2012 (publicada em abril de 2016).
Observe que algumas das restrições nas regras MISRA não são apropriadas para todos os contextos. Por exemplo, a diretiva 4.12 indica "A alocação dinâmica de memória não deve ser usada". Isso é apropriado nos sistemas incorporados para os quais as regras MISRA são projetadas; não é apropriado em qualquer lugar. (Os compiladores, por exemplo, geralmente usam alocação de memória dinâmica para coisas como tabelas de símbolos, e ficar sem alocação de memória dinâmica seria difícil, se não absurdo.)
Listas arquivadas de livros revisados pela ACCU no C para iniciantes (116 títulos) de 2007 e no Avançado C (76) de 2008. A maioria deles não parece mais estar no site principal, e você não pode procurar por assunto de qualquer forma.
Advertências
Desconfie de livros escritos por Herbert Schildt . Em particular, você deve ficar longe de C: The Complete Reference (4ª Edição, 2000), conhecido em alguns círculos como C: The Complete Nonsense.
Também não use o livro Let Us C (16 ª edição, 2017) de Yashwant Kanetkar. Muitas pessoas o veem como um livro desatualizado que ensina o Turbo C e tem muito material obsoleto, enganoso e incorreto. Por exemplo, a página 137 discute a saída esperada printf("%d %d %d\n", a, ++a, a++)
e não a categoriza como comportamento indefinido como deveria.
Learn C The Hard Way (2015) de Zed Shaw. Um livro com críticas mistas.
Uma crítica a este livro de Tim Hentenaar:
Para resumir minhas opiniões, que são apresentadas abaixo, o autor apresenta o material de uma maneira muito simplificada e enganosa, todo o corpus é uma bagunça, e algumas das opiniões e análises que ele oferece estão completamente erradas. Tentei ver este livro pelos olhos de um iniciante, mas infelizmente sou influenciado por anos de experiência escrevendo código em C. É óbvio para mim que ou o autor tem um entendimento defeituoso de C ou está deliberadamente simplificando demais o ponto em que ele está realmente enganando o leitor (intencionalmente ou não).
"Aprenda C da maneira mais difícil" não é um livro que eu poderia recomendar a alguém que está aprendendo a programar e aprendendo C. Se você já é um programador competente em algum outro idioma relacionado, isso representa uma exposição interessante e incomum sobre C, embora eu tenha reservas sobre partes do livro. Jonathan Leffler
Desatualizado
Outros colaboradores , não necessariamente creditados no histórico de revisões, incluem:
Alex Lockwood ,
Ben Jackson ,
Bubbles ,
garras ,
coledot ,
Dana Robinson ,
Daniel Holden ,
Dervin Thunk ,
dwc ,
Erci Hou ,
Garen ,
Haziz ,
Johan Bezem ,
Jonathan Leffler , Joshua e
Joshua. Partogi ,
Lucas ,
Lundin ,
Matt K. ,
Mossplix ,
Matthieu M. ,
midor ,
Nietzche-jou ,
Norman Ramsey ,
r3st0r3 ,
ridthyself ,
Robert S. Barnes ,
Steve Summit ,
Tim Ring ,
Tony Bai ,
VMAtm