Система Orphus

Современное проектирование на С++
Обобщенное программирование и прикладные шаблоны проектирования

Автор: Андрей Александреску
Издательство: "Вильямс", 2002
336 страниц

Материал предоставил: Валерий Лаптев
Найти в магазинах

Аннотация

Содержание
Комментарии

Аннотация

В книге изложена новая технология программирования, представляющая собой сплав обобщенного программирования, метапрограммирования шаблонов и объектно- ориентированного программирования на С++. Настраиваемые компоненты, созданные автором, высоко подняли уровень абстракции, наделив язык С++ чертами языка спецификации проектирования, сохранив всю его мощь и выразительность. В книге изложены способы реализации основных шаблонов проектирования. Разработанные компоненты воплощены в библиотеке Loki, которую можно загрузить с Web-страницы автора. Книга предназначена для опытных программистов на С++.

Содержание

Часть I. Методы

   Глава 1. Разработка классов на основе стратегий
   Глава 2. Приемы программирования
   Глава 3. Списки типов
   Глава 4. Размещение в памяти небольших объектов

Часть II. Компоненты

   Глава 5. Обобщенные функторы
   Глава 6. Реализация шаблона Singleton
   Глава 7. Интеллектуальные указатели
   Глава 8. Фабрики объектов
   Глава 9. Шаблон Abstract Factory
   Глава 10. Шаблон Visitor
   Глава 11. Мультиметоды

Приложение. Многопоточная библиотека в стиле минимализма
Библиография
Предметный указатель

Комментарии

Валерий Лаптев

Третий том серии С++ In-Depth появился после четвертого (книга Герба Саттера "Решение сложных задач на С++"). Увидев знакомые названия в оглавлении, я открыл предисловие, чтобы составить более подробное мнение о содержании. Эта книга имеет аж три предисловия: хорошо нам известного Скотта Мейерса, менее известного, но тем не менее знаменитого Джона Влиссидеса, и совсем неизвестного, но ставшего знаменитым, автора Андрея Александреску. Мэтры видимо решили поддержать молодого автора и написали потрясающие предисловия. И я на это и купился!

Не покупайте эту книгу, если вы не читали первую ("Эффективное использование С++") и вторую ("Наиболее эффективное использование С++") книг Скотта Мейерса, книгу о паттернах ("Приемы объектно-ориентированного проектирования. Паттерны проектирования") Банды четырех (один из "бандитов" - Джон Влиссидес) и плохо разбираетесь в шаблонах. Прежде, чем читать книгу Александреску, надо прочитать от корки до корки книгу о шаблонах - "Шаблоны С++" Д. Вандевурда и Н.М. Джосаттиса. А если уже купили, то положите на полку до тех пор, пока не прочтете указанные книжки.

Однако для высоких профессионалов, которые "хлебнули лиха" при разработке и последующем сопровождении нескольких систем, эта книга может послужить светом в конце тоннеля. Если вам приходилось из проекта в проект применять одни и те же решения, то вы, очевидно, использовали свои прежние наработки. Программисты обычно используют свои тексты в режиме copy/paste, переделывая их под новый проект. В этой книге как раз и объясняется, как создать достаточно обобщенный вариант, который в следующий раз потребует не переделки, а настройки.

Если вы хорошо знаете паттерны, то лучше начинать читать со второй части. По мере чтения возникает необходимость обращаться к первой части, чтобы разобраться с техникой реализации того или иного паттерна. Например, при реализации обобщенного варианта фабрики объектов (глава 8) могут понадобиться списки типов, подробности о которых изложены раньше (в главе 3).

Книга будет полезна и тем программистам, которые достаточно хорошо знают сам язык С++, но хотят изучить паттерны и некоторые типовые приемы программирования, например, мультиметоды. Надо положить перед собой две книги: одна книга Александреску, а вторая та, в которой изложено то же самое другим автором. Например, интеллектуальные указатели хорошо читать вместе с книгой Джеффа Элждера ("С++"), а мультиметоды - со второй книгой Мейерса. Часто оказывается, что в одной книге разъясняется то, что непонятно в другой. Лично для меня очень интересной оказалась глава об интеллектуальных указателях, которую я читал вместе с книгой Скотта Мейерса. В книге Александреску приводится интересная стратегия владения, которую мне не удалось обнаружить в известных мне книжках - связывание ссылок.

Для программистов, которым приходилось писать многопоточные программы, полезным будет приложение, в котором автор попытался разъяснить принципы реализации библиотеки Loki. Для большей пользы тексты библиотеки нужно скачать из сети (адрес приведен в книге), и покопаться в них.

Эта книга - из серии "долгоиграющих". Ее невозможно прочитать один раз и положить на полку. "Язык С++ изучается постепенно", поэтому по мере повышения собственной квалификации книжку регулярно снимаешь с полки и перечитываешь.