Книги не для манки-кодеров: подборка литературы по теории программирования

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

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

«Введение в алгоритмы», Т. Кормен

Ссылка на Amazon

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

Каждый алгоритм описан на «человеческом» языке, а затем — на псевдокоде.


«Руководство по созданию алгоритмов», С. Скиена

Ссылка на Amazon

Очень многие программисты, порой даже профессионалы своего дела, не очень хорошо решают задачу проектирования алгоритма. Для того, чтобы с ней справиться, важно познакомиться с фундаментальными понятиями — структурами данных, динамическим программированием, поиском в глубину, эвристикой и многим другим.

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


Работа над коллективным разумом: создание приложений для Web 2.0

Ссылка на Amazon

Веб-программистам уйти от изучения алгоритмов тоже не получится — если вы хотите писать что-то круче визиток и форумов, вам все равно придется ознакомиться с теорией программирования, а особенно — с принципами анализа данных. С помощью алгоритмов, описанных в этой книге, вы сможете писать «умные» парсеры данных с любых сайтов, собирать всевозможные данные от пользователей ваших приложений, а также грамотно анализировать и понимать суть собранной информации.


Радость хакера

Ссылка на Amazon

Во втором издании этой книги ее автор Хэнк Уоррен снова собирает огромную коллекцию хитростей и приемов для программистов: техники экономии времени, алгоритмы, приемы, помогающие проектировать элегантное и эффективное ПО, а также информация, которая поможет вам приобрести глубокое понимание вашего дела. «Хаки» из этой книги в высшей степени практичны, а также очень интересны и иногда даже неожиданны по своей природе.


Алгоритмы

Ссылка на Amazon

Эта книга — пожалуй, самый известный и используемый в мире учебник по алгоритмам. В ней описываются наиболее важные алгоритмы, используемые в наши дни для обработки структур данных, сортировки, поиска, обработки графов, работы со строками — 50 алгоритмов, которые должен знать каждый. Для каждого алгоритма приведено описание и реализация на Java.


Безопасное проектирование: пособие по созданию распределенных систем

Ссылка на Amazon

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


Наука о данных: от основ к глубинам

Ссылка на Amazon

Теперь, когда люди понимают, как грамотно собранные данные могут повлиять на выборы или при разработке бизнес-модели, наука о данных начинает набирать обороты. Эта книга, основанная на книге Колумбийского университета о науке данных, поможет вам начать. В ней рассматривается: статистический вывод, анализ данных, алгоритмы, спам-фильтры, логистические регрессии, социальные сети и журналистика на основе данных и многое другое.

Источник: BestProgrammingBooks