Топ-25 самых рекомендуемых книг по программированию

Содержание

Искусство программирования

Автор учебника: Д. Кнут


Без этой книги не обходится ни одна подборка лучших учебников по программированию. Эта настоящая «библия» разработчика, включающая в себя практически все существующие направления. Над «Искусством программирования» автор работает с 1962 года и по сегодняшний день. Сейчас изданы 3 тома и (только по-английски) часть четвертого.

Книга начинается с азов алгоритмизации, после чего, с каждой главой рассматриваются все новые методы написания алгоритмов. В монографии много математики, практических примеров и подробных описаний. Читать учебник сложно. Примеры приводятся на ассемблере, что еще больше усложняет восприятие. Но само качество и фундаментальный подход к программированию делают этот труд одним из лучших в мире. Он включен в перечень лучших физико-математических монографий XX века. При этом Билл Гейтс говорил об этом труде: «Если вы – программист, вы должны были читать монографию Кнута. А если вы сумели прочитать и понять ее полностью, обязательно отправьте мне свое резюме».

Программа обучения. Системный подход

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

Программа обучения «Профессия веб-разработчик» рассчитана на один год и включает в себя три модуля:

Веб-разработчик

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

JavaScript с нуля

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

Базовые навыки PHP

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

Рефакторинг

Автор книги: М. Фаулер

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

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

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


Автор подробно шаг за шагом описывает различные методы рефакторинга

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

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

Практическая криптография. Нильс Фергюсон и Брюс Шнайер

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

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

М. Фаулер «Рефакторинг»

Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям.

М. Фаулер

Практически любое издание о рефакторинге ссылается на книгу Мартина Фаулера «Рефакторинг». Действительно, в этой книге Фаулер сделал невозможное — в предельно понятной форме донес до читателей почти полностью исчерпывающее описание понятия «рефакторинг», его назначение, особенности и методы реализации.

При немалом объеме (400 страниц) книга читается буквально за пару вечеров, от нее просто невозможно оторваться. Главная причина головокружительного успеха книги — ее практическая направленность. Все мы знаем, что самая сложная задача при подаче материала — привести хороший показательный пример. В этом Фаулеру нет равных. Книга начинается с примера улучшения программы, который сразу с головой затягивает читателя в мир рефакторинга. Всего 40 страниц примера дают нам вполне конкретное представление о рефакторинге, его целях, принципах и основных методах реализации. Мартин определяет рефакторинг как «изменение во внутренней структуре ПО, имеющее целью облегчить понимание его работы и упростить модификацию, не затрагивая наблюдаемого поведения». Но когда необходимо проводить данное изменение? Какой код должен подвергаться переработке? Автор дает исчерпывающие ответы на эти вопросы. Он вводит правило «трех ударов»: «После трех ударов начинайте рефакторинг». То есть когда вы делаете что-то аналогичное в третий раз, это сигнал для начала рефакторинга. Раздел «Код с душком» дает нам четкое представление о том, какой же код требует улучшения. К признакам такого кода относятся: длинный метод, большой класс, длинный список параметров метода, дублирование кода, операторы типа switch, временные поля, отказ от наследства, неуместная близость классов и многое другое.

Фаулер, как сторонник TDD (Test-driven development), посвящает главу книги созданию автоматических тестов и описанию среды JUnit. Если обнаружена ошибка, сначала необходимо написать автоматический тест, выявляющий ее, и лишь затем проводить исправление. Это позволит в будущем не наступать на одни и те же грабли. Аналогично перед проведением рефакторинга следует написать тест для улучшаемого кода, чтобы обеспечить неизменность его поведения.

Бо́льшую часть книги занимает каталог методов рефакторинга. Он содержит разделы, посвященные составлению методов, перемещению функций между объектами, организации данных, упрощению условных выражений и вызовов методов, решению задач обобщения и крупным архитектурным рефакторингам. Многие из методов рефакторинга автоматизированы в популярных IDE. Например, Visual Studio предоставляет возможности по автоматическому выделению метода (ExtractMethod), удалению параметра (RemoveParameter), выделению интерфейса (ExtractInterface) и пр. В качестве крупных рефакторингов уровня системы Фаулер приводит следующие: разделение иерархии наследования, выполняющей более одной задачи, преобразование процедурного подхода к проектированию в объектно-ориентированный подход, отделение предметной области от уровня представления, а также выделение иерархии, подразумевающее разбиение большого класса на целую иерархию значительно меньших по размеру и более специализированных подклассов.

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

Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес «Паттерны проектирования»

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

