Обзор книги Data Structures and Algorithms

Data Structures and AlgorithmsКнига написана в 1983(!) году тремя авторами: Альфредом Ахо(Alfred V. Aho), Джеффри Уллманом(Jeffrey D. Ullman) и Джоном Хопкрофтом(John E. Hopcroft). Я уже и не помню как я набрёл на данную книгу,– она явно была в одном из списков рекомендаций по алгоритмам, а учитывая её небольшой размер(чуть больше 400 страниц) и количество тем, в ней освещённых, она сразу завоевала моё сердце. Забегая вперёд, можно сказать, что моё сердце было не право – много тем в малый объём втиснуть ох как не легко, ну да к этому мы перейдём чуть позже. Начать всё же хочется с положительных качеств книги, поэтому отложим на время негатив и обратимся к плюсам.

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

Как я уже говорил, книга покрывает довольно большой список тем, в котором превалируют структуры данных и операции над ними. В книге рассмотрены следующие структуры данных: список, стек, очередь, различные виды деревьев, хеш-таблицы и графы. Рассматриваются не только теоретические основы этих структур(вместе с некоторыми производными от них), но также различные виды реализации оных. Разумеется всё это приправлено различными алгоритмами, которые применимы к вышеперечисленным структурам. Кроме этого в наличии есть глава посвящённая различным алгоритмам сортировки, а также главы по анализу и технике разработки алгоритмов. Предпоследняя глава посвящены обзору алгоритмов и структур данных применяемых в случаях, когда речь идёт о больших объемах данных, хранящихся на внешнем носителе(базы данных, как пример). Последняя же глава посвящена управлению памятью(различные алгоритмы, применяемые для оптимизации использования памяти).

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

Кроме того, в книге используется Pascal(вроде даже какой-то псевдоязык на основе Pascal, я Pascal не знаю, поэтому сложно судить), что лично для меня было наибольшим испытанием при чтении. Примеры на этом языке очень сложно читать человеку, который всю свою сознательную программистскую жизнь использовал C-подобные языки. Больше того, из-за ограничений языка многие алгоритмы просто усложнены. Я честно не понимаю этого выбора. Да, на дворе были 80-е, но почему тогда не использовать псевдоязык, который упрощал бы многие конструкции, позволяя сосредоточиться на самом алгоритме – не понятно.

Ещё одним минусом является качество печати,- книга является перепечаткой книги, восстановленной по фотокопиям. А если её ещё и отсканировать, а не читать в оригинале, то будет ещё хуже, я полагаю.

Даже принимая во внимания все достоинства книги, на мой взгляд, смысл в приобретении и/или прочтении оной отсутствует. Она не содержит ничего такого, чего бы не было в более современных книгах по алгоритмам, которых не так уж и мало, взять ту же Introduction to Algorithms. Поэтому мой вердикт таков: Data Structures and Algorithms это устаревшая книга, которая может занять достойное место в музее, но от прочтения которой можно с лёгким сердцем воздержаться.