Нажмите "Enter" для перехода к содержанию

25 лучших книг для программистов

0

В интернете можно найти бесчисленное множество списков «лучших книг о программировании». Однако у каждого своё мнение, и, как говорится, о вкусах не спорят. Саму же процедуру поиска можно попытаться объективизровать, например, использовать критерий цитируемости. Такую попытку предпринял французский разработчик Пьер де Вульф. Ниже мы кратко расскажем о его методологии. Если вам интересен только список книг, переходите к следующему разделу.

Для начала Пьер сделал несколько вариаций Google-запроса «Best Programming Books». Пропарсив топ поисковой выдачи и исключив дубликаты списков, Пьер получив 150 подходящих страниц. Далее из них были исключены ветки Quora и Reddit, а также списки, сфокусированные конкретной технологии или платформе, одном конкретном годе или бесплатных онлайн-книгах.

В итоге получилось 110 HTML-файлов, для которых были определены CSS-селекторы с названиями книг. При этом удалось исключить ещё около 40 нерелевантных страниц.

Используя Python, библиотеку BeautifulSoup и найденные CSS-селекторы, Пьер извлёк текст из необходимых DOM-элементов. Получился большой список книг, требующий дополнительной обработки.

Часть списка с книгами после парсинга страниц

Чтобы найти самые цитируемые книги, требовалось нормализовать результаты. Например, названия книг имели разные стили оформления:

  • by ,
  • ,
  • : ,
  • ,
  • или всё подряд, включая даже номер издания.

Для обработки различных вариантов оформления была написана следующая функция:

После её применения потребовалось немного ручной очистки. Список стал выглядеть так:

Хамбл, Фарли. Непрерывное развёртывание ПО

Оригинальное название: Continuous Delivery by Jez Humble & David Farley.

В книге Джеза Хамбла и Дэвида Фарли приведены принципы и практические методы для сборки, автоматизации, тестирования и развёртывания высоконагруженных приложений. Авторы рассказывают о непрерывном интегрировании, разбиении проекта на компоненты и контроле версий. Книга ориентирована на программистов, имеющих опыт в корпоративной разработке. Рассматриваются следующие темы:

  • автоматизация сборки, интеграции, тестирования и развертывания программного обеспечения;
  • реализация конвейера развертывания на уровне команд и организаций;
  • взаимодействие разработчиков, тестировщиков и администраторов;
  • стратегии инкрементной разработки программных средств большими распределенными командами;
  • эффективные стратегии управления конфигурациями;
  • автоматизация приемочного тестирования – от анализа требований до реализации процессов.

24. Уэйн, Седжвик. Алгоритмы на Java (8.8% рекомендаций)

Уэйн, Седжвик. Алгоритмы на Java

Оригинальное название: Algorithms by Robert Sedgewick & Kevin Wayne.

Книга Седжвика и Уэйна «Алгоритмы на Java» является классическим справочным руководством, содержащим необходимый объём знаний для программиста в области алгоритмов, накопленных за последние несколько десятилетий. Как следует из названия, сами алгоритмы реализованы на Java.

23. Кори Альтхофф. Сам себе программист (8.8% рекомендаций)

Кори Альтхофф. Сам себе программист

Оригинальное название: The Self-Taught Programmer by Cory Althoff.

Кори Альтхофф – профессиональный self-made разработчик, на собственном опыте прошедший путь от новичка до инженера программного обеспечения в компании eBay. Автор поможет пройти сложный путь от создания первой программы на Python до первого собеседования.

Книга состоит из нескольких разделов:

  • основы Python 3 и разработка первых программ;
  • основы объектно-ориентированного программирования;
  • Git, Bash, регулярные выражения и базы данных. Использование приобретённых прежде навыков для разработки веб-скрапера;
  • основы Computer Science, алгоритмов и структур данных;
  • советы о работе в команде и получении первой работы.

22. Steve McConnell. Rapid Development (8.8% рекомендаций)

Steve McConnell. Rapid Development

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

21. Питер Сейбел. Кодеры за работой. Размышления о ремесле программиста (10.2% рекомендаций)

Питер Сейбел. Кодеры за работой. Размышления о ремесле программиста

Оригинальное название: Coders at Work by Peter Seibel.

Программисты – люди не очень публичные, многие работают поодиночке или в небольших группах. Самая важная и интересная часть их работы никому не видна, потому что происходит у них в голове.

