Ostrzeżenie
To jest lista losowych książek o różnej jakości. Zdaniem niektórych osób (z pewnym uzasadnieniem) nie jest to już lista zalecanych książek. Niektóre z wymienionych książek zawierają rażąco niepoprawne stwierdzenia lub uczą złych / szkodliwych praktyk. Osoby znające takie książki mogą edytować tę odpowiedź, aby ją poprawić. Zobacz listę książek C zwariował. Co z tym zrobić? , a także usunięto kontrolę pytań 2018 .
Referencje (wszystkie poziomy)
Język programowania C (wydanie drugie) - Brian W. Kernighan i Dennis M. Ritchie (1988). Wciąż dobre, krótkie, ale kompletne wprowadzenie do C (C90, nie C99 lub nowsze wersje), napisane przez wynalazcę C. Jednak język się zmienił i dobry styl C rozwinął się w ciągu ostatnich 25 lat, a niektóre części książka, która pokazuje jej wiek.
C: A Reference Manual (wydanie 5) - Samuel P. Harbison i Guy R. Steele (2002). Doskonały podręcznik na temat C, do C99 włącznie. To nie jest samouczek i prawdopodobnie nie nadaje się dla początkujących. Świetnie, jeśli musisz napisać kompilator dla C, tak jak zrobili to autorzy, gdy zaczęli.
C Pocket Reference (O'Reilly) - Peter Prinz i Ulla Kirch-Prinz (2002).
Często zadawane pytania dotyczące comp.lang.c - Steve Summit. Strona internetowa z odpowiedziami na wiele pytań dotyczących C.
Różne wersje standardów języka C można znaleźć tutaj . Dostępna jest wersja online projektu standardu C11 .
Nowy standard C - odniesienie z adnotacjami (bezpłatny PDF) - Derek M. Jones (2009). „Nowy standard”, o którym mowa, to stary standard C99 zamiast C11.
Uzasadnienie dla standardu C99 .
Początkujący
Pośredni
Modern C - Jens Gustedt (2017 1st Edn; 2020 2nd Edn). Obejmuje C na 5 poziomach (spotkanie, znajomość, poznanie, doświadczenie, ambicja) od początku C do zaawansowanego C. Obejmuje C11 i C17, w tym wątki i dostęp atomowy, co robi niewiele innych książek. Nie wszystkie kompilatory rozpoznają te funkcje we wszystkich środowiskach.
C Interfejsy i implementacje - David R. Hanson (1997). Zawiera informacje na temat definiowania granicy między interfejsem a implementacją w języku C w sposób ogólny i wielokrotnego użytku. Demonstruje również tę zasadę, stosując ją do implementacji wspólnych mechanizmów i struktur danych w C, takich jak listy, zestawy, wyjątki, manipulacje ciągami, alokatory pamięci i inne. Zasadniczo Hanson wziął cały kod, który napisał w ramach budowania Icon i lcc, i wyciągnął najlepsze fragmenty w formie, którą inni mogliby wykorzystać do własnych projektów. Jest to model dobrego programowania w C z wykorzystaniem nowoczesnych technik projektowania (w tym abstrakcja danych Liskowa), pokazujący, jak zorganizować duży projekt C jako zbiór przydatnych bibliotek.
Puzzle C - Alan R. Feuer (1998)
The Standard C Library - PJ Plauger (1992). Zawiera kompletny kod źródłowy do implementacji standardowej biblioteki C89, wraz z obszerną dyskusją na temat projektu i dlaczego kod został zaprojektowany tak, jak pokazano.
21st Century C: C Wskazówki z nowej szkoły - Ben Klemens (2012). Oprócz języka C książka wyjaśnia gdb, valgrind, autotools i git. Komentarze na temat stylu znajdują się w ostatniej części (rozdział 6 i kolejne).
Algorytmy w C - Robert Sedgewick (1997). Daje ci prawdziwy wgląd w algorytmy implementacji w C. Bardzo przejrzysty i przejrzysty; prawdopodobnie sprawi, że będziesz chciał wyrzucić wszystkie swoje książki z algorytmami i zachować ten.
Pointers on C - Kenneth Reek (1997).
Pointers in C - Naveen Toppo and Hrishikesh Dewan (2013).
Rozwiązywanie problemów i projektowanie programów w C (wydanie 6) - Jeri R. Hanly i Elliot B. Koffman (2009).
Struktury danych - zaawansowane podejście z wykorzystaniem C - Jeffrey Esakov i Tom Weiss (1989).
C Unleashed - Richard Heathfield, Lawrence Kirby i in. (2000). Nie jest to idealne, ale warto pośrednich programistów ćwiczących problemy napisane w tej książce. Jest to dobre podejście podobne do książki kucharskiej sugerowane przez współtwórców comp.lang.c.
Ekspert
Bez kategorii
Essential C (bezpłatny plik PDF) - Nick Parlante (2003). Zauważ, że opisuje to język C90 w kilku punktach ( np. Podczas omawiania //
komentarzy i umieszczania deklaracji zmiennych w dowolnych punktach kodu), dlatego należy zachować ostrożność.
Często zadawane pytania dotyczące programowania C: Często zadawane pytania - Steve Summit (1995). To jest książka strony internetowej wymienionej wcześniej. Nie obejmuje C99 ani późniejszych standardów.
C in a Nutshell - Peter Prinz i Tony Crawford (2005). Doskonała książka, jeśli potrzebujesz referencji do C99.
Funkcjonalne C - Pieter Hartel i Henk Muller (1997). Uczy nowoczesnych praktyk, które są nieocenione w programowaniu na niskim poziomie, z uwzględnieniem współbieżności i modułowości.
Praktyka programowania - Brian W. Kernighan i Rob Pike (1999). Bardzo dobra książka do towarzyszenia K&R. Używa także C ++ i Java.
C Pułapki i pułapki A. Koeniga (1989). Bardzo dobrze, ale styl C wyprzedza standardowy C, co czyni go mniej godnym polecenia w dzisiejszych czasach.
Niektórzy opowiadali się za usunięciem „pułapek i pułapek” z tej listy, ponieważ uwięziło to niektórych ludzi w popełnianiu błędów; inni nadal opowiadają się za jego włączeniem. Być może należy ją traktować jako książkę „ekspercką”, ponieważ wymaga ona umiarkowanie obszernej znajomości języka C, aby zrozumieć, co się zmieniło od czasu publikacji.
Zbuduj własne Lisp - Daniel Holden (2014). Przyjemny sposób na naukę C.
MISRA-C - standard branżowy opublikowany i utrzymywany przez Stowarzyszenie Niezawodności Oprogramowania Przemysłu Motoryzacyjnego. Obejmuje C89 i C99.
Chociaż nie jest to książka jako taka, wielu programistów zaleca przeczytanie i wdrożenie jej jak największej liczby. MISRA-C pierwotnie miał służyć przede wszystkim jako wytyczne dla aplikacji krytycznych dla bezpieczeństwa, ale ma zastosowanie do każdego obszaru aplikacji, w którym pożądany jest stabilny, wolny od błędów kod C (kto nie chce mniej błędów?). MISRA-C staje się de facto standardem w całej branży systemów wbudowanych i zyskuje coraz większą popularność nawet w innych gałęziach programowania. Istnieją (przynajmniej) trzy publikacje standardu (1998, 2004 i aktualna wersja z 2012 roku). Istnieje również dokument Wytycznych zgodności MISRA z 2016 r. Oraz MISRA C: 2012 Poprawka 1 - Dodatkowe wytyczne bezpieczeństwa dla MISRA C: 2012 (opublikowane w kwietniu 2016 r.).
Należy pamiętać, że niektóre ograniczenia w regułach MISRA nie są odpowiednie w każdym kontekście. Na przykład dyrektywa 4.12 stanowi: „Nie należy stosować dynamicznego przydziału pamięci”. Jest to właściwe w systemach wbudowanych, dla których zaprojektowano reguły MISRA; nie wszędzie jest to właściwe. (Na przykład kompilatory zwykle używają dynamicznej alokacji pamięci do takich rzeczy jak tablice symboli, a obejście się bez dynamicznej alokacji pamięci byłoby trudne, jeśli nie niedorzeczne.)
Zarchiwizowane listy książek recenzowanych przez ACCU na temat Beginner's C (116 tytułów) z 2007 roku i Advanced C (76 tytułów) z 2008 roku. Większość z nich nie wygląda już na główną stronę i nie można przeglądać tego według tematu tak czy siak.
Ostrzeżenia
Uważaj na książki Herberta Schildta . W szczególności powinieneś trzymać się z dala od C: The Complete Reference (4th Edition, 2000), znanego w niektórych kręgach jako C: The Complete Nonsense.
Również nie korzystać z książki Let Us C (16 th Edition, 2017) przez Yashwant Kanetkar. Wiele osób uważa to za przestarzałą książkę, która uczy Turbo C i zawiera wiele przestarzałych, wprowadzających w błąd i niewłaściwych materiałów. Na przykład, strona 137 omawia oczekiwane dane wyjściowe printf("%d %d %d\n", a, ++a, a++)
i nie klasyfikuje ich jako niezdefiniowane zachowanie, jak powinno.
Dowiedz się C The Hard Way (2015) autor: Zed Shaw. Książka z mieszanymi recenzjami.
Krytyka tej książki Tima Hentenaara:
Podsumowując moje poglądy, które zostały przedstawione poniżej, autor przedstawia materiał w bardzo uproszczony i mylący sposób, cały korpus jest zawiązany, a niektóre opinie i analizy, które on oferuje, są po prostu błędne. Próbowałem zobaczyć tę książkę oczami nowicjusza, ale niestety jestem stronniczy przez lata doświadczenia w pisaniu kodu w C. Jest dla mnie oczywiste, że albo autor ma wadliwe rozumienie C, albo celowo upraszcza wskaż, gdzie faktycznie wprowadza w błąd czytelnika (celowo lub w inny sposób).
„Learn C The Hard Way” nie jest książką, którą mógłbym polecić komuś, kto uczy się programowania i nauki C. Jeśli już jesteś kompetentnym programistą w jakimś innym pokrewnym języku, to jest to ciekawa i niezwykła ekspozycja na temat C, choć mam zastrzeżenia do części książki. Jonathan Leffler
Przestarzały
Inni współpracownicy , niekoniecznie kredytowane w historii wersji, to:
Alex Lockwood ,
Ben Jackson ,
Bubbles ,
pazury ,
coledot ,
Dana Robinson ,
Daniel Holden ,
Dervin Thunk ,
DWC ,
Erci Hou ,
Garen ,
haziz ,
Johan Bezem ,
Jonathan Leffler ,
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