25 января

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

Программирование — это искусство! Айтишникам, как художникам, музыкантам и писателям, под силу творить прекрасное: код способен впечатлять и даже менять ход жизни. Однако уникальный код требует не только таланта, но и непрерывного обучения. Составили для вас ТОП-10 книг, которые должен прочесть каждый уважающий себя программист, чтобы быть самым-самым!
1. «Чистый код. Создание, анализ и рефакторинг»

Автор Роберт К. Мартин

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

Также после прочтения книги вы сможете внедрить в свои проекты разработки ПО методологию Agile, одну из ведущих форм SDLC (Software development lifecycle или жизненный цикл разработки системы), и станете более решительным и дисциплинированным программистом, чем раньше.

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

Авторы — Томас Х. Кормен, Чарльз И. Лейзерсон

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

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

Отзывы о книге:

"Это настоящая библия в указанной области, исчерпывающий учебник, охватывающий весь спектр современных алгоритмов: от быстрых алгоритмов и структур данных до алгоритмов с полиномиальным временем работы для решения очень сложных задач, от классических алгоритмов теории графов до специализированных алгоритмов поиска подстрок, вычислительной геометрии и теории чисел. Нельзя не упомянуть появившиеся в третьем издании деревья ван Эмде Боаса и многопоточные алгоритмы, важность которых постоянно увеличивается". (Дэниел Шпильман, факультет информатики Йельского университета)

"Как преподаватель и исследователь в области алгоритмов с более чем двадцатилетним стажем, могу с уверенностью утверждать, что книга Кормена - лучший из встречавшихся мне учебников. Это умный, энциклопедичный и современный подход к изучению алгоритмов; наш факультет продолжит использовать эту книгу как в качестве учебника для студентов и аспирантов, так и в качестве рекомендуемого справочного пособия". (Габриэль Робинс, факультет информатики Университета Вирджинии)
3. «Структура и Интерпретация Компьютерных Программ»

Авторы - Абельсон Харольд, Сассман Джеральд Джей

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

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


4. «Идеальный программист. Как стать профессионалом разработки ПО»

Автор Мартин Роберт К.

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

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

«Почему вы выбрали эту книгу? Наверное, потому что вы — программист, и вас интересует понятие профессионализма. И правильно! Профессионализм — то, чего так отчаянно не хватает в нашей профессии. Я тоже программист. Я занимался программированием 42 года и за это время повидал многое. Меня увольняли. Меня превозносили до небес. Я побывал руководителем группы, начальником, рядовым работником и даже исполнительным директором. Я работал с выдающимися программистами, и я работал со слизняками. Я занимался разработкой как самых передовых встроенных программных/аппаратных систем, так и корпоративных систем начисления зарплаты. Я программировал на COBOL, FORTRAN, BAL, PDP-8, PDP-11, C, C++, Java, Ruby, Smalltalk и на многих других языках. Я работал с бездарными халявщиками, и я работал с высококвалифицированными профессионалами. Именно последней классификации посвящена эта книга.

На ее страницах я попытаюсь определить, что же это такое — «быть профессиональным программистом». Я опишу те атрибуты и признаки, которые, на мой взгляд, присущи настоящим профессионалам». (Роберт К. Мартин)
5. «Совершенный код: практическое руководство по разработке программного обеспечения»

Автор – Стив МакКоннел

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

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


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

Авторы – Джон Влиссидес, Эрих Гамма, Ричард Хелм

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

Авторы – Эндрю Хант, Дэвид Томас

Небольшое лирическое отступление: между первым и вторым изданием книги разница в 20 лет! Эта книга предназначена для каждого программиста, который хочет стать опытным разработчиком программного обеспечения и профессионалом с большой буквы.

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

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

Маленький спойлер: в книге много айтишного юмора!


8. «Head First. Паттерны проектирования. Обновленное юбилейное издание»

Авторы- Эрик Фриман, Элизабет Робсон

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

Автор - Мартин Фаулер

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

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

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


10. «Искусство программирования», тома 1-4.

Автор - Дональд Э. Кнут

Том 1: Основные алгоритмы
Том 2: Получисленные алгоритмы
Том 3: Сортировка и поиск
Том 4A: Комбинаторные алгоритмы

Эта серия книг по программированию предназначена для крепких орешков. Слова Билла Гейтса тому подтверждение: «если вы думаете, что вы отличный программист, прочтите «Искусство программирования», и если осилите все, то напишите мне».

Дональд Э. Кнут, автор серии «Искусство компьютерного программирования», даже получил премию Тьюринга (аналог Нобелевской премии по вычислительной технике).

Нашим долгом будет предупредить вас, что в книгах содержится «ненормативная» хардкорная математика!
Несомненно, книги — один из лучших способов научиться чему-либо, в том числе и программированию. Но при входе в айти все средства хороши, поэтому советуем вам усилить обучение специализированными курсами (семинары, видосики с YouTube и хорошие статьи тоже никто не отменял). Только развиваясь и совершенствуясь, вы станете созидателями. Удачи!

Стань востребованным IT специалистом

Наша цель — дать тебе знания и опыт, достаточные для трудоустройства в крупнейшие IT компании.