Джефф Элджер. C++: библиотека программиста.
АрхивС.-Пб.: "Питер", 1999. Тираж 5000 экз.
Большинство людей, выучив в детстве буквы, научившись составлять слова и предложения, на этом и останавливается, считая, что язык они знают. И лишь немногие продолжают этот путь, являя миру таинственную магию поэзии.
Современная специализация в программировании разделяет программистов на С++ на две неравные группы - строителей классов (компонентов) и строителей программ (использующих эти классы и компоненты). И если большинство прикладных программистов, имея в своем распоряжении грамотно спроектированную систему классов, редко погружаются в дебри языка, то разработчики классов сталкиваются со сложностями C++ лицом к лицу. Гибкость языка превращается в главный источник ошибок. Он элегантен в одних руках и опасен в других, прост и сложен одновременно.
Мастерству владения языком хорошо учиться по хорошим книгам. Таких книг обычно немного, и, к счастью для языка программирования C++, одна из этих немногих появилась - вышедшая в издательстве "Питер" книга программиста с 20-летним стажем Джеффа Элджера. Оригинальное название "C++ for real programmer" представляется более удачным ("C++ для настоящих программистов" - программистов, решающих реальные, настоящие проблемы).
Это книга не для начинающих, и язык C++ описан в ней не как в учебниках. Здесь язык представлен как целая субкультура со своими идиомами, приемами и стандартными архитектурными решениями, которые не следуют очевидным образом из формального описания языка. Это концентрированный опыт мастеров языка.
Три основные темы - косвенные обращения, гомоморфные иерархии классов и пространства памяти. За этими таинственными названиями скрываются "умные", "мудрые" и "гениальные" указатели - результат переопределения оператора ->; иерархии классов, имеющие одного общего предка; управление памятью путем перегрузки операторов new и delete, и связанная с этим проблема сборки мусора.
Как видно, рассматриваются фундаментальные основы языка. И автору удалось очень удачно организовать материал, избежав шелухи описаний конкретных реализаций компиляторов, работы со структурами данных или принципов проектирования программ. Книга посвящена действительно изучению языка C++ и его идиомам, а описав идиомы, автор рассматривает их практическое применение.
Книга отличается стройным и целостным изложением, органичным сочетанием текста и фрагментов программ, легко и с удовольствием читается, несмотря на сложность предмета.
"Один из мистических принципов C++ - вы должны понять не то, как язык справляется с конкретной проблемой, а то, как он обеспечивает построение полноценной, надежной программы".
Я убежден, что книга Джеффа Элджера займет достойное и почетное место под рукой разработчика-профессионала.