Жемчужины программирования (Рубрика Engineering)
Первое издание этой книги Джона Бентли вышло почти 40 лет назад, как раз в год моего рождения. Но я читал уже второе издание, что вышло в начале 2000х годов. Это была книга, которая отличалась от других - она учила думать как инженер, а не просто писать код. Автор книги - исследователь из Bell Labs и Carnegie Mellon, соавтор алгоритма k-d деревьев и усовершенствованного quicksort. Но известен он больше колонкой в журнале "Communications of the ACM", из которой выросла эта книга. Это было в 1980-х годах, эпохе, когда 1 МБ памяти считался роскошью. Бентли писал для практиков, которые хотели не просто “работающий код”, а *красивое решение*. Он сравнивал алгоритм с жемчужиной: реальная проблема - это песчинка раздражения, а изящное решение - результат терпения и формы.
Каждая глава - это короткое эссе с задачей, размышлением и выводом. Они покрывают следующие темы
- Как формулировать задачу и искать ага!-решение;
- Оценка на салфетке, где автор рассказывает про оценку времени и памяти алгоритмов буквально на пальцах;
- Алгоритмические трюки: сортировка, выборка, поиск, оптимизация;
- Как писать корректные и понятные программы.
Интересно, что Бентли написал еще и книгу продолжение "More Programming Pearls", где он добавил следующие темы
- Философия инженерного мышления (“исповеди кодера”);
- Маленькие языки - предтечи DSL и скриптов внутри систем;
- Афоризмы и практические советы вроде “плохую программу ухудшить не грех”.
Если говорить про значимость книги в далекие времена, то автор в ней показал, что программирование - это не набор трюков, а искусство видеть структуру задачи. Когда-то книгу использовали в курсах по алгоритмам и дизайну программ. Сейчас большинство примеров устарело, но подход - нет.
В итоге, книги Джона Бентли по праву считаются сокровищницей знаний для программистов. Они объединяют поколение инженеров 1980-х и современных разработчиков общими ценностями - страстью к изящным решениям и глубокому пониманию задач. «Жемчужины программирования» до сих пор сияют и продолжают вдохновлять новых читателей на поиск красоты в коде.
#Engineering #Software #Architecture #SystemDesign