Что должен знать каждый программист: Алгоритмы

Dec 23, 2011 13:55


Несколько лет назад я опубликовал небольшую заметку под названием " Список книг которые должен прочитать каждый Java программист", в которой поделился книги, которые должен прочитать каждый профессиональный Java программист не зависимо от конкретной прикладной области, в которой он работает. Но технологий и языков программирования много. А есть ли какие-нибудь базовые навыки, которыми должен владеть каждый программист? Безусловно есть. Одним из таких навыков является построение и анализ алгоритмов.
Про алгоритмы написано множество книг и учебников. Конечно, нельзя не упомянуть фундаментальный труд Дональда Кнута "Искусство программирования", классическую книгу Никлауса Вирта "Алгоритмы + структуры данных = программы". Всех не перечесть.

Однако, из всех книг про алгоритмы есть одна, которая безусловно выделяется своей глубиной, полнотой и актуальностью, оставаясь одновременно доступной для понимания и интересной. Это замечательная книга Томаса Кормена, Чарльза Лейзерсона, Рональда Ривеста, и Штейна Клиффорда "Алгоритмы: построение и анализ".
В ней собраны основные алгоритмы и структуры данных широчайшего спектра применения: от сортировок и бинарных деревьев, до линейного программирования, вычислительной геометрии и криптографии. Книга очень удобно организована по разделам и главам, что позволяет использовать её как справочник или как учебник, изучая её в том порядке, который интересен именно вам. Она не с проста называется "Алгоритмы: построение и анализ". Помимо алгоритмов, она содержит подборку различных методов построения алгоритмов от метода разделяй и властвуй, до динамического программирования и жадных алгоритмов, а также содержит введение в математический аппарат, который необходим для их анализа и справочный материал по нему.
Эта книга представляет собой уникальный труд. Она сочетает широту и глубину изложения материала с абсолютной математической точностью. При этом она доступа и полезна для программиста-профессионала как справочное руководство по алгоритмам.
В 2009 году было выпущено её третье издание и в 2012 году планируется выпуск его перевода на Русский язык.
В современном мире создаются программные комплексы всё большего размера и сложности. Количество модулей, слоев архитектуры, и уровней абстракций постоянно растет. Программисты могут решать сложнейшие задачи написав всего несколько строчек кода. Однако, каждая программа это в первую очередь алгоритмы и структуры данных. Может вам не приходилось самим писать реализацию алгоритма сортировки, но если вы программист, то вам наверняка приходилось использовать её библиотечную реализацию. Может вам не приходилось сталкиваться с графами, но если вы программист, то вы наверняка сталкивались с массивами и списками. Может вам не приходилось разрабатывать алгоритм поиска текста в строке, но если вы программист, то вы разрабатывали алгоритмы для решения тех задач, которые перед вами стояли.
Построение и анализ алгоритмов это основа профессиональной деятельности любого программиста и основа профессионального образования программиста. Книга "Алгоритмы: построение и анализ" содержит материал, который должен знать каждый программист.
UPDATE: А еще программист должен знать языки программирования.

programming, algorithms, books

Previous post Next post
Up