Э. Гамма

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

Очень часто начинающий разработчик самостоятельно берется за решение уже более тысячи раз решенной до него задачи проектирования и изобретает очередную разновидность пятиколесного велосипеда, истинно гордясь своим «новшеством». Владение языком паттернов позволяет решить множество задач проектирования наиболее оптимальным способом, затрачивая при этом минимум усилий. Всего двадцать описанных в книге паттернов предоставляют инструментарий для решения огромного спектра задач проектирования ПО. Материал книги довольно сложен и требует от читателя определенных знаний в области объектно-ориентированного проектировании. Для освоения паттернов недостаточно просто прочитать книгу, необходимо основательно над ней «попотеть». Впрочем, твои усилия не пройдут даром. Книга содержит 350 страниц и состоит из двух частей. В первой части дается общее понятие паттернов проектирования, описывается их практическое применение на примере создания визуального редактора документов Lexi. Вторая часть книги содержит каталог паттернов с подробным описанием назначения, структуры, особенностей реализации и примерами применения каждого паттерна.


Коллектив авторов известен как Gang of Four («Банда четырех»), поэтому представленные в книге паттерны называют GoF. Авторы разбивают все множество представленных паттернов на три группы: порождающие паттерны, структурные паттерны и паттерны поведения. Порождающие паттерны решают задачу инстанцирования (создание экземпляров) классов. К самым популярным паттернам в данной группе можно отнести AbstractFactory (абстрактная фабрика), FactoryMethod (фабричный метод) и Singleton (одиночка).

Структурные паттерны предназначены для решения вопросов компоновки системы на основе классов и объектов. К ним относятся такие важнейшие паттерны, как Adapter (адаптер), Bridge (мост), Composite (компоновщик), Proxy (заместитель) и Façade (фасад). Паттерны поведения связаны с алгоритмами и вопросами распределения обязанностей между классами. Здесь необходимо упомянуть Strategy (стратегия), TemplateMethod (шаблонный метод), Observer (наблюдатель), Command (команда) и Iterator (итератор).

Единственное, что может смутить читателя, — некоторые примеры в книге написаны на малоизвестном на сегодняшний день языке программирования Smalltalk, а для изображения диаграмм классов вместо привычного UML используется OMT (Object Modeling Technique).

Гуру ООАиП Мартин Фаулер пишет: «Паттерны GoF — это лучшая из когда-либо изданных книг по объектно-ориентированному проектированию. Эта книга чрезвычайно влиятельна в индустрии программного обеспечения — только посмотрите на библиотеки Java и .NET, которые буквально кишат паттернами GoF». Не существует специалиста в области объектно-ориентированного проектирования, незнакомого с паттернами GoF, а если такой и есть, то в этом случае его, скорее всего, нельзя назвать специалистом.

3 Адмирал Уильям Макрейвен — «Заправляй кровать»

Написанная морским котиком и настоящим адмиралом ВМФ США, эта книга содержит сердечные уроки, полученные автором в обстановке чести, долга, дисциплины и самопожертвования.

Между строк ты можешь почувствовать великое смирение, решимость и отвагу, которые передаются читателю с огромной глубиной и состраданием. Книга «Заправляй кровать» была вдохновлена речью адмирала на выпускной церемонии в Университете Техаса в Остине, которая стала популярной по всему миру.

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

Программист-прагматик: от подмастерья к мастеру

Авторы издания: Эндрю Хант и Дэвид Томас

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

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

Вы научитесь:

  • Создавать динамичные, хорошо адаптируемые программные системы;
  • Избегать ловушек, связанных с дублированием кода;
  • Защищать программу от багов различными методами;
  • Проводить эффективное и всестороннее тестирование;
  • Собирать требования от заказчиков и пользователей ПО;
  • Формировать успешную команду разработчиков и взаимодействовать с коллегами в коллективе.

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

C. Полное руководство. Герберт Шилдт

Информативный справочник по языку СИ для новичков. Подробно расписаны все основные моменты и функциональность языка C. Тематика книги основана на стандартах C89 и C99.


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

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

Достоинства:

  • книга имеет хоть и большую стоимость (до 3000 руб.), но она полностью оправдывает свою цену;
  • подробный справочник;
  • к каждой функции приводится описание и иллюстрация;
  • есть примеры, как можно скомпилировать разные функции.

19 место

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

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

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

5 место

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

Больше 12 лет прошло с момента выхода первого издания книги, но она продолжает оставаться актуальной. Основные идеи не изменились, но изменился язык Java, например появились лямбда-выражения. Поэтому авторы приняли решение обновить легендарную книгу и выпустить юбилейное издание.

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

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

Особенностью данного издания является уникальный способ подачи материала, выделяющий серию «Head First» издательства O’Reilly в ряду множества скучных книг, посвященных программированию. Книга будет интересна широкому кругу веб-разработчиков, от начинающих до профессионалов, желающих освоить работу с паттернами проектирования.

Книга «Продай свое портфолио. То, чему не учат в дизайнерских школах»

От автора бестселлера «Сожги свое портфолио!» для всех фрилансеров, дизайнеров и компаний, которые устали брать цены с потолка в надежде заработать. «Среднестатистический дизайнер размышляет так: “Сколько мне взять за работу? Может, ХХХ? Да, вроде нормально. Столько и возьму”. Затем он вставляет цифры в простенькое коммерческое предложение и отсылает клиенту, скрестив пальцы и надеясь на согласование. Это касается не только фрилансеров, но и многих компаний. Я был владельцем такой компании пятнадцать лет. Половину этого времени я при помощи шестого чувства выдумывал цены в погоне за тендером. Скорее всего, многие из вас делают так же. Берут цену наугад. Ставят ее в коммерческое предложение. Отправляют клиенту и надеются на лучшее. Все изменится, когда я покажу вам работающий способ ценообразования на творческие услуги, который позволит сделать ваше коммерческое предложение наиболее выигрышным и увеличить прибыль». Майкл Джанда

Лекции и литература

Освоив метод Франклина, ищите информацию, которая бесплатно доступна в интернете в огромном количестве, особенно на английском языке. Вкратце план действий такой:

  1. Выучить английский язык (хотя можно найти немало курсов и на русском языке).
  2. Выбрать программу обучения. Определиться, какое направление программирования наиболее интересно.
  3. Найти учебные материалы по этому предмету.

Образовательные ресурсы с курсами и лекциями

  • MIT OpenCourseWare: обучающие курсы, видеозаписи лекций и семинаров Массачусетского технологического института.
  • KhanAcademy: бесплатные лекции, в том числе по математике и информатике.
  • Coursera: курсы от ведущих западных университетов.
  • Статьи по программированию от Skillbox.

Учебная литература

  • Список бесплатных книг по программированию (англ. яз.).
  • Сборник учебной литературы для программиста.
  • Бесплатные книги по программированию на русском и английском.
  • Подборка бесплатных книг.

Самоучители для начинающих

  • Занимательное программирование. Самоучитель. М. Мозговой.
  • C# для школьников. Учебное пособие. М. Драйер.
  • Программирование на Java для детей, родителей, дедушек и бабушек. Я. Файн.

Убийственные большие данные. Кэти О’Нил

Математические алгоритмы постепенно захватывают нашу жизнь. Кэти О’Нил – это профессор математики и финансовый аналитик, считающая, что алгоритмы стали серьёзным оружием в руках государства и предприятий – это оружие изначально направлено на нуждающиеся и незащищённые слои населения.

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

SQL для чайников. Аллен Тейлор

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

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

Грокаем технологию Биткоин. Калле Розенбаум

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

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


С этим читают