Рецензии на книгу
"Объектно-ориентированные методы. Принципы и практика. 3-е издание"


11.10.2005
PC Week (портал)
Эдуард Пройдаков
http://pcweek.ru/?ID=481086

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

Труд Иана Грэхема представляет собой обзор всей области объектных технологий: OOP, OOD, OOA и OODBMS. Затрагиваются также некоторые смежные технологии. Хотя объектно-ориентированное направление в программировании достаточно сильно проработано, нельзя сказать, что в нем все сделано, — исследования ещё не завершены. Есть множество вопросов, которые необходимо решить, например, желательно ввести понятие истории объектов, что позволит снять множество проблем. Не всё чётко определено самоидентификацией объекта и т. д. В своей статье “ООП: каким его хотелось бы видеть” (PC Week/RE, №6/2004, с. 42) я предложил ввести понятия OOP+ и OOP-. Изучение этой замечательной книги было продиктовано, в частности, желанием посмотреть, в чём я был прав, а в чём заблуждаюсь.

Напомню, программирование можно разделить на процедурное и декларативное. Первое, в свою очередь, делится на функциональное, структурное и ООП. Возможно, ООП в чём-то оказалось технологичнее других направлений, так как основные его преимущества (повторная используемость компонентов и расширяемость), вообще говоря, достигаются и в других технологиях, например, посредством библиотек функций в процедурных ЯВУ. Однако сама парадигма объектов и объектно-ориентированного метода более наглядна для нашего андроидного мышления, и поэтому неслучайно всё большее проникновение объектно-ориентированных методов в инструментарий искусственного интеллекта. С прагматической точки зрения, наверное, всё же самое большое достоинство ООП кроется в возможности безболезненного для программ изменения данных, на что сейчас, по утверждению автора книги, расходуется до 16% средств в области ИТ.

В предисловии Иан Грэхем справедливо пишет, что “книга представляет собой целостный, исчерпывающий, независимый от конкретного языка программирования обзор всех аспектов объектной технологии (ООТ), причем как с точки зрения менеджера, так и с точки зрения программиста-разработчика. Наибольшее внимание уделяется концептуальному моделированию”.

Интересно, что автор считает, что “ядро современных информационных технологий составляют объектные методы, искусственный интеллект и модели данных, причём рассматриваемые не по отдельности, а в неразрывной связи”. Невозможно с этим не согласиться! Как я неоднократно отмечал, архитектура нынешних компьютеров мало приспособлена для поддержки объектной ориентированности, поэтому, реализуя эту поддержку на обычных процессорах, приходится жертвовать некоторой частью производительности системы. Нынешняя мода на разработку боевых и домашних роботов, возможно, сдвинет этот вопрос с мёртвой точки, где он застрял со времён создания корпорацией Intel процессора iAPX 432.

Этот объёмный труд содержит десять глав, три приложения, словарь терминов, обширную и по большей части бесполезную в России западную библиографию, предметный указатель.

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

Так, в первой, очень важной главе рассматриваются основные понятия ООТ и вводится терминология. Вторая глава посвящена преимуществам ООП. По мнению автора, главное из них — не повторное использование компонентов, а облегчение сопровождения разработанного ПО. Почти половина всех запросов на внесение изменений в систему связана со сменой требований. Верно и то, что нисходящая декомпозиция задачи приводит к тому, что и модули, и объекты становятся зависимыми от приложения. Поэтому повторное использование требует определённых изменений в самом процессе разработки и дополнительных затрат. Поскольку общие затраты на ПО сейчас достигли триллионов долларов, то экономия даже долей процента на сопровождении — это уже миллиарды. Данная глава полезна для осознанного выбора базовых технологий для проекта.

В третьей главе дан обзор наиболее заметных объектно-ориентированных языков программирования из примерно сотни существующих. В четвёртой главе рассматривается применение ООТ в распределённых системах, а в пятой — в базах данных. Начиная с шестой главы, отведенной ОО-анализу и проектированию, остальная часть книги посвящена использованию ООТ в проектировании программных систем, в частности, таким важным темам, как архитектура систем, шаблоны, компоненты, требования и управление проектом. В десятую главу собраны три приложения.

Мелкие придирки, обычные в рецензиях на переводные книги, относятся к переводу терминологии: UML — именуется в книге “универсальным языком программирования”, тогда как общепринято называть его “унифицированным языком программирования”. Термин class-oriented, переводимый как классово-ориентированный, наверное, стоило бы перевести как “основанный на использовании классов, классориентированный”. Фамильярное “верхушка стека” лучше бы заменить на уважительное “вершина стека”, вместо “вытолкнуть из стека” — “извлечь из стека” (как обратное к “поместить") и т. д.

Книга рассчитана на широкий круг читателей, не имеющих профессиональной подготовки в области теоретических компьютерных наук, но заинтересованных в том, чтобы наилучшим образом применять ООТ на практике. Я очень рекомендую её также студентам, изучающим программирование, аспирантам и преподавателям вузов, поскольку она из разряда тех немногих базовых книг, которые обязательно должен прочитать каждый программист, желающий глубоко овладеть своей профессией.




Rambler Top100