Книга: Effective C: An Introduction to Professional C Programming

nil

Сменилось уже несколько поколений языков, стремившихся заменить собой 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),
  • популярные приемы работы с макросами,
  • и т.д., и т.п.

По каждой из тем автор приводит практичные примеры и упоминает типичные программистские ошибки. Язык изложения и точный, и читаемый, что редко не встречается в текстах языковых бюрократов (прости, Комитет).

Кому-то может не понравиться, что в книги почти нет упражнений. Лично мне они и не были нужны, все же большую часть вопросы уже разбирал, кому-то практики будет не хватать.

В любом случае это лучшая на данный момент вторая/третья книга для работающих с языком специалистов, которая поможет, например, в чтении Стандарта.