Роберт Седжвик Фундаментальные алгоритмы на Си++ Киев: ДиаСофт, 2001, 688 с.: ил. |
В неиссякающем потоке книг по программированию на языке Си++ нередко встречаются такие, в которых аккумулирован полезный многим авторский опыт. Здесь будет представлено две таких книги.
Хорошо известно, что язык программирования применяется тем успешнее, чем теснее он связан с алгоритмической интерпретацией задач. В издательстве «ДиаСофт» вышла книга Роберта Седжвика о фундаментальных алгоритмах на Си++. По существу этот труд в третьей редакции, включающий весьма представительную коллекцию алгоритмов и программ на Си++, охватывает принципы их анализа, а также важные области обработки структур данных, в частности, сортировки различных множеств данных и поиска в них.
Книга интересна тем, что рассуждения автора подтверждаются доказательствами и потому в ней не единожды встретятся леммы и ссылки на труды многих классиков вычислительной науки — Ахо, Ульмана, Хоркрофта, Кнута, Грехема, Поташника, Страуструпа и др.
В разделе об описаниях данных рассмотрены алгоритмы для элементарных структур, абстрактных типов данных, рекурсий и деревьев. В разделе о способах сортировки рассмотрены девять элементарных методов, быстрая сортировка, сортировка слиянием, пирамидальная, связанная с очередями по приоритетам, поразрядная и специального назначения (внешняя, сети сортировки, параллельная процедура сортировки-слияния). В завершающем разделе о поиске приведены алгоритмы, основанные на таблицах символов и двоичных деревьях, с использованием сбалансированных деревьев, хеширования, а также поразрядного и внешнего поиска.
Благодаря тому что издание весьма солидное, объемом в 700 страниц, читатели имеют возможность поднять уровень своих знаний языка Си++ до хорошей практической специализации, а студенты и аспиранты используют его и для профессионального совершенствования. Правда, определенное сожаление вызывает то, что в книге нет ссылок на работы, изданные на русском языке.
Роберт Лафоре Объектно-ориентированное программирование Питер. 2003, с. 928 с.: ил. |
Книга Роберта Лафоре, переведенная с четвертого вышедшего в США издания, наряду с введением в программирование на Си++ рассматривает вопросы объектно-ориентированного программирования. В ней 15 глав из 16 посвящены формированию того уровня знаний о Си++, который позволяет читателю перейти непосредственно к разработке объектно-ориентированного ПО. В первую очередь она предназначена для учебных заведений, поэтому в нее включены не только весьма полные сведения о языке, начиная с рассказа о циклах и ветвлениях и заканчивая описанием стандартной библиотеки шаблонов, но и множество примеров, результаты решения которых можно сверить с ответами. Восемь приложений к книге полезны для развития у читателя практических навыков, поскольку там, наряду с таблицами ASCII и приоритетами операций на языке Си++, приведены демонстрационные материалы использования Microsoft Visual C++ 6.0 , а также Borland C++ Builder 5.0 для создания консольных приложений к примерам, приведенным в книге. Кроме того, в приложении Д рассмотрен упрощенный вариант консольной графики, базирующийся на применении подпрограмм соответствующей библиотеки, а также даны листинги исходных кодов. В приложении Е описаны таблицы алгоритмов и методов контейнеров Стандартной библиотеки шаблонов (STL), и эта информация, как указывает автор, базируется на представлении о библиотеке, предложенном А. Степановым и Минг Ли (1995). Таблица алгоритмов (Е.1), которых более ста, сгруппирована по последовательным операциям — неизменяемым и изменяемым; по операциям сортировки и отношений, а также по обобщенным числовым операциям.
Отдельные таблицы приложения (Е.2 и Е.3) содержат перечень и характеристики примерно пятидесяти методов, а также типы итераторов для алгоритмов, используемые как входные, выходные, прямые, двунаправленные или при случайном доступе. Библиография, помещенная в приложении З, разбита на рубрики: «Углубленное изучение Си++», «Основополагающие документы», UML («Унифицированный язык моделирования»), «История Си++», «И другое». Это показывает, какое место занимает язык и чем он может быть интересен читателю в дальнейшем.
Надеюсь, что книга окажется весьма полезной многим читателям. Но поскольку она была написана в 2002 г., отдельные факты нуждаются в уточнении. Увы, в книге совершенно не затронут ни автором книги, ни редактором отечественный опыт использования языка Си++.