Питер Сейбел взял интервью у 15профессионалов: Кена Томпсона, создателя UNIX, Берни Козелла, участника первой реализации сети ARPANET, Дональда Кнута, Гая Стила, Джейми Завински, Саймона Пейтон-Джонса, Питера Норвига, Дугласа Крокфорда, Джошуа Блоха, Брендана Айка, Джо Армстронга, Брэда Фицпатрика, создателя Живого Журнала, и других.

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

20. Эрик Эванс. Предметно-ориентированное проектирование. Структуризация сложных программных систем (10.2% рекомендаций)

Эрик Эванс. Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем

Оригинальное название: Domain-Driven Design by Eric Evans.

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

19. Дональд Кнут. Искусство программирования (10.2% рекомендаций)

Дональд Кнут. Искусство программирования

Оригинальное название: The Art of Computer Programming by Donald E. Knuth.

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

18. Абельсон, Сассман. Структура и интерпретация компьютерных программ (13.2% рекомендаций)

Структура и интерпретация компьютерных программ

Оригинальное название: Structure and Interpretation of Computer Programs by Harold Abelson / Gerald Jay Sussman / Julie Sussman.

Классическая книга Харольда Абельсона и Джеральда Сассмана о программировании. В Массачусетском технологическом институте использовалась как учебник для начального курса программирования. Помимо этого, книгу используют во многих американских учебных заведениях, имеющих курсы, так или иначе связанные с языком Scheme. Используя Scheme (диалект языка LISP), авторы описали основные концепции программирования, включая абстракцию (данных и исполнения), рекурсию и метаязыковую абстракцию.

17. Мартин Фаулер. Шаблоны корпоративных приложений (14.7% рекомендаций)

Мартин Фаулер. Шаблоны корпоративных приложений

Оригинальное название: Patterns of Enterprise Application Architecture by Martin Fowler.

Автор, известный специалист в области объектно-ориентированного программирования, заметил, что с развитием технологий принципы проектирования и решения общих проблем остаются неизменными, и выделил более 40 наиболее употребительных подходов, оформив их в виде типовых решений.

16. Джон Бентли. Жемчужины программирования (16.1% рекомендаций)

Джон Бентли. Жемчужины программирования

Оригинальное название: Programming Pearls by Jon Bentley

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

  • методы разработки алгоритмов;
  • методы оценки производительности;
  • методы оптимизации программ и экономии памяти;
  • задачи сортировки, выборки, поиска.

15. ДеМарко, Листер. Человеческий фактор. Успешные проекты и команды (17.6% рекомендаций)

ДеМарко, Листер. Человеческий фактор. Успешные проекты и команды

Оригинальное название: Peopleware by Tom DeMarco & Tim Lister.

С юмором и мудростью, обретенной за годы руководства и консультирования, Демарко и Листер демонстрируют, что сложнейшие проблемы разработки программного обеспечения имеют человеческую, а не техническую природу. Авторы дают непростые – но подкрёпленные научными исследованиями – советы. Издание предназначено в первую очередь для руководителей проектов, хотя будет полезно и рядовым программистам.

14. Кормен и др. Алгоритмы. Построение и анализ (17.6% рекомендаций)

Алгоритмы. Построение и анализ

Оригинальное название: Introduction to Algorithms by Thomas H. Cormen / Charles E. Leiserson / Ronald L. Rivest / Clifford Stein.

В книге «Алгоритмы. Построение и анализ» описаны самые разнообразные алгоритмы, сочетается широкий диапазон тем с глубиной и полнотой изложения; при этом изложение доступно для читателей самого разного уровня подготовки. Каждая глава книги относительно самодостаточна и может использоваться в качестве отдельной темы для изучения.

13. Чарльз Петцольд. Код: тайный язык информатики (19.1% рекомендаций)

Чарльз Петцольд. Код: тайный язык информатики

Оригинальное название: Code by Charles Petzold.

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

12. Стив Круг. Не заставляйте меня думать. Веб-юзабилити и здравый смысл (19.1% рекомендаций)

Стив Круг. Не заставляйте меня думать. Веб-юзабилити и здравый смысл

Оригинальное название: Don’t Make Me Think by Steve Krug.

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

11. Джон Сонмез. Путь программиста (22.0% рекомендаций)

Джон Сонмез. Путь программиста

Оригинальное название: Soft Skills by John Sonmez.

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

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

10. Г. Л. Макдауэлл. Карьера програмиста (22.0% рекомендаций)

Г. Л. Макдауэлл. Карьера програмиста

Оригинальное название: Cracking the Coding Interview by Gayle Laakmann McDowell.

Приведённые в книге вопросы с интервью являются реальными вопросами с собеседований в различных компаниях. В книге вы найдёте

  • советы о том, как решить каждый из 189 вопросов;
  • пять проверенных стратегий для решения вопросов по алгоритмам;
  • широкий охват основных тем: производительность, структуры данных, основные алгоритмы и др.

9. Приемы объектно-ориентированного проектирования. Паттерны проектирования (25.0% рекомендаций)

Приемы объектно-ориентированного проектирования. Паттерны проектирования

Оригинальное название: Design Patterns by Erich Gamma / Richard Helm / Ralph Johnson / John Vlissides.

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

Издание предназначено как для профессиональных разработчиков, так и для программистов, осваивающих объектно-ориентированное проектирование.

8. Майкл Физерс. Эффективная работа с унаследованным кодом (26.4% рекомендаций)

Майкл Физерс. Эффективная работа с унаследованным кодом

Оригинальное название: Working Effectively with Legacy Code by Michael Feathers.

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

В книге рассматриваются следующие темы:

  • внутренний механизм изменений в коде;
  • инструменты тестирования;
  • виды неправильных зависимостей;
  • использование преимуществ ООП;
  • методы разрыва зависимостей и многое другое.

7. Роберт Мартин. Идеальный программист (27.9% рекомендаций)

Роберт Мартин. Чистая архитектура

Оригинальное название: The Clean Coder by Robert Martin.

В этой книге легендарный эксперт Роберт Мартин (более известный в сообществе как «Дядюшка Боб»), автор бестселлера «Чистый код», рассказывает о том, что значит «быть профессиональным программистом», описывая методы, инструменты и подходы для разработки «идеального ПО». Книга насыщена практическими советами в отношении всех аспектов программирования: от оценки проекта и написания кода до рефакторинга и тестирования.

6. Фредерик Брукс. Мифический человеко-месяц, или Как создаются программные системы (27.9% рекомендаций)

Фредерик Брукс. Мифический человеко-месяц, или Как создаются программные системы

Оригинальное название: The Mythical Man-Month by Frederick P. Brooks Jr.

Книга Ф. Брукса представляет собой сборник очерков, в которых последовательно обсуждаются узловые проблемы разработки крупных программных проектов: повышение производительности труда программистов, организация коллективной работы, планирование и выполнение графика реализации. Одной из главных тем книги стала идея, получившая впоследствии название «закон Брукса», о том что привнесение в проект новых сил на поздних стадиях разработки лишь отодвигает срок сдачи проекта.

Англоязычный журнал PC World поместил книгу Брукса на первое место в списке «Десять IT-книг, которые стыдно признать, что не читал» (Top Ten IT Books Never To Admit You Haven’t Read).

5. Фримен, Робсон. Head First. Паттерны проектирования (29.4% рекомендаций)

Фримен, Робсон. Head First. Паттерны проектирования

Оригинальное название: Head First Design Patterns by Eric Freeman / Bert Bates / Kathy Sierra / Elisabeth Robson.

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

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

4. Фаулер, Кент. Рефакторинг. Улучшение проекта существующего кода (35% рекомендаций)

Фаулер, Кент. Рефакторинг. Улучшение проекта существующего кода

Оригинальное название: Refactoring by Martin Fowler.

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

3. Стив Макконелл. Совершенный код (42% рекомендаций)

Стив Макконелл. Совершенный код

Оригинальное название: Code Complete by Steve McConnell.

Фундаментальная книга, в которой собраны наиболее эффективные методики и принципы проектирования программного обеспечения, а также уникальный практический и академический опыт самого автора.

2. Роберт Мартин. Чистый код (66% рекомендаций)

Роберт Мартин. Чистый код

Оригинальное название: Clean Code by Robert C. Martin.

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

Эта книга посвящена хорошему программированию. Она полна реальных примеров кода. Прочитав книгу, вы узнаете много нового о коде. Более того, вы научитесь отличать хороший код от плохого.

1. Томас, Хант. Программист-прагматик (67% рекомендаций)

Томас, Хант. Программист-прагматик

Оригинальное название: The Pragmatic Programmer by David Thomas & Andrew Hunt.

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

Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.

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

Если вам понравилась подборка, у нас также есть списки книг по отдельным языкам и технологиям с отзывами читателей: Data Science, Python, C++, C# и JavaScript. Все они были подготовлены в 2020 году.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *