Рецензии на книгу
"Современное проектирование на C++. Серия "C++ In-Depth""
24.01.2006
RSDN.RU (портал)
Валерий Лаптев
http://www.rsdn.ru/res/book/cpp/alex.xml
Третий том серии С++ In-Depth появился после четвертого (книга Герба Саттера "Решение сложных задач на С++"). Увидев знакомые названия в оглавлении, я открыл предисловие, чтобы составить более подробное мнение о содержании. Эта книга имеет аж три предисловия: хорошо нам известного Скотта Мейерса, менее известного, но тем не менее знаменитого Джона Влиссидеса, и совсем неизвестного, но ставшего знаменитым, автора Андрея Александреску. Мэтры видимо решили поддержать молодого автора и написали потрясающие предисловия. И я на это и купился! Не покупайте эту книгу, если вы не читали первую ("Эффективное использование С++") и вторую ("Наиболее эффективное использование С++") книг Скотта Мейерса, книгу о паттернах ("Приемы объектно-ориентированного проектирования. Паттерны проектирования") Банды четырех (один из "бандитов" - Джон Влиссидес) и плохо разбираетесь в шаблонах. Прежде, чем читать книгу Александреску, надо прочитать от корки до корки книгу о шаблонах - "Шаблоны С++" Д. Вандевурда и Н.М. Джосаттиса. А если уже купили, то положите на полку до тех пор, пока не прочтете указанные книжки.
Однако для высоких профессионалов, которые "хлебнули лиха" при разработке и последующем сопровождении нескольких систем, эта книга может послужить светом в конце тоннеля. Если вам приходилось из проекта в проект применять одни и те же решения, то вы, очевидно, использовали свои прежние наработки. Программисты обычно используют свои тексты в режиме copy/paste, переделывая их под новый проект. В этой книге как раз и объясняется, как создать достаточно обобщенный вариант, который в следующий раз потребует не переделки, а настройки.
Если вы хорошо знаете паттерны, то лучше начинать читать со второй части. По мере чтения возникает необходимость обращаться к первой части, чтобы разобраться с техникой реализации того или иного паттерна. Например, при реализации обобщенного варианта фабрики объектов (глава 8) могут понадобиться списки типов, подробности о которых изложены раньше (в главе 3).
Книга будет полезна и тем программистам, которые достаточно хорошо знают сам язык С++, но хотят изучить паттерны и некоторые типовые приемы программирования, например, мультиметоды. Надо положить перед собой две книги: одна книга Александреску, а вторая та, в которой изложено то же самое другим автором. Например, интеллектуальные указатели хорошо читать вместе с книгой Джеффа Элждера ("С++"), а мультиметоды - со второй книгой Мейерса. Часто оказывается, что в одной книге разъясняется то, что непонятно в другой. Лично для меня очень интересной оказалась глава об интеллектуальных указателях, которую я читал вместе с книгой Скотта Мейерса. В книге Александреску приводится интересная стратегия владения, которую мне не удалось обнаружить в известных мне книжках - связывание ссылок.
Для программистов, которым приходилось писать многопоточные программы, полезным будет приложение, в котором автор попытался разъяснить принципы реализации библиотеки Loki. Для большей пользы тексты библиотеки нужно скачать из сети (адрес приведен в книге), и покопаться в них.
Эта книга - из серии "долгоиграющих". Ее невозможно прочитать один раз и положить на полку. "Язык С++ изучается постепенно", поэтому по мере повышения собственной квалификации книжку регулярно снимаешь с полки и перечитываешь.