Diese Frage versucht eine Gemeinschaft gepflegt Liste zu sammeln Qualität Bücher über diec Programmiersprache für verschiedene Schwierigkeitsgrade.
C ist eine komplexe Programmiersprache, die unterwegs nur schwer durch Lesen von Online-Tutorials zu erlernen ist. Ein umfassendes Buch ist oft der beste Weg, um die Sprache zu lernen, und ein gutes Buch zu finden, ist der erste Schritt. Es ist wichtig, schlecht geschriebene Bücher und vor allem Bücher mit schwerwiegenden technischen Fehlern zu vermeiden.
Bitte schlagen Sie Änderungen an der akzeptierten Antwort vor, um qualitativ hochwertige Bücher mit einem ungefähren Kenntnisstand und einem kurzen Klappentext / einer Beschreibung zu jedem Buch hinzuzufügen. ( Beachten Sie, dass die Frage gesperrt ist, sodass keine neuen Antworten akzeptiert werden. Eine einzelne Antwort mit der Liste wird beibehalten. )
Sie können gerne über Buchauswahl, Qualität, Überschriften, Zusammenfassungen, Fähigkeiten und alles andere diskutieren, was falsch ist. Bücher, die von der C-Community hier als zufriedenstellend eingestuft werden, bleiben auf der Liste. Der Rest wird regelmäßig entfernt.
Bei Büchern mit Rezensionen der Association of C and C ++ Users (ACCU) sollte zusammen mit dem Buch ein Link zu diesen Rezensionen hinzugefügt werden.
Siehe auch:
- Andere C-bezogene Ressourcen in der c Tag Wiki
- Eine ähnliche Liste für c ++: Das endgültige C ++ - Buchhandbuch und die Liste
Diese Frage wurde auf Meta im Rahmen des Audits für gelöschte Fragen 2018 erörtert .
Der Konsens bestand darin, es nicht gelöscht und aktiv aufrechtzuerhalten.
Antworten:
Warnung
Dies ist eine Liste von zufälligen Büchern unterschiedlicher Qualität. Nach Ansicht einiger Leute (mit einigem Recht) handelt es sich nicht mehr um eine Liste empfohlener Bücher. Einige der aufgelisteten Bücher enthalten offensichtlich falsche Aussagen oder lehren falsche / schädliche Praktiken. Personen, die solche Bücher kennen, können diese Antwort bearbeiten, um sie zu verbessern. Siehe Die C-Buchliste ist durcheinander geraten. Was soll man damit machen? und auch Audit für gelöschte Fragen 2018 .
Referenz (Alle Ebenen)
Die Programmiersprache C (2. Auflage) - Brian W. Kernighan und Dennis M. Ritchie (1988). Immer noch eine gute, kurze, aber vollständige Einführung in C (C90, nicht C99 oder spätere Versionen), geschrieben vom Erfinder von C. Die Sprache hat sich jedoch geändert und in den letzten 25 Jahren hat sich ein guter C-Stil entwickelt, und es gibt Teile von das Buch, das sein Alter zeigt.
C: Ein Referenzhandbuch (5. Auflage) - Samuel P. Harbison und Guy R. Steele (2002). Ein ausgezeichnetes Nachschlagewerk über C bis einschließlich C99. Es ist kein Tutorial und wahrscheinlich nicht für Anfänger geeignet. Es ist großartig, wenn Sie einen Compiler für C schreiben müssen, wie es die Autoren zu Beginn tun mussten.
C Taschenreferenz (O'Reilly) - Peter Prinz und Ulla Kirch-Prinz (2002).
Die comp.lang.c FAQ - Steve Summit. Website mit Antworten auf viele Fragen zu C.
Verschiedene Versionen der C-Sprachstandards finden Sie hier . Es gibt eine Online-Version des Entwurfs des C11-Standards .
Der neue C-Standard - eine kommentierte Referenz (kostenloses PDF) - Derek M. Jones (2009). Der "neue Standard", auf den Bezug genommen wird, ist der alte C99-Standard und nicht C11.
Begründung für den C99-Standard .
Anfänger
C-Programmierung: Ein moderner Ansatz (2. Auflage) - KN King (2008). Ein gutes Buch zum Lernen C.
Programmierung in C (4. Auflage) - Stephen Kochan (2014). Eine gute allgemeine Einführung und ein Tutorial.
C Primer Plus (5. Auflage) - Stephen Prata (2004)
Ein Buch über C - Al Kelley / Ira Pohl (1998).
Das C-Buch (kostenlos online) - Mike Banahan, Declan Brady und Mark Doran (1991).
C: Programmieren (8. Auflage) - Paul Deitel und Harvey M. Deitel (2015). Viele gute Tipps und Best Practices für Anfänger. Der Index ist sehr gut und dient als anständige Referenz (nur nicht vollständig und sehr flach).
Head First C - David Griffiths und Dawn Griffiths (2012).
Beginn C (5. Auflage) - Ivor Horton (2013). Sehr gute Erklärung von Zeigern mit vielen kleinen, aber vollständigen Programmen.
Sams bringt sich in 21 Tagen C bei - Bradley L. Jones und Peter Aitken (2002). Sehr gutes Einführungsmaterial.
Anwendungsprogrammierung in ANSI C - Richard Johnsonbaugh und Martin Kalin (1996).
Mittlere
Modernes C - Jens Gustedt (2017 1. Ausgabe; 2020 2. Ausgabe). Deckt C in 5 Ebenen (Begegnung, Bekanntschaft, Erkenntnis, Erfahrung, Ehrgeiz) von Anfang C bis Fortgeschrittene C ab. Es behandelt C11 und C17, einschließlich Threads und atomaren Zugriff, wie es nur wenige andere Bücher tun. Nicht alle Compiler erkennen diese Funktionen in allen Umgebungen.
C Schnittstellen und Implementierungen - David R. Hanson (1997). Bietet Informationen zum generischen und wiederverwendbaren Definieren einer Grenze zwischen einer Schnittstelle und der Implementierung in C. Dieses Prinzip wird auch demonstriert, indem es auf die Implementierung allgemeiner Mechanismen und Datenstrukturen in C angewendet wird, z. B. Listen, Mengen, Ausnahmen, Zeichenfolgenmanipulation, Speicherzuordnungen und mehr. Im Grunde genommen nahm Hanson den gesamten Code, den er beim Erstellen von Icon und lcc geschrieben hatte, und holte die besten Teile in einer Form heraus, die andere Leute für ihre eigenen Projekte wiederverwenden konnten. Es ist ein Modell für eine gute C-Programmierung unter Verwendung moderner Entwurfstechniken (einschließlich der Datenabstraktion von Liskov), das zeigt, wie ein großes C-Projekt als eine Reihe nützlicher Bibliotheken organisiert wird.
Das C-Puzzle-Buch - Alan R. Feuer (1998)
Die Standard C Bibliothek - PJ Plauger (1992). Es enthält den vollständigen Quellcode für eine Implementierung der C89-Standardbibliothek sowie eine ausführliche Diskussion über das Design und warum der Code wie gezeigt entworfen wurde.
C: C-Tipps des 21. Jahrhunderts von der neuen Schule - Ben Klemens (2012). Zusätzlich zur C-Sprache erklärt das Buch gdb, valgrind, autotools und git. Die Kommentare zum Stil finden Sie im letzten Teil (Kapitel 6 und darüber hinaus).
Algorithmen in C - Robert Sedgewick (1997). Gibt Ihnen einen guten Einblick in die Implementierung von Algorithmen in C. Sehr klar und klar; wird Sie wahrscheinlich dazu bringen, all Ihre anderen Algorithmenbücher wegzuwerfen und dieses zu behalten.
Hinweise auf C - Kenneth Reek (1997).
Zeiger in C - Naveen Toppo und Hrishikesh Dewan (2013).
Problemlösung und Programmgestaltung in C (6. Auflage) - Jeri R. Hanly und Elliot B. Koffman (2009).
Datenstrukturen - Ein fortschrittlicher Ansatz unter Verwendung von C - Jeffrey Esakov und Tom Weiss (1989).
C entfesselt - Richard Heathfield, Lawrence Kirby et al. (2000). Nicht ideal, aber es lohnt sich für fortgeschrittene Programmierer, die in diesem Buch beschriebenen Probleme zu üben. Dies ist ein guter kochbuchähnlicher Ansatz, der von Comp.lang.c-Mitarbeitern vorgeschlagen wird.
Experte
Experten-C-Programmierung: Deep C Secrets - Peter van der Linden (1994). Viele interessante Informationen und Kriegsgeschichten vom Sun-Compiler-Team, aber stellenweise etwas veraltet.
Fortgeschrittene C-Programmierung am Beispiel - John W. Perry (1998).
Erweiterte Programmierung in der UNIX-Umgebung - Richard W. Stevens und Stephen A. Rago (2013). Umfassende Beschreibung der Verwendung der Unix-APIs aus C-Code, jedoch nicht so sehr die Mechanik der C-Codierung.
Nicht kategorisiert
Essential C (kostenloses PDF) - Nick Parlante (2003). Beachten Sie, dass dies die C90-Sprache an mehreren Stellen beschreibt ( z. B. bei der Erörterung von
//
Kommentaren und der Platzierung von Variablendeklarationen an beliebigen Stellen im Code). Daher sollte sie mit einiger Vorsicht behandelt werden.C Häufig gestellte Fragen zur Programmierung: Häufig gestellte Fragen - Steve Summit (1995). Dies ist das Buch der zuvor aufgeführten Website. C99 oder die späteren Standards werden nicht behandelt.
C auf den Punkt gebracht - Peter Prinz und Tony Crawford (2005). Ausgezeichnetes Buch, wenn Sie eine Referenz für C99 benötigen.
Funktionale C - Pieter Hartel und Henk Müller (1997). Lehrt moderne Praktiken, die für die Programmierung auf niedriger Ebene von unschätzbarem Wert sind, unter Berücksichtigung von Parallelität und Modularität.
Die Programmierpraxis - Brian W. Kernighan und Rob Pike (1999). Ein sehr gutes Buch zur Begleitung von K & R. Es verwendet auch C ++ und Java.
C Fallen und Fallstricke von A. Koenig (1989). Sehr gut, aber der C-Stil datiert vor Standard C, was ihn heutzutage weniger empfehlenswert macht.
Einige haben sich dafür ausgesprochen, "Fallen und Fallstricke" aus dieser Liste zu streichen, weil dadurch einige Leute in Fehler geraten sind. andere argumentieren weiterhin für seine Aufnahme. Vielleicht sollte es als "Expertenbuch" angesehen werden, da es ein mäßig umfangreiches Wissen über C erfordert, um zu verstehen, was sich seit seiner Veröffentlichung geändert hat.
Bauen Sie Ihr eigenes Lisp - Daniel Holden (2014). Eine unterhaltsame Art, C. zu lernen.
MISRA-C - Industriestandard, veröffentlicht und gepflegt von der Motor Industry Software Reliability Association. Deckt C89 und C99 ab.
Obwohl dies kein Buch als solches ist, empfehlen viele Programmierer, so viel wie möglich davon zu lesen und zu implementieren. MISRA-C war ursprünglich als Richtlinie für sicherheitskritische Anwendungen gedacht, gilt jedoch für alle Anwendungsbereiche, in denen stabiler, fehlerfreier C-Code gewünscht wird (wer möchte nicht weniger Fehler?). MISRA-C wird zum De-facto-Standard in der gesamten Embedded-Branche und wird auch in anderen Programmierbranchen immer beliebter. Es gibt (mindestens) drei Veröffentlichungen des Standards (1998, 2004 und die aktuelle Version von 2012). Es gibt auch ein Dokument mit den MISRA-Konformitätsrichtlinien aus dem Jahr 2016 und MISRA C: 2012, Änderung 1 - Zusätzliche Sicherheitsrichtlinien für MISRA C: 2012 (veröffentlicht im April 2016).
Beachten Sie, dass einige der Einschränkungen in den MISRA-Regeln nicht für jeden Kontext geeignet sind. In der Richtlinie 4.12 heißt es beispielsweise "Dynamische Speicherzuweisung darf nicht verwendet werden". Dies ist in den eingebetteten Systemen angemessen, für die die MISRA-Regeln entwickelt wurden. es ist nicht überall angebracht. (Compiler verwenden beispielsweise im Allgemeinen die dynamische Speicherzuweisung für Dinge wie Symboltabellen, und es wäre schwierig, wenn nicht absurd, auf eine dynamische Speicherzuweisung zu verzichten.)
Archivierte Listen von ACCU-geprüften Büchern zu Beginner's C (116 Titel) aus dem Jahr 2007 und Advanced C (76 Titel) aus dem Jahr 2008. Die meisten davon scheinen nicht mehr auf der Hauptseite zu sein, und Sie können sie nicht nach Themen durchsuchen wie auch immer.
Warnungen
Seien Sie vorsichtig mit Büchern von Herbert Schildt . Insbesondere sollten Sie sich von C: The Complete Reference (4. Auflage, 2000) fernhalten , das in einigen Kreisen als C: The Complete Nonsense bekannt ist.
Verwenden Sie auch nicht das Buch Let Us C (16 th Edition 2017) von Yashwant Kanetkar. Viele Leute sehen es als ein veraltetes Buch an, das Turbo C lehrt und viel veraltetes, irreführendes und falsches Material enthält. Auf Seite 137 wird beispielsweise die erwartete Ausgabe von erläutert
printf("%d %d %d\n", a, ++a, a++)
und nicht als undefiniertes Verhalten eingestuft, wie es sollte.Lerne C The Hard Way (2015) von Zed Shaw. Ein Buch mit gemischten Rezensionen. Eine Kritik dieses Buches von Tim Hentenaar:
"Learn C The Hard Way" ist kein Buch, das ich jemandem empfehlen könnte, der sowohl das Programmieren als auch das Lernen von C lernt. Wenn Sie bereits ein kompetenter Programmierer in einer anderen verwandten Sprache sind, dann ist es eine interessante und ungewöhnliche Darstellung von C, obwohl ich Vorbehalte gegen Teile des Buches habe. Jonathan Leffler
Veraltet
Andere Mitwirkende , die nicht unbedingt in der Revisionsgeschichte aufgeführt sind, sind:
Alex Lockwood , Ben Jackson , Blasen , Krallen , Coledot , Dana Robinson , Daniel Holden , Dervin Thunk , Dwci , Erci Hou , Garen , Haziz , Johan Bezem , Jonathan Leffler , Joshua Partogi , Lucas , Lundin , Matt K. , Mossplix , Matthieu M. , Midor , Nietzche-jou , Norman Ramsey , r3st0r3 , sich selbst , Robert S. Barnes , Steve Summit , Tim Ring , Tony Bai , VMAtm
quelle
<Modern C>
sehr lesenswert, es verwendet viel c99 & c11 Syntax, sehr kompakt und gut geschrieben. Und weisst du was? Es ist kostenlos !!! Sie können die neueste Version hier als PDF herunterladen: icube-icps.unistra.fr/img_auth.php/d/db/ModernC.pdf ( Übrigens , der Autor aktualisiert und veröffentlicht das Buch bei Bedarf unter dem obigen Link)