Увага
Це перелік випадкових книг різної якості. На думку деяких людей (з деяким виправданням), це вже не перелік рекомендованих книг. Деякі із перерахованих книг містять явно неправильні твердження або вчать неправильних / шкідливих практик. Люди, які знають про подібні книги, можуть редагувати цю відповідь, щоб допомогти вдосконалити її. Перегляньте список книг "С" пішов у сірий спосіб. Що з цим робити? , а також видалено аудит питань 2018 року .
Довідка (усі рівні)
Мова програмування на C (2-е видання) - Брайан В. Керніган та Денніс М. Річі (1988). Все-таки хороший, короткий, але повний вступ до C (C90, а не C99 або новіших версій), написаний винахідником C. Однак мова змінилася і хороший стиль C розвинувся за останні 25 років, і є частини книга, яка показує її вік.
С: Довідковий посібник (5-е видання) - Семюел П. Харбісон та Гай Р. Стіл (2002). Чудовий довідник про С, аж до С99. Це не підручник і, мабуть, непридатний для початківців. Чудово, якщо вам потрібно написати компілятор для C, як це мали зробити автори, коли вони починали.
C Pocket Reference (O'Reilly) - Пітер Принц та Улла Кірх-Принц (2002).
FAQ - comp.lang.c - Стів Саміт. Веб-сайт з відповідями на багато питань про C.
Різні варіанти стандартів мови C можна знайти тут . Існує онлайн-версія проекту стандарту С11 .
Новий стандарт C - анотована посилання (Безкоштовний PDF) - Дерек М. Джонс (2009). "Новий стандарт", про який йдеться, - це старий стандарт C99, а не C11.
Обґрунтування стандарту C99 .
Новачок
Проміжний
Сучасний С - Йенс Гуведт (2017 1-й Едн; 2020 2-й Едн). Охоплює C на 5 рівнях (зустріч, знайомство, пізнання, досвід, амбіції) від початку C до передової C. Він охоплює C11 і C17, включаючи потоки та атомний доступ, що мало хто з інших книг. Не всі компілятори розпізнають ці функції у всіх середовищах.
C Інтерфейси та реалізація - Девід Р. Гансон (1997). Надає інформацію про те, як визначити межу між інтерфейсом та реалізацією в C загальним та багаторазовим способом. Він також демонструє цей принцип, застосовуючи його для реалізації загальних механізмів та структур даних у С, таких як списки, набори, винятки, маніпуляції з рядками, розподільники пам'яті тощо. В основному, Гансон взяв увесь код, який він написав, як частину створення Icon та lcc та витягнув найкращі біти у формі, яку інші люди могли б використати для власних проектів. Це модель хорошого програмування на С, яка використовує сучасні методики дизайну (включаючи абстракцію даних Ліскова), показуючи, як організувати великий проект C накуп корисних бібліотек.
Головоломка С - Алан Р. Фейєр (1998)
Бібліотека Standard C - PJ Plauger (1992). Він містить повний вихідний код для реалізації стандартної бібліотеки C89, а також велику дискусію про дизайн та чому код розроблений так, як показано.
21 століття C: C Поради нової школи - Бен Клеменс (2012). Окрім мови С, книга пояснює gdb, valgrind, autotools та git. Коментарі до стилю можна знайти в останній частині (глава 6 і далі).
Алгоритми С - Роберт Седжевік (1997). Дає зрозуміти реалізацію алгоритмів у C. Дуже чіткі та чіткі; напевно змусить вас викинути всі ваші інші книги алгоритмів і зберегти цю.
Покажчики на С - Кеннет Рек (1997).
Покажчики на С - Naveen Toppo та Hrishikesh Dewan (2013).
Розв’язання проблем та розробка програм у C (6-е видання) - Джері Р. Хенлі та Елліот Б. Коффман (2009).
Структури даних - передовий підхід із використанням С - Джефрі Есаков та Том Вайс (1989).
C Unleashed - Річард Хітфілд, Лоуренс Кірбі та ін. (2000). Не ідеально, але варто, щоб програмісти-посередники практикували проблеми, написані в цій книзі. Це хороший підхід до кулінарної книги, запропонований авторами comp.lang.c.
Експерт
Без категорії
Essential C (безкоштовно PDF) - Нік Парланте (2003). Зауважте, що це описує мову C90 у кількох точках ( наприклад , при обговоренні //
коментарів та розміщенні змінних декларацій у довільних точках коду), тому до цього слід ставитися з певною обережністю.
Поширені запитання щодо програмування: Найчастіші запитання - Стів Самміт (1995). Це книга веб-сайту, перелічена раніше. Він не охоплює C99 або новіші стандарти.
C in a Nutshell - Пітер Принц та Тоні Крофорд (2005). Відмінна книга, якщо вам потрібна довідка про C99.
Функціональний C - Пітер Гартель та Хенк Мюллер (1997). Викладає сучасні практики, які є безцінними для програмування низького рівня, з урахуванням одночасності та модульності.
Практика програмування - Брайан В. Керніган та Роб Пайк (1999). Дуже хороша книга для супроводу K&R. Він також використовує C ++ та Java.
C Пастки та підводні камені А. Кеніга (1989). Дуже добре, але в стилі С попередньо встановлено стандарт C, що робить його менш рекомендованим в ці дні.
Деякі заперечували про вилучення "Пасток та підводних каменів" із цього списку, оскільки це вловлює деяких людей у помилках; інші продовжують сперечатися щодо його включення. Можливо, це слід розглядати як «експертну» книгу, оскільки для розуміння того, що змінилося з моменту виходу в світ, потрібні помірно широкі знання C.
Побудуй свій власний Лисп - Даніель Холден (2014). Приємний спосіб вивчити С.
MISRA-C - галузевий стандарт, виданий та підтримуваний Асоціацією надійності програмного забезпечення автомобільної промисловості. Обкладинка C89 та C99.
Хоча це не така книга як така, багато програмістів рекомендують прочитати та реалізувати якомога більше її. MISRA-C спочатку був призначений як керівництво для критично важливих для безпеки додатків, але він застосовується до будь-якої області застосування, де бажаний стабільний, без помилок код C (хто не хоче менше помилок?). MISRA-C стає де-факто стандартом у всій вбудованій галузі та стає все більш популярною навіть у інших галузях програмування. Є (принаймні) три публікації стандарту (1998, 2004 та поточна версія від 2012). Існує також документ із рекомендаціями щодо дотримання MISRA від 2016 року та MISRA C: 2012 Поправка 1 - Додаткові рекомендації щодо безпеки для MISRA C: 2012 (опубліковано у квітні 2016 року).
Зауважте, що деякі норми в правилах MISRA не відповідають кожному контексту. Наприклад, у директиві 4.12 зазначено "Динамічне розподілення пам'яті не повинно використовуватися". Це доречно у вбудованих системах, для яких розроблені правила MISRA; це скрізь не доречно. (Наприклад, компілятори зазвичай використовують динамічний розподіл пам'яті для таких речей, як таблиці символів, і обійтися без динамічного розподілу пам'яті було б складно, якщо не безглуздо.)
Заархівовані списки рецензованих ACCU книг про C для початківців (116 назв) 2007 та Advanced C (76 назв) з 2008 року. Більшість із них більше не виглядають на головному сайті, і ви не можете переглядати це за темою все одно.
Попередження
Будьте обережні до книг, написаних Гербертом Шильдтом . Зокрема, слід триматися подалі від С: Повна довідка (4-е видання, 2000 р.), Відома в деяких колах як C: Повна дурниця.
Також не використовуйте книгу Let Us C (16- е видання, 2017) Яшванта Канеткара. Багато людей розглядають це як застарілу книгу, яка викладає Turbo C і має багато застарілих, оманливих і невірних матеріалів. Наприклад, на сторінці 137 обговорюється очікуваний результат printf("%d %d %d\n", a, ++a, a++)
та не класифікується це як визначене поведінка як слід.
Learn C The Hard Way (2015) Зеда Шоу. Книга зі змішаними відгуками.
Критика цієї книги Тіма Хентенаара:
Підсумовуючи мої погляди, викладені нижче, автор викладає матеріал у значно спрощеному та оманливому вигляді, весь корпус - це безлад, і деякі запропоновані ним думки та аналізи є просто неправильними. Я намагався переглядати цю книгу очима новачка, але, на жаль, я упереджений багаторічним досвідом написання коду на C. Для мене очевидно, що або автор має хибне розуміння С, або він навмисно надто спрощується до момент, коли він насправді вводить читача в оману (навмисно чи іншим чином).
"Learn C The Hard Way" - це не книга, яку я міг би порекомендувати тому, хто навчається програмувати та вивчати C. Якщо ви вже грамотний програміст якоюсь іншою суміжною мовою, то це представляє цікаву та незвичну експозицію на C, хоча у мене є застереження щодо частин книги. Джонатан Леффлер
Застаріла
До інших дописувачів , не обов'язково зарахованих до історії ревізії, належать:
Алекс Локвуд ,
Бен Джексон ,
Бульбашки ,
кігті ,
коледот ,
Дана Робінсон ,
Даніель Холден ,
Дервін Тунк ,
dwc ,
Ерчі Хоу ,
Гарен ,
Хазіз ,
Йоган Безем ,
Джонатан Леффлер ,
Джошуа Партогі ,
Лукас ,
Лундін ,
Метт К. ,
мосплікс ,
Матьє М. ,
Midor ,
Nietzche-Jou ,
Норман Ремсі ,
r3st0r3 ,
ridthyself ,
Роберт С. Барнс ,
Стів Summit ,
Тім кільце ,
Тоні Бай ,
VMAtm