Найти в Дзене

Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих | Адитья Бхаргава (2017)

Для профессиональных книг можно использовать следующую градацию: популярная/непопулярная, полезная/бесполезная. И если популярность определяется мнением заинтересованного сообщества, то полезность лично для себя в конце концов придётся определять самостоятельно. “Грокаем алгоритмы...” от практикующего разработчика Адитья Бхаргава на слуху среди программистов, но ещё до её прочтения, я знал, что она будет не самой полезной из возможных альтернатив. Единственное, что в итоге заставило прочесть книгу - это, хитрый ход редактора или маркетолога, а возможно самого автора, - цитата на обложке, которая объясняет слово "грокаем", что отсылает к произведению Роберта Хайнлайна "Чужак в чужой стране”: “Грокнуть” означает понять так полно, что наблюдатель становится частью объекта наблюдения… В итоге было решено отдать уважение труду коллеги-программиста и любителя хорошей научной фантастики. Первый минус проявляется уже на обложке, где указано, что это “иллюстрированное пособие для программистов
Обложка книги
Обложка книги

Для профессиональных книг можно использовать следующую градацию: популярная/непопулярная, полезная/бесполезная. И если популярность определяется мнением заинтересованного сообщества, то полезность лично для себя в конце концов придётся определять самостоятельно.

“Грокаем алгоритмы...” от практикующего разработчика Адитья Бхаргава на слуху среди программистов, но ещё до её прочтения, я знал, что она будет не самой полезной из возможных альтернатив.

Единственное, что в итоге заставило прочесть книгу - это, хитрый ход редактора или маркетолога, а возможно самого автора, - цитата на обложке, которая объясняет слово "грокаем", что отсылает к произведению Роберта Хайнлайна "Чужак в чужой стране”:

“Грокнуть” означает понять так полно, что наблюдатель становится частью объекта наблюдения…

В итоге было решено отдать уважение труду коллеги-программиста и любителя хорошей научной фантастики.

Первый минус проявляется уже на обложке, где указано, что это “иллюстрированное пособие для программистов и любопытствующих”. Не представляю, в чём должно заключаться любопытство, но тематика книги специфична и содержимое вряд ли нужно тем, кто не пишет код или хотя бы не участвует в разработке программных продуктов в технических аспектах, как например, тестировщики и системные аналитики.
Остальным специалистам, а тем более любопытствующим, здесь можно только потерять время.

Подача материала происходит в типичной “западной” манере обучения - весело, задорно, действительно с множеством иллюстраций, объяснением примеров на пальцах и простыми тестами для самопроверки.
Но спектр вопросов ограничивается только базовыми темами, что превращает книгу лишь в первую ступень для изучения алгоритмов и структур данных.
Полученных знаний по теме не хватит, чтобы пройти собеседование даже на уровень стажёра.
Для опытных специалистов здесь не будет ничего нового, но прочтение может пригодиться для поверхностного освежения уже имеющихся знаний, как в моём случае.

На весь объём есть пара интересных моментов, как например, описание логики систем рекомендаций, но о таком можно почитать в специализированных статьях при необходимости.

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

  1. смотреть открытые лекции преподавателя МФТИ Тимофея Хирьянова (YouTube);
  2. решать практические задачи на тренажерах типа LeetCode, что также поможет на собеседованиях;
  3. проходить доступные бесплатные курсы;
  4. читать “классические” серьезные работы по теме:
  • Алгоритмы. Руководство по разработке. 3-е изд. | Скиена Стивен С.,
  • Алгоритмы. Справочник с примерами на C, C++, Java и Python | Джордж Хайнеман, Гари Поллис, Стэнли Селков,
  • Алгоритмы. Построение и анализ | Кормен Томас, Лейзерсон Чарльз, Ривест Рональд , Штайн Клиффорд.

Главное учитывать базовое правило - изучить идеально и полностью тему алгоритмов практически невозможно, но их необходимо знать в такой степени, чтобы:

  1. пройти собеседование или аттестацию;
  2. эффективно решать задачи на текущем проекте.

И сверх всего, требуется периодическое повторение материала, потому что знания без практики улетучиваются.

#книга #программирование #алгоритмы