Для меня основное достоинство книги "Структуры данных и алгоритмы в Java" - язык которым автор описывает алгоритмы. Он не использует сложный академический язык, приправленный тонной высшей математики. Роберт Лафоре использует простой язык и пытается дать максимально простое объяснение, какое только возможно, каждому алгоритму.

Почему эта книга?

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

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

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

Можно что-нибудь улучшить?

Алгоритмы - очень консервативная тема. Не многое изменилось с того момента, как книга была опубликована. При этом Java изменилась значительно. В ней появились новые синтаксические конструкции. В ней появились новые подходы к написанию хорошего кода. Обновились правила оформления кода.

Поймите меня правильно. Все примеры из книги все еще работающий Java код. Тем не менее, это уже не современная Java. Я не хочу видеть подобный код в продакшене. Почему важно использовать самые свежие подходы в коде примеров? Из-за того, что книги, подобные этой, читают преимущественно студенты и начинающие программисты. Они будут копировать этот стиль в свои проекты.

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

Плюсы:

  • Очень простой язык
  • Хороший набор алгоритмов
  • Каждая статья заканчивается списком идей

Минусы:

  • Довольно старая
  • Странное форматирование примеров кода
  • Некоторые алгоритмы рассматриваются без примеров кода, только словесное объяснение


c