Книга: Effective C: An Introduction to Professional C Programming
Сменилось уже несколько поколений языков, стремившихся заменить собой C: появился, завоевал популярность и стал ее терять C++; корпоративная разработка ушла на сторону Java и C#; Go захватил умы поколения микросервисов; D, Rust, Zig и прочие прицелились на низкоуровневую разработку.
Тем не менее, C жив. И в последнюю пару лет случился своего рода Ренессанс, когда одна за другой вышли интересные книги продвинутого уровня от известных специалистов.
В частности, я особенно ждал выхода книги Effective C за авторством Роберта Сикорда (англ. Robert C. Seacord), активного участника языкового Комитета, автора стандарта по безопасному программированию на C/С++ (CERT C Coding Standard) и пользователя Emacs.
И книга не подвела!
Быстро бросается в глаза, насколько автор бережно обращается с терминологией. Например, никогда не путаются неопределенное (undefined), неуказанное (unspecified) и специфичное для реализаций (implementation-specific) или локалей (locale-specific) поведения. Для всех фундаментальных определений приводятся ссылки на стандарт или разъясняющие статьи.
Обсуждаются сложные, неочевидные или новые особенности языка:
- выравнивание по памяти (ключевое слово
_Alignas
), - повышение целочисленных значений (integer promotion),
- явные и неявные преобразования,
- порядок вычисления выражений,
- гибкие члены массивов (flexible array members),
- массивы изменяемой длины (variable-length arrays),
- катастрофа с кодированием Unicode (особенно wchart),
- популярные приемы работы с макросами,
- и т.д., и т.п.
По каждой из тем автор приводит практичные примеры и упоминает типичные программистские ошибки. Язык изложения и точный, и читаемый, что редко не встречается в текстах языковых бюрократов (прости, Комитет).
Кому-то может не понравиться, что в книги почти нет упражнений. Лично мне они и не были нужны, все же большую часть вопросы уже разбирал, кому-то практики будет не хватать.
В любом случае это лучшая на данный момент вторая/третья книга для работающих с языком специалистов, которая поможет, например, в чтении Стандарта.