Guia e lista do livro C definitivo
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:
- outros recursos relacionados com o C no c tag wiki
- uma lista semelhante para c++: O Guia Definitivo do livro C++ e List
esta questão foi discutida emMeta como parte da auditoria das questões suprimidas 2018.
o consenso era mantê-la intacta e activamente mantida.
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)
-
The C Programming Language (2nd Edition) - Brian W. Kernighan and Dennis M. Ritchie (1988). Ainda uma boa, curta, mas completa Introdução A C (C90, não C99 ou versões posteriores), escrito pelo inventor de C. No entanto, a língua mudou e bom estilo C se desenvolveu nos últimos 25 anos, e há partes do livro que mostram sua idade.
-
C: Manual de referência (5 Edition) - Samuel P. Harbison and Guy R. Steele (2002). Um excelente livro de referência sobre C, até C99 inclusive. Não é um tutorial, e provavelmente impróprio para iniciantes. É ótimo se você precisar escrever um compilador para C, como os autores tiveram que fazer quando eles começaram.
-
C Pocket Reference (O'Reilly) - Peter Prinz e Ulla Kirch-Prinz (2002).
-
O concurso.idioma.- Steve Summit. Site com respostas a muitas perguntas sobre C.
-
Podem ser encontradas várias versões das normas da língua C Aqui. Existe uma versão online da norma draft C11 .
-
The new C standard-an annotated reference (Free PDF) - Derek M. Jones (2009). O "novo padrão" referido é o antigo padrão C99 em vez de C11.
Principiante
-
C Programming: A Modern Approach (2nd Edition) - K. N. King (2008). Um bom livro para aprender C.
-
Programming in C (4th Edition) - Stephen Kochan (2014). Uma boa introdução geral e tutorial.
-
C Primer Plus (5th Edition) - Stephen Prata (2004)
-
Um livro sobre C - Al Kelley / Ira Pohl (1998).
-
The c Book (Free Online) - Mike Banahan, Declan Brady, and Mark Doran (1991).
-
C: Como Programar (8ª Edição) - Paul Deitel e Harvey M. Deitel (2015). Muitas boas dicas e boas práticas para iniciantes. O índice é muito bom e serve como uma referência decente (apenas não totalmente abrangente, e muito superficial).
-
Beginning C (5th Edition) - Ivor Horton (2013). Muito boa explicação de ponteiros, usando muitos programas pequenos, mas completos.
-
Sams Teach Yourself C in 21 Days - Bradley L. Jones and Peter Aitken (2002). Muito bom material introdutório.
-
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.
- pontos em C - Kenneth Reek (1997).
-
Problem Solving and Program Design in C (6th Edition) - Jeri R. Hanly and Elliot B. Koffman (2009).
-
Estruturas de dados - uma abordagem avançada utilizando C - Jeffrey Esakov e Tom Weiss (1989).
- Object-oriented Programming with ANSI-C (Free PDF)-Axel-Tobias Schreiner (1993). O código fica um pouco complicado. Se quiser C++, use C++. Só usa C90, claro.
- 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
-
Expert C Programming: Deep C Secrets - Peter van der Linden (1994). Muitas informações interessantes e histórias de guerra da equipe de compiladores Sun, mas um pouco datadas em lugares.
-
Programação C avançada por exemplo - John W. Perry (1998).
-
Advanced Programming in the UNIX Environment - Richard W. Stevens and Stephen A. Rago (2013). Descrição abrangente de como usar as APIs Unix do código C, mas não tanto sobre a mecânica da codificação C.
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
.
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
- programação prática C (3. a Edição) - Steve Oualline (1997) (principiante)
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