Топ 10 самых популярных книг по программированию


Оглавление (нажмите, чтобы открыть):

Топ 10 самых популярных книг по программированию

Чтобы запомнить большое количество цифр, он составил таблицу под названием «человек-действие-предмет». Каждой цифре Денис присвоил буквенный код, а каждому коду – образ. В зависимости от ячейки это либо человек, либо действие, либо предмет.

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

Объясняем, как вернуться в ритм или привыкнуть к ранним подъёмам с нуля.

Кто может лучше рассказать о поступлении в вуз, чем вчерашние одиннадцатиклассники? Мы решили узнать у выпускников «ПроеКТОрии», как они определились с профессией и какие университеты выбрали. Ловите лайфхаки от звездочек «ПроеКТОрии»: Тимура Якшимбетова, Татьяны Тихомировой и Арсения Семенова!

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

Давно не размышляли перед сном, как бы мог выглядеть новый цвет или как понять, что мы существуем на самом деле, а не являемся чьей-то фантазией? Сейчас мы это исправим! Держите 5 TED-лекций, которые точно перевернут ваше представление о мире.

Если вы хотите стать нашим партнером напишите нам

Лучшие книги по программированию: список литературы и краткий обзор книг

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

«Совершенный код»

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

Трудно найти гуру программирования, который бы обошел стороной это творение. Предупредим сразу, что книга — вовсе не справочник, а объемное издание в 900 страниц. Макконнелл описал здесь все, с чем может столкнуться начинающий программист:

  • «Рецепты» написания кодов высокого качества.
  • Механизмы отладки и тестирования.
  • Стратегии оптимизации кода.
  • Человеческие факторы, влияющие на разработку, и проч.

Автор провел впечатляющую исследовательскую работу: библиография занимает 20 страниц материала, включая в себя порядка 500 источников! Поэтому не удивительно, что книга была признана читателями суперполезной, не раз возглавляла рейтинги изданий по программированию. Немаловажно, что ее отличает простая манера изложения, своеобразный стиль автора и его чувство юмора.

Содержание «Совершенного кода»

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

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

Макконнелл приводит в «Совершенном коде» несколько методов разработки: ревизии кода, парное программирование, неформальные и формальные инспекции, разработки на базе тестирования — темы широко раскрываются в материале.

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

«Рефакторинг»

Еще одна лучшая книга по программированию авторства Мартина Фаулера. Начнем знакомство со слов самого автора: «Каждый может написать код, понятный компьютеру. И лишь хорошие программисты пишут код, понятный человеку».

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

Важные разделы «Рефакторинга»

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

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

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

«Паттерны проектирования»

Ищете отличные книги по программированию для начинающих? Тогда обратите внимание на это издание союза авторов:

Если вы попросите любого из профессионалов посоветовать вам издание по объектно-ориентированному программированию, то в 9 из 10 случаев вам посоветуют именно эту книгу! Издание давно перешло через статус «бестселлер». Смотрите сами, ведь книга была опубликована более чем на 30 языках и распространена 500 тысячами экземпляров.

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

Безусловно, это одна из лучших книг для изучения программирования. Но отметим, что перед ее прочтением у читателя уже должны быть накоплены знания по объектно-ориентированному проектированию. Издание недостаточно просто прочесть. Книгу нужно буквально пропустить через себя.

Содержание «Паттернов проектирования»

Издание состоит из 350 страниц. Книга поделена на две части:

  • Общее понятие паттернов в проектировании, описание их практического применения.
  • Каталог с паттернами с описанием структуры, назначения, особенностей реализации.

Все паттерны авторы разделяют на три основные категории:

  • Порождающие. Решают задачи инстанцирования классов.
  • Структурные. Решение вопросов компоновки системы на базе классов и объектов.
  • Паттерны поведения. Связаны с распределением обязанностей между классами, алгоритмами.

Единственный минус книги: примеры написаны на малоизвестном сегодня языке Smalltalk.

«Чистый код»

Творение Робина Мартина нельзя не причислить к лучшим книгам про программирование. Сам автор предупреждает читателя: «Написание кода — тяжелая задача. Тут точно придется попотеть».

360 страниц издания (не считая приложений) посвящены написанию высококачественного кода. Главное достоинство: издание составлено доступным и понятным языком. Поэтому его реально полностью осилить всего лишь за несколько вечеров. Подкупает и дружеская манера повествования, обилие примеров из реальной практики автора.

Три части «Чистого кода»

Свое издание Р. Мартин разделил на три части:

  • Теоретический раздел. Это именно теория написания «чистого» кода: приемы, паттерны и принципы, которые должен знать каждый разработчик.
  • Практический раздел. Автор рассказывает, как следует «чистить» коды существующих на сегодня приложений.
  • Итог. Здесь располагается перечень «запахов кода», а также инструкции по их устранению.

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

Робин Мартин вводит основное правило: с каким бы участком кода вы не работали, ваша задача — сделать его чище, качественнее, чем он был. Только в таком случае код не будет «загнивать».

Безусловно, это одна из лучших книг по программированию для начинающих. Читатели отмечают только один ее минус: Java-ориентированность.

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

Продолжаем знакомить вас с лучшими книгами по основам программирования. Создатель данной, Дональд Кнут, метко подмечает: «Лучший способ в чем-то разобраться — попробовать научить этому компьютер». Почитатели книги говорят, что программист, не имеющий «Искусство программирования» в своей библиотеке, похож на священнослужителя без Библии.

Чем же хороша монография Д. Кнута? Автор подробно описывает и анализирует фундаментальные алгоритмы информатики, приводит практические задачи для усвоения материала. Работа была начата еще в 1962 году. В полном варианте издание будет включать в себя 7 томов. Пока что издано три — это уже 3000 страниц. Книга не является готовым «рецептом» к решению задач. Читать ее нелегко — примеры рассматриваются на низкоуровневом языке программирования, созданного автором для гипотетического компьютера.

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

Рассмотрим части научно-практического произведения:

  • Первый том. Посвящен основным алгоритмам и в целом подготавливает читателя к работе над книгой. Рассматриваются математические теоремы, термины, язык программирования, созданный автором, — все то, на чем будет базироваться повествование. Также здесь упомянуты информационные системы и алгоритмы взаимодействия с ними.
  • Второй том. Рассматриваются упражнения со случайными числами и их последовательностями. Описываются важные вопросы арифметики: системы счисления, арифметика чисел, имеющих плавающую точку, полиноминальная арифметика и проч.
  • Третий том. Алгоритмы поиска и сортировки.
  • Четвертый том. Написан не полностью, готовится к выпуску. Здесь будут разбираться вопросы комбинаторного поиска.

«Искусство программирования» было высоко оценено Биллом Гейтсом. В своем отзыве о издании он сказал, что каждый, кто смог осилить творение Кнута, определенно может отправить резюме в его корпорацию.

«Программист-прогматик»

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

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

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

Главы «Программиста-прагматика»

Давайте кратко рассмотрим содержание книги:

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

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

Библиотека программиста

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

  • «Эффективная работа с унаследованным кодом». Создатель — М. К. Физерс.
  • «JavaScript: сильные стороны». Создатель — Д. Крокфорд.
  • «Шаблоны корпоративных приложений». Создатель — М. Фаулер.
  • «Язык программирования С». Создатели — Б. У. Керниган, Д. М. Ритчи.
  • «Эффективное использование С+++». Создатель — С. Майерс.
  • «Экспериментальное программирование». Создатель — К. Бек.
  • «Алгоритмы. Построение и анализ». Создатели — Т. Кормен и др.
  • «Регулярные выражения». Создатель — Д. Фридл.
  • «Современное проектирование на С++». Создатель — А. Александреску.

Издания для юных программистов

Представим также лучшие книги по программированию для детей:

  • «Scratch для детей». Автор — М. Марджи.
  • «JavaScript для детей». Автор — Н. Морган.
  • «Python для детей». Автор — Д. Бриггс.

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

Лучшие книги по программированию

В свое время я работал и продолжаю работать сейчас разработчиком. Начал в качестве веб-программиста в 2004 году, перешел на полный стек в 2009 году, начал разработку для iOS в 2013.

Я начал свой путь программиста с прочтения трех книг: одна была про HTML, другая – про CSS и третья, соответственно, об SQL. Прочие знания я получил из Google, Stack Overflow и блогов. Вообще, Интернет – прекрасная штука. Каждый день я прочитывал по 5 или больше тематических статьей. И, что самое главное, все эти знания были бесплатны.

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

То, что меня также интересует – это чтение различных специализированных книг. Увы, но размеры списков по типу «Обязательных к прочтению для разработчиков» выходят далеко за рамки адекватных. Ситуация со сжатым списком из этого списка также ненамного лучшая…

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

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

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

Полный список содержит 139 книг. Все книги, которые вы увидите в этом списке, находятся на вершине популярности рассмотренных списков.

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

Короче говоря, без лишних слов – я рад представить:

Список лучшей литературы для разработчиков

7 упоминаний:

Паттерны проектирования: Элементы повторного использования программного обеспечения

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

«Еще одно произведение классики, содержащее в себе огромную коллекцию различных паттернов программирования.» Лик Бун

Код: Скрытый язык аппаратного и программного обеспечения

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

«После прочтения этой книги вы поймете, что на самом деле выполняет ваш код и как на самом деле этот код исполняет процессор. Это одновременно и весело, и полезно.» Джон Сонмерц

8 появлений:

Эффективная работа с правильным кодом

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

«Если вы принимаете участие над работой с большим объемным кодом более пяти лет, эта книга, вероятно, станет вашей новой Библией. Прочтите это и примите в свои сердца.» Джон Сонмерц

Люди: Продуктивные проекты и команды

«Эта книга оказала на меня наибольшее влияние в свое время. Пожалуй, я могу сравнить ее с эффектом от прочтения Манифеста Анти-Дилберта.» Джоел Сполски

«Если вы желаете носить гордое звание тим лидера на практике, нежели на словах – эта книга определенно для вас.» Джеф Атвуд

9 упоминаний:

Паттерны разработки корпоративных приложений

«Книга очень полезна при разработке массивных приложений, так как она предлагает детальное объяснение ситуаций, когда нужно использовать определенный программный паттерн (а когда наоборот — нет). Даже не могу назвать примерное количеств раз, сколько мне приходилось обращается к данной книге.» Род Хилтон

«Обеспечивает читателя каталогом качественных проверенных корпоративных паттернов и ситуаций, советует, когда эти самые паттерны стоит использовать.» Иан Джойс

11 упоминаний:

Вступление в алгоритмы

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

12 упоминаний:

Чистый код: Пособник мастера программного обеспечения

«Если вы пожелаете прочитать книгу, связанную с программированием, определенно – вам стоит обратить свое внимание на эту.» Роберт Грайнер

«Это еще одна книга, которой удалось полностью изменить стилистику написания моего кода. Я могу ясно разделить свою жизнь на период до прочтения книги и после.» Джон Сонмерц

Рефакторинг: Улучшение дизайна существующего кода

«Книга, строго рекомендуемая к прочтению для каждого, кто желает улучшить качество кода.» Деепак Карантх

«Обязательна к прочтению каждому, кто так или иначе принимает участие в работе с объектно-ориентированными языками программирования.» Дэниель Рид

14 упоминаний:

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

«Это классика, но недавно исправленная и дополненная. В высшей степени поразительно то, как она тесно связана с разработкой программного обеспечения. Если вы принимаете участие в программировании, определенно эта книга – обязательна к прочтению.» Джейсон Роел

«Бесспорно, единственная классика, посвященная программированию. Позор всякому, кто еще не прочитал ее.» Джеффри Атвуд

15. упоминаний:

Прагматичный программист: От новичка к мастеру

«Насколько революционна эта книга? Пожалуй, достаточно для того, чтобы развернуть целую издательскую кампанию. Если вы все еще не прочитали ее – это, бесспорно, большое упущение с вашей стороны.» Род Хилтон

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

16 упоминаний:

Идеальный код: Практическое пособие по программной архитектуре

«Сделайте для себя приятное. Пусть это будет первой книгой, которую вы прочитаете – и первой книгой, которую вы посоветуете другим.» Джеффри Атвуд

«Эта книга потрясла меня больше всего. Определенно, после ее прочтения то, как я писал код, и то, что я думал о программировании в целом, претерпело серьезные изменения.» Джон Сонмец

Полный список содержит в себе 139 книг. При желании на языке оригинала его можно рассмотреть здесь.

Автор перевода: Евгений Лукашук

Мой ТОП-9 книг для программистов

И ни одного романа.

Уверена, что это не первая статья о книгах для программистов, которые вы читаете и ждете увидеть ниже обложки увесистых томов авторства Дональда Кнута, Стивена Макконелла, Роберта Мартина, Томаса Кормена и культовой «Книги четырех» («Паттерны проектирования»).

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

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

Поэтому, расскажу только о тех книгах которые читала сама и знания из которых применяла на практике. Личный ТОП-9 включает:

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

1. Регулярные выражения. Сборник рецептов. Ян Гойвертс, Стивен Левитан

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

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

  • Удаление двойных пробелов;
  • Валидация номеров кредитных карт, емейлов и URL-адресов;
  • Удаление строк-дублей в тексте;
  • Очистка кода от комментариев;
  • Извлечение значений атрибутов из XML-файлов;
  • Нахождение дат в тексте.

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

2. SQL. Сборник рецептов. Энтони Молинаро

Знаете ли вы как с помощью SQL:

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

Если нет, то книга «SQL. Сборник рецептов» подскажет как.

Чуть выше я написала — одно регулярное выражение иногда заменяет десятки строк кода. Тоже с SQL-запросами. Готовые примеры из книги помогут сократить время на разработку, увеличить скорость выполнения программ/скриптов и снизить нагрузку на сервер.

3. Продуктивный программист. Как сделать сложное простым, а невозможное – возможным. Нил Форд

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

Нил Форд писал книгу, чтобы заставить посмотреть читателей на мир под другим углом и отбросить вредные привычки:

  • Не автоматизировать то, что делается руками >10 раз;
  • Использовать мышь там, где нужна только клавиатура;
  • Избегать работы в командной строке;
  • Держать рабочие файлы в беспорядке.
Мастер Йода рекомендует:  Получение данных c веб-сайта без API в 3 строки кода на Python

И ему это удается. Тонкими шутками и железными аргументами автор прививает читателю отвращение к ручному труду и убеждает встать на путь исправления.

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

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

Если хотите, чтобы вас перестало тянуть тратить время на рутину, читайте Нила Форда:-)

4. Экстремальное программирование: разработка через тестирование. Кент Бек

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

Кент Бек написал во вступлении:

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

Этот гениальный своей простотой совет, за много лет вырос в голове Кена в фантастически результативную методику программирования:

  • Сначала пишем тесты;
  • На втором шаге кодируем и добиваемся четкого выполнения тестов;
  • Проводим рефакторинг.

Воплощения этих трех шагов на практике посвящено 200 страниц, которые занимают описание паттернов TDD, советы по проведению рефакторинга, и рассказы о личном опыте применения методики на примере работы над приложением xUnit.

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

5. Пионеры программирования. Диалоги с создателями наиболее популярных языков программирования. Федерико Бьянкуцци, Шейн Уорден

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

В книге море любопытной технической информации и фактов из истории. Например:

  • Первые семь лет разработка языка APL проходила без использования компьютеров;
  • Создатель языка Eiffel Бертран Мейер еще в 1978 году написал книгу «Методы программирования», которую вскоре перевели на русский язык и издали в СССР. И до конца 2000-ых годов во время визитов в нашу страну ему попадались люди, которые утверждали, что изучали по ней программирование;
  • Создатель Post Script описывает первоклассного программиста следующими словами «Когда он предъявляет код и говорит, что тот готов, это значит, что код абсолютно надежен и отшлифован». Последний раз такой парень встречался им в 1972 году;
  • Когда Ларри пишет на своем Perl он вносит изменение в код и перезапускает программу примерно каждые 30 секунд;
  • Turbo Pascal создан тем же человеком, что и C#;
  • C++ используется чаще чем Objective-C потому, что его раскручивала корпорация AT&T (по мнению создателя Objective-C).

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

Джон Хьюз учит важности смирения для эффективной работы в команде, Дон Чемберден объясняет почему сегодня трудно сделать популярным новый язык программирования, а Гвидо ван Россум делиться приемами, как мгновенно включиться в написание кода, если тебя отвлекли.

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

6. Дискретная математика для программистов. Рей Хаггарти

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

В книге освещаются темы:

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

Радуют пояснительные примеры на псевдокоде (который по сути Pascal).

Ознакомление с этим учебником (в первую очередь с главой 7 и приложением к ней) теоретически и морально готовит к чтению третьего тома книги Дональда Кнута «Искусство программирования». Как настроить себя на чтение остальных томов, мне неизвестно:-(

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

7. Just for fun. Рассказ нечаянного революционера. Даймонд Дэвид. Торвальдс Линус

Биография Линуса Торвальдса с раннего детства до начала 2000-ых годов. Записана журналистом Даймонд Дэвидом под диктовку главного героя книги. Эта удивительная история о судьбе гика. Думаю многие, кого с детства тянет к программированию, найдут в себе нечто схожее с Линусом:

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

Линус с открытой банкой кока-колы в руках появился из недр Transmeta,
расположившейся в безымянном офисном комплексе Санта-Клары. На нем была
программистская униформа: джинсы, футболка с конференции и неизменный набор
носки плюс сандалии, который он полюбил, по его словам, еще до встречи с
первым программистом. “Должно быть, это просто врожденный программистский
инстинкт”, — объяснил он мне свой выбор.

Когда мы уселись на заднее сиденье, я для разминки спросил, настраивая
диктофон: “Вы из семьи технарей?”
“Нет, большинство моих родственников — журналисты, — ответил он и
добавил: — Поэтому я в курсе, какие вы все козлы”.

Я крутился как белка в колесе: программирование — сон —
программирование — еда (соленые сухарики) — программирование — сон —
программирование — душ (на скорую руку) — программирование. К концу работы
стало ясно, что моя программа превращается в операционную систему.

Помимо биографии Линуса в книге много информации о технических особенностях Linux и философии свободного ПО:

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

Цитировать «Just for Fun» можно бесконечно, настолько она классная. Читается за один вечер, поднимает настроение и помогает отвлечься от мирской суеты.

8. Карьера программиста. Как устроиться на работу в Google, Microsoft или другую ведущую IT-компанию. Монган Д., Гижере Э., Киндлер Н.

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

Задания заставляют задуматься, но не требуют много времени для решения (если под рукой Google/тема знакома).

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

9. Путь в магию. Первые шаги. Fiery

Эта книга представляет собой сборник упражнений для развития умения себя контролировать с развернутыми авторскими комментариями. Выполнение этих упражнений помогает справиться со следующими проблемами:

  • Неспособность сосредоточиться на текущем занятии;
  • Невозможность заснуть из-за навязчивых мыслей;
  • Чрезмерная утомляемость при достаточном времени сна из-за невозможности расслабиться.

Я делала эти упражнения в 16-17 лет во время подготовки к ЕГЭ, чтобы преодолеть трудности со сосредоточением на учебе. В тот момент они мне ощутимо помогли. Теперь только возвращаюсь к ним пару раз в год по мере необходимости.

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

P.S. Если у вас начнутся выходы из тела по ночам, срочно завязывайте с упражнениями и никому об этом не рассказывайте.

Классных книг для программистов много. И ТОП-10 каждого разработчика индивидуален .

Не знаете какие книги читать? Обратитесь к опытному кодеру, который:

  • Использует те же технологии, что и вы;
  • Решает похожие задачи;
  • Похож на вас характером.

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

(5.00 из 5, оценили: 1)

Каждому программисту. Лучшие книги по программированию. Обзор

Бьярне Страуструп. Программирование: Принципы и практика с использованием C++ (2-е издание). М.: Издательский дом «Вильямс», 2020. Пер. с англ. – 1328 стр. Тираж 300 экз.

Bjarne Stroustrup. Programming: Principles and Practice Using C++. Second edition.

Программирование – это искусство выражать решения задач так, чтобы компьютер мог их осуществить. Основные усилия программиста направлены на то, чтобы найти и уточнить решение, причем довольно часто полное понимание задачи приходит лишь в ходе программирования ее решения.
Эта книга предназначена для тех, кто еще никогда не программировал, но готов учиться этому ценой тяжелого и упорного труда. Она поможет овладеть главными принципами и приобрести практический опыт программирования на языке C++. Моя цель заключается в том, чтобы изложить достаточный объем сведений и научить вас решать простые и полезные задачи по программированию с помощью самых лучших и современных методов. Если вы учитесь на первом курсе университета, то можете изучать эту книгу на протяжении семестра (в предположении, что у вас имеется еще четыре курса средней сложности). Если вы изучаете программирование самостоятельно, то не ждите, что сможете освоить этот курс за меньшее время (ну, при условии, что вы будете работать по 15 часов в неделю, возможно, вам хватит 14 недель).
Три месяца могут показаться долгими, но объем курса довольно велик, и первые простые программы вы сможете написать, проработав над книгой около часа. Кроме того, сложность материала постепенно возрастает: в каждой главе вводятся новые полезные понятия, которые иллюстрируются реальными примерами.

* * *
Станете ли вы профессиональным программистом или экспертом по языку C++, прочитав эту книгу? Конечно, нет! Настоящее программирование – это тонкое, глубокое и очень сложное искусство, требующее знаний и технических навыков. Рассчитывать на то, что за четыре месяца вы станете экспертом по программированию, можно с таким же успехом, как и на то, что за полгода или даже год вы полностью изучите биологию, математику или иностранный язык (например, китайский, английский или датский) или научитесь играть на виолончели. Если подходить к изучению книги серьезно, то можно ожидать, что вы сможете писать простые полезные программы, читать более сложные программы и получите хорошие теоретическую и практическую основы для дальнейшей работы.
Прослушав этот курс, лучше всего поработать над реальным проектом.

* * *
Когда – начиная с 1949 года – в мире появились первые электронные компьютеры с хранимыми программами, каждый из них имел собственный язык программирования. Существовало взаимно однозначное соответствие между выражением алгоритма (например, вычисления орбиты планеты) и командами конкретной машины. Очевидно, что ученый (пользователями чаще всего были ученые) писал математические формулы, но программа представляла собой список машинных инструкций. Первые примитивные списки состояли из десятичных или восьмеричных цифр, точно соответствовавших их представлению в машинной памяти. Позднее появились ассемблер и «автокоды»; иначе говоря, люди разработали языки, в которых машинные команды и машинное оборудование (например, регистры) имели символические имена. Так, программист мог написать «LD R0 123», чтобы загрузить содержимое ячейки памяти, расположенной по адресу 123, в нулевой регистр. Однако каждая машина по-прежнему имела собственный набор команд и собственный язык программирования. (С. 893)

Стив Макконнелл. Совершенный код. Мастер-класс (Практическое руководство по разработке программного обеспечения). М.: Русская редакция, Спб: Питер, 2005. Пер. с англ. – 896 стр.

© Steven C. McConnell, 2004

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

«Великолепное руководство по стилю программирования и конструированию ПО».
Мартин Фаулер, автор книги «Refactoring»

«Книга Стива Макконнелла… это быстрый путь к мудрому программированию… Его книги увлекательны, и вы никогда не забудете то, что он рассказывает, опираясь на свой с трудом полученный опыт».
Джон Бентли, автор книги «Programming Pearls, 2d ed»

«Современное ПО должно быть надежным и гибким, а создание защищенного кода начинается с дисциплинированного конструирования программы. За десять лет так и не появилось лучшего руководства по этой теме, чем эта книга».
Майкл Ховард, специалист по защите ПО, корпорация Microsoft; один из авторов книги «Writing Secure Code»

Если вы не имеете специального образования, вы не одиноки. Ежегодно программистами становятся около 50 000 человек (BLS, 2004, Heскеr, 2004), однако число дипломов, вручаемых ежегодно в нашей отрасли, составляет лишь около 35 000 (NCES, 2002). Легко прийти к выводу, что многие программисты изучают разработку ПО самостоятельно. Программисты-самоучки встречаются среди инженеров, бухгалтеров, ученых, преподавателей, владельцев малого бизнеса и представителей других профессий, которые занимаются программированием в рамках своей работы, но не всегда считают себя программистами. Каким бы ни было ваше программистское образование, в этом руководстве вы найдете информацию об эффективных методиках программирования.

* * *
Методики, описанные в этой книге, заполняют пустоту, остающуюся в знаниях программистов после прочтения вводных и более серьезных учебников по программированию. Что читать человеку, изучившему книги типа «Introduction to Java», «Advanced Java» и «Advanced Advanced Java» и желающему узнать о программировании больше? Вы можете читать книги о процессорах Intel или Motorola, функциях ОС Microsoft Windows или Linux или о другом языке программирования – невозможно эффективно программировать, не имея хорошего представления о таких деталях. Но эта книга относится к числу тех немногих, в которых обсуждается программирование как таковое. Наибольшую пользу приносят те методики, которые можно использовать независимо от среды или языка. В других источниках такие методики обычно игнорируются, и именно поэтому я сосредоточился на них.
Как показано ниже, информация, представленная в этой книге, выжата из многих источников. Единственным другим способом получения этой информации является изучение горы книг и нескольких сотен технических журналов, дополненное значительным реальным опытом. Если вы уже проделали всё это, данная книга всё равно окажется вам полезной как удобный справочник.

* * *
За доказательствами влияния, оказываемого языками программирования на мышление программистов, далеко ходить не надо. Типичная история такова: «Мы писали новую систему на C++, но большинство наших программистов не имели особого опыта работы на C++. Раньше они использовали Fortran. Они писали код, который компилировался на C++, но на самом деле это был замаскированный Fortran. В итоге они заставили C++ эмулировать недостатки языка Fortran (такие как операторы goto и глобальные данные) и проигнорировали богатый набор объектно-ориентированных возможностей C++». Данный феномен наблюдается в отрасли уже много лет (Hanson, 1984; Yourdon, 1986a). (С. 60)

Питер Гудлиф. Ремесло программиста. Практика написания хорошего кода. Спб.: Символ-Плюс, 2009. Пер. с англ. – 704 стр.

Pete Goodliffe. Code Craft: The Practice of Writing Excellent Code.

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

«Легко читается, занимательно, даже забавно… Книга полна мудрости, накопленной за годы реальной работы, мучений и побед в сфере программных разработок… Жаль, что у меня не было такой книги, когда я начинал работать программистом».
Стив Лав (Steve Love), старший разработчик

«Именно та книга, которая нужна необстрелянным новобранцам. Рассказывает всю правду, легко читается и охватывает широкий круг тем, которые должен знать новичок».
Джон Джеггер (Jon Jagger), преподаватель, программист

Программирование – ваша страсть. Печально, но это так. И как закоренелый технарь вы программируете чуть ли не во время ночного сна. И вот вы попали в центр реального мира, в саму эту отрасль, и занимаетесь тем, о чем и не мечтали: забавляетесь с компьютером, а вам за это еще и деньги платят. Ведь вы сами готовы были заплатить за то, чтобы иметь такую возможность!
Но всё не так просто и не похоже на то, чего вы ожидали. Огорошенные назначением вам нереальных сроков выполнения задач и неумелым руководством (если его можно назвать этим словом), непрерывным изменением технического задания и необходимостью разбираться в дрянном коде, доставшемся вам от предшественников, вы начинаете сомневаться в том, что выбрали для себя правильный путь. Всё вокруг мешает вам писать тот код, о котором вы мечтали. Что ж, таковы условия существования в организациях, где пишут программы. Вы попали на передний край упорной битвы за создание шедевров художественного мастерства и научного гения. Удачи вам!

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

Сбой при компиляции
Крайне досадно, когда код, на который вы потратили столько времени, отказывается компилироваться. Это значит, что вам придется вернуться и исправить противную маленькую опечатку или несоответствие типов параметров, а затем снова компилировать и только потом приниматься по-настоящему тестировать свой труд. Как ни странно, это лучший тип ошибок, с которым вы можете столкнуться. Почему? Просто потому, что их проще всего обнаружить и исправить. Они проявляются сразу и наиболее очевидны.
Чем дольше поиск ошибок, тем дороже их исправление; это проиллюстрировано в разделе «Экономика ошибок» на стр. 216. Чем раньше вы сможете найти и исправить каждую ошибку, тем скорее вы сможете продолжить работу и тем меньшим объемом неприятностей и затрат обойдетесь. Ошибки компиляции очень легко заметить (на них просто трудно не обратить внимания) и обычно легко исправить. Вы не сможете запустить программу, пока не устраните их.
Чаще всего сбой при компиляции бывает вызван глупой синтаксической ошибкой или обычной невнимательностью, например при вызове функции с параметром неверного типа. Сбой может быть вызван ошибкой в make-файле, ошибкой этапа сборки (например, отсутствием реализации функции) или даже нехваткой дискового пространства на машине, где осуществляется сборка. (С. 214)

Роберт Мартин. Чистый код: Создание, анализ и рефакторинг. (Библиотека программиста). Спб.: Питер, 2010. – 464 стр.

Robert C. Martin. Clean Code: A Handbook of Agile Software Craftsmanship.

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

* * *
…И предоставлю всю необходимую для этого информацию. Но когда вы впервые заберетесь на велосипед, вы всё равно неизбежно упадете.
С программированием дело обстоит точно так же. Конечно, мы могли бы записать все «хорошие» принципы чистого кода, а потом доверить вам всю практическую работу (другими словами, позволить вам упасть, забравшись на велосипед), но какие бы из нас тогда были учителя?
Нет. В этой книге мы пойдем по другому пути.
Умение писать чистый код – тяжелая работа. Она не ограничивается знанием паттернов и принципов. Над кодом необходимо попотеть. Необходимо пытаться и терпеть неудачи. Необходимо наблюдать за тем, как другие пытаются и терпят неудачи. Необходимо видеть, как они спотыкаются и возвращаются к началу; как мучительно принимаются решения и какую цену приходится платить за неверный выбор.
Приготовьтесь основательно потрудиться во время чтения книги. Перед вами не «легкое чтиво», которое можно проглотить в самолете и перевернуть последнюю страницу перед посадкой. Книга заставит вас потрудиться, и потрудиться усердно. Какая работа вам предстоит? Вы будете читать код – много кода. И нам придется как следует подумать, что в этом коде правильно, а что нет. Вы будете наблюдать за тем, как мы разбираем эти модули, а потом собираем заново. Это потребует немало времени и усилий; но мы считаем, что результат того стоит.
Книга разделена на три части. В первых нескольких главах излагаются принципы, паттерны и приемы написания чистого кода. В них приводится довольно солидный объем кода, и читать их будет непросто. Весь этот материал подготовит вас ко второй части. Если вы отложите книгу после первой части – всего хорошего!
Во второй части книги трудиться придется еще больше. Она состоит из нескольких практических сценариев нарастающей сложности. Каждый сценарий представляет собой упражнение по чистке кода – или преобразовании проблемного кода в код с меньшим количеством проблем. Чтобы усвоить материал этой части,

* * *
Правило № 1: выполнение всех тестов
Прежде всего система должна делать то, что задумано ее проектировщиком. Система может быть отлично спланирована «на бумаге», но если не существует простого способа убедиться в том, что она действительно решает свои задачи, то результат выглядит сомнительно.
Система, тщательно протестированная и прошедшая все тесты, контролируема. На первый взгляд утверждение кажется очевидным, но это весьма важно. Невозможно проверить работу системы, которая не является контролируемой, а непроверенные системы не должны запускаться в эксплуатацию.
К счастью, стремление к контролируемости системы ведет к архитектуре с компактными узкоспециализированными классами. Всё просто: классы, соответствующие принципу SRP, проще тестировать. Чем больше тестов мы напишем, тем дальше продвинемся к простоте тестирования. Таким образом, обеспечение полной контролируемости системы помогает повысить качество проектирования.
Жесткая привязка усложняет написание тестов. Таким образом, чем больше тестов мы пишем, тем интенсивнее используем такие принципы, как DIP, и такие инструменты, как внедрение зависимостей, интерфейсы и абстракции, для минимизации привязок.
Как ни удивительно, выполнение простого и очевидного правила, гласящего, что для системы необходимо написать тесты и постоянно выполнять их, влияет на соответствие системы важнейшим критериям объектно-ориентированного программирования: устранению жестких привязок и повышению связности. Написание тестов улучшает архитектуру системы. (С. 201)

Мастер Йода рекомендует:  Планировщик заданий cron

Гради Буч. Объектно-ориентированный анализ и проектирование с примерами приложений (3-е издание). Издательский дом «Вильямс», 2008. Пер. с англ. – 720 стр.

Grady Booch and oth. Object-oriented Analysis and Design with Application. Third edition.

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

Гради Буч получил всемирное признание за его новаторскую работу в области архитектуры, проектирования и моделирования программных систем. С момента создания компании IBM Rational в 1981 году, он работал ее ведущим научным сотрудником. В марте 2003 года Гради получил звание почетного сотрудника IBM (IBM Fellow).
Гради – один из основоположников языка Unified Modeling Language (UML), а также автор нескольких оригинальных разработок компании Rational. Работая над многочисленными проектами, связанными с интенсивным программированием, Гради был не только архитектором программных систем, но и учил сотрудников принципам проектирования.

«Чем сложнее система, тем она уязвимее». Трудно себе представить строителя, размышляющего, а не вырыть ли еще один подвальный этаж под уже построенным стоэтажным зданием. Такое мероприятие было бы слишком дорогим и опасным. Как ни странно, пользователи программного обеспечения, не задумываясь, просят делать аналогичные изменения в программах. Более того, они считают, что для программиста эта задача не представляет никаких трудностей.
Наша неспособность справиться со сложностью, характерной для программного обеспечения, приводит к задержкам, дополнительным расходам и нарушениям технического задания. Такую ситуацию часто называют кризисом программного обеспечения, но, откровенно говоря, болезнь, длящуюся столь долго, следует называть нормальным состоянием. К сожалению, этот кризис уже привел в расточительному расходованию трудовых ресурсов – самого дорогого товара, – и многие возможности оказались упущенными. Для того чтобы создать новое программное обеспечение, необходимое пользователям, совершенно не достаточно просто собрать команду хороших программистов. Кроме того, во многих организациях большое количество персонала вынуждено отвлекаться на поддержку морально устаревших программ. Учитывая прямой и косвенный вклад, который вносит программное обеспечение в экономику наиболее развитых стран, а также огромные возможности, появляющиеся благодаря информатизации, следует признать, что мириться с такой ситуацией больше нельзя.
Как изменить эту мрачную картину? Поскольку источником всех проблем является сложность, присущая программному обеспечению, следует начать с изучения сложных систем, существующих в других научных дисциплинах. Действительно, если оглянуться вокруг, то можно обнаружить весьма успешно функционирующие системы, обладающие значительной сложностью. Некоторые из этих систем созданы человеком, например, космический корабль «Space Shuttle», туннель, соединяющий Англию и Францию, а также крупные корпорации. В природе существуют еще более сложные системы, такие как система циркуляции крови у человека (С. 34)

* * *
Дилетанты постоянно ищут некий волшебный метод или инструмент, который мог бы сделать процесс разработки программ тривиальным. В отличие от них, профессионалы знают, что такой панацеи не существует. Дилетанты хотят иметь готовые рецепты; профессионалы знают, что такой подход ведет к негодным проектным решениям и нагромождению лжи, за которой разработчики скрываются от ответственности за ранее принятые неверные решения. Дилетанты либо игнорируют документацию вообще, либо делают из нее фетиш, заботясь больше о том, как их бумажный продукт выглядит в глазах заказчика, чем о его сути. Профессионал признает важность документации, но всегда отдает предпочтение разумным архитектурными новшествам.
Процесс объектно-ориентированного анализа и проектирования невозможно описать с помощью рецептов, однако он определен достаточно хорошо, чтобы стать основой прогнозируемого и воспроизводимого процесса разработки программного обеспечения. В главе изучаются процессы анализа и проектирования (его цели, результаты, этапы и критерии успеха), а также приведен обзор процесса разработки программного обеспечения в целом. (С. 281)

Эти книги должен прочитать каждый, кто считает себя программистом!

Содержание статьи

Польза не во многих, но в хороших книгах.

Сенека

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

С. Макконнелл «Совершенный код»

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

Сложно найти гуру программирования, который не читал «Совершенный код» Стива Макконнелла. Действительно, одна книга, хоть и немаленькая (чуть менее 900 страниц), покрывает практически все аспекты разработки ПО: от рецептов написания высококачественного кода, механизмов тестирования и отладки до стратегий оптимизации кода и психологических факторов, влияющих на разработку. Представь себе: библиография книги занимает 20 страниц и содержит более 500 источников! Книга «Совершенный код» — одно из самых полезных и, как следствие, популярных изданий по разработке ПО. Она неоднократно доказала это, возглавляя рейтинги книг по программированию (goo.gl/3q0kx). Благодаря простой манере изложения, особому стилю и чувству юмора Стива книга читается очень легко.

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

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

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

Говоря о повышении производительности ПО, автор приводит убедительные доводы против преждевременной оптимизации, когда программист в процессе разработки интуитивно распознает «узкие» места в программе и незамедлительно принимает меры по оптимизации в ущерб качеству кода. Приводимая статистика показывает, что в 9 из 10 своих предположений программист ошибается.

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

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

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

М. Фаулер

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

При немалом объеме (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, а если такой и есть, то в этом случае его, скорее всего, нельзя назвать специалистом.

Р. Мартин «Чистый код»

Умение писать код — тяжелая работа. Она не ограничивается знанием паттернов и принципов. Над кодом необходимо попотеть.

Р. Мартин

«Чистый код» — одна из наиболее удачных книг, посвященных написанию высококачественного кода. Размер книги — 360 страниц, не считая приложений. При этом она настолько увлекательна и доступна, что за два-три вечера запросто прочитаешь ее от корки до корки. В дружеской манере «дядюшка» Боб рассказывает нам, какими же принципами нужно руководствоваться, чтобы писать хороший код. Книга изобилует примерами из реальных приложений, с которыми автор сталкивался в своей практике. Среди них такие известные продукты, как JUnit, FitNesse, JDepend, Ant и TomCat.

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

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

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

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

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

В начале книги Роберт приводит ответы мэтров программирования на вопрос, что же такое «чистый код». Грэди Буч отвечает: «Чистый код прост и прямолинеен. Чистый код читается, как хорошо написанная проза. Чистый код никогда не затемняет намерения проектировщика; он полон четких абстракций и простых линий передачи управления». Программисты, которые стремятся писать «чистый код», просто обязаны прочитать эту книгу.

Д. Кнут «Искусство программирования»

Лучший способ в чем-то разобраться до конца — это попробовать научить этому компьютер.

Д. Кнут

Программист, у которого нет книги «Искусство программирования», как священнослужитель, у которого нет Библии. Монографию Дональда Кнута часто называют «Библией программиста». Она содержит подробное описание и анализ важнейших фундаментальных алгоритмов, используемых в информатике, а также множество практических задач для усвоения и закрепления представленного материала. Журнал American Scientist включил работу Кнута в список двенадцати лучших физико-математических монографий XX века наряду с работой Эйнштейна по теории относительности. Успех книги определило качество изложения и глубина анализа общих вопросов программирования.

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

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

Второй том включает в себя третью и четвертую главы. Третья глава посвящена работе со случайными числами и последовательностями. В четвертой главе описываются вопросы арифметики, а именно различные виды систем счисления, арифметика чисел с плавающей точкой и рациональных чисел, полиномиальная арифметика и другое. Третий том посвящен алгоритмам сортировки и поиска (соответственно, главы 5 и 6). Из четвертого тома опубликованы материалы седьмой главы, описывающей вопросы комбинаторного поиска.

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

В своем отзыве о работе Кнута Билл Гейтс сказал: «Если вы считаете себя действительно хорошим программистом… прочитайте „Искусство программирования“ (Кнута)… Если вы сможете прочесть весь этот труд, то вам определенно следует отправить мне резюме». Цитата лишний раз подчеркивает, что, несмотря на сложность материала, настоящий профессионал обязательно должен осилить труд Дональда Эрвина Кнута «Искусство программирования».

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

Программисты-прагматики не уклоняются от ответственности. Вместо этого они испытывают радость, принимая вызовы и распространяя свой опыт.

Эндрю Хант

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

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

Одним из самых замечательных принципов программирования, которым мы обязаны авторам, является принцип DRY (Don’t Repeat Yourself), что в переводе на русский означает: «Не повторяй самого себя». Это значит, что каждый фрагмент знания должен иметь единственное и однозначное представление в системе. Следование данному принципу позволяет повысить надежность, доступность и простоту сопровождения программного продукта.

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

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

Заключение

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

Топ 10 самых популярных книг по программированию

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

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

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

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

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

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

Книга представляет собой подборку эссе, опубликованных автором на его сайте http://www.joelonsoftware.com. Талант и глубокое проникновение в суть предмета сделали Джоэла мастером своего дела, а остроумие и едкий юмор принесли сайту скандальную известность среди программистов. Затронуты практически все вообразимые аспекты создания ПО от лучших способов устройства рабочего места программиста до лучших способов написания программного кода. Издание адресовано широкому кругу читателей — и тем, кто собирается руководить программистами, и самим программистам — как приверженцам Microsoft, так и сторонникам открытого кода.

Мастер Йода рекомендует:  Релиз PHP 5.2.2 и 4.4.7, обзор 16 новых проблем безопасности

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

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

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

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

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

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

Топ 10 самых популярных книг по программированию

Чтобы запомнить большое количество цифр, он составил таблицу под названием «человек-действие-предмет». Каждой цифре Денис присвоил буквенный код, а каждому коду – образ. В зависимости от ячейки это либо человек, либо действие, либо предмет.

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

Объясняем, как вернуться в ритм или привыкнуть к ранним подъёмам с нуля.

Кто может лучше рассказать о поступлении в вуз, чем вчерашние одиннадцатиклассники? Мы решили узнать у выпускников «ПроеКТОрии», как они определились с профессией и какие университеты выбрали. Ловите лайфхаки от звездочек «ПроеКТОрии»: Тимура Якшимбетова, Татьяны Тихомировой и Арсения Семенова!

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

Давно не размышляли перед сном, как бы мог выглядеть новый цвет или как понять, что мы существуем на самом деле, а не являемся чьей-то фантазией? Сейчас мы это исправим! Держите 5 TED-лекций, которые точно перевернут ваше представление о мире.

Если вы хотите стать нашим партнером напишите нам

Лучшие книги по программированию: список литературы и краткий обзор книг

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

«Совершенный код»

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

Трудно найти гуру программирования, который бы обошел стороной это творение. Предупредим сразу, что книга — вовсе не справочник, а объемное издание в 900 страниц. Макконнелл описал здесь все, с чем может столкнуться начинающий программист:

  • «Рецепты» написания кодов высокого качества.
  • Механизмы отладки и тестирования.
  • Стратегии оптимизации кода.
  • Человеческие факторы, влияющие на разработку, и проч.

Автор провел впечатляющую исследовательскую работу: библиография занимает 20 страниц материала, включая в себя порядка 500 источников! Поэтому не удивительно, что книга была признана читателями суперполезной, не раз возглавляла рейтинги изданий по программированию. Немаловажно, что ее отличает простая манера изложения, своеобразный стиль автора и его чувство юмора.

Содержание «Совершенного кода»

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

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

Макконнелл приводит в «Совершенном коде» несколько методов разработки: ревизии кода, парное программирование, неформальные и формальные инспекции, разработки на базе тестирования — темы широко раскрываются в материале.

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

«Рефакторинг»

Еще одна лучшая книга по программированию авторства Мартина Фаулера. Начнем знакомство со слов самого автора: «Каждый может написать код, понятный компьютеру. И лишь хорошие программисты пишут код, понятный человеку».

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

Важные разделы «Рефакторинга»

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

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

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

«Паттерны проектирования»

Ищете отличные книги по программированию для начинающих? Тогда обратите внимание на это издание союза авторов:

Если вы попросите любого из профессионалов посоветовать вам издание по объектно-ориентированному программированию, то в 9 из 10 случаев вам посоветуют именно эту книгу! Издание давно перешло через статус «бестселлер». Смотрите сами, ведь книга была опубликована более чем на 30 языках и распространена 500 тысячами экземпляров.

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

Безусловно, это одна из лучших книг для изучения программирования. Но отметим, что перед ее прочтением у читателя уже должны быть накоплены знания по объектно-ориентированному проектированию. Издание недостаточно просто прочесть. Книгу нужно буквально пропустить через себя.

Содержание «Паттернов проектирования»

Издание состоит из 350 страниц. Книга поделена на две части:

  • Общее понятие паттернов в проектировании, описание их практического применения.
  • Каталог с паттернами с описанием структуры, назначения, особенностей реализации.

Все паттерны авторы разделяют на три основные категории:

  • Порождающие. Решают задачи инстанцирования классов.
  • Структурные. Решение вопросов компоновки системы на базе классов и объектов.
  • Паттерны поведения. Связаны с распределением обязанностей между классами, алгоритмами.

Единственный минус книги: примеры написаны на малоизвестном сегодня языке Smalltalk.

«Чистый код»

Творение Робина Мартина нельзя не причислить к лучшим книгам про программирование. Сам автор предупреждает читателя: «Написание кода — тяжелая задача. Тут точно придется попотеть».

360 страниц издания (не считая приложений) посвящены написанию высококачественного кода. Главное достоинство: издание составлено доступным и понятным языком. Поэтому его реально полностью осилить всего лишь за несколько вечеров. Подкупает и дружеская манера повествования, обилие примеров из реальной практики автора.

Три части «Чистого кода»

Свое издание Р. Мартин разделил на три части:

  • Теоретический раздел. Это именно теория написания «чистого» кода: приемы, паттерны и принципы, которые должен знать каждый разработчик.
  • Практический раздел. Автор рассказывает, как следует «чистить» коды существующих на сегодня приложений.
  • Итог. Здесь располагается перечень «запахов кода», а также инструкции по их устранению.

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

Робин Мартин вводит основное правило: с каким бы участком кода вы не работали, ваша задача — сделать его чище, качественнее, чем он был. Только в таком случае код не будет «загнивать».

Безусловно, это одна из лучших книг по программированию для начинающих. Читатели отмечают только один ее минус: Java-ориентированность.

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

Продолжаем знакомить вас с лучшими книгами по основам программирования. Создатель данной, Дональд Кнут, метко подмечает: «Лучший способ в чем-то разобраться — попробовать научить этому компьютер». Почитатели книги говорят, что программист, не имеющий «Искусство программирования» в своей библиотеке, похож на священнослужителя без Библии.

Чем же хороша монография Д. Кнута? Автор подробно описывает и анализирует фундаментальные алгоритмы информатики, приводит практические задачи для усвоения материала. Работа была начата еще в 1962 году. В полном варианте издание будет включать в себя 7 томов. Пока что издано три — это уже 3000 страниц. Книга не является готовым «рецептом» к решению задач. Читать ее нелегко — примеры рассматриваются на низкоуровневом языке программирования, созданного автором для гипотетического компьютера.

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

Рассмотрим части научно-практического произведения:

  • Первый том. Посвящен основным алгоритмам и в целом подготавливает читателя к работе над книгой. Рассматриваются математические теоремы, термины, язык программирования, созданный автором, — все то, на чем будет базироваться повествование. Также здесь упомянуты информационные системы и алгоритмы взаимодействия с ними.
  • Второй том. Рассматриваются упражнения со случайными числами и их последовательностями. Описываются важные вопросы арифметики: системы счисления, арифметика чисел, имеющих плавающую точку, полиноминальная арифметика и проч.
  • Третий том. Алгоритмы поиска и сортировки.
  • Четвертый том. Написан не полностью, готовится к выпуску. Здесь будут разбираться вопросы комбинаторного поиска.

«Искусство программирования» было высоко оценено Биллом Гейтсом. В своем отзыве о издании он сказал, что каждый, кто смог осилить творение Кнута, определенно может отправить резюме в его корпорацию.

«Программист-прогматик»

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

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

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

Главы «Программиста-прагматика»

Давайте кратко рассмотрим содержание книги:

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

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

Библиотека программиста

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

  • «Эффективная работа с унаследованным кодом». Создатель — М. К. Физерс.
  • «JavaScript: сильные стороны». Создатель — Д. Крокфорд.
  • «Шаблоны корпоративных приложений». Создатель — М. Фаулер.
  • «Язык программирования С». Создатели — Б. У. Керниган, Д. М. Ритчи.
  • «Эффективное использование С+++». Создатель — С. Майерс.
  • «Экспериментальное программирование». Создатель — К. Бек.
  • «Алгоритмы. Построение и анализ». Создатели — Т. Кормен и др.
  • «Регулярные выражения». Создатель — Д. Фридл.
  • «Современное проектирование на С++». Создатель — А. Александреску.

Издания для юных программистов

Представим также лучшие книги по программированию для детей:

  • «Scratch для детей». Автор — М. Марджи.
  • «JavaScript для детей». Автор — Н. Морган.
  • «Python для детей». Автор — Д. Бриггс.

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

Что читать айтишнику. Книги по программированию

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

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

Чистый код. Создание, анализ и рефакторинг, Роберт К. Мартин

Кажется, это тот случай, когда даже не совсем правильный перевод названия книги (в оригинале «Clean Code: A Handbook of Agile Software Craftsmanship»), вполне чётко отражает её содержимое. Роберт Мартин в своём творении, опираясь на личный опыт и, что даже важнее, конкретные примеры из своей практики, рассказывает о том, как нужно кодить. Принципиальное отличие от книги Макконелла заключается в том, что здесь очень мало статистических обоснований правильности тех или иных действий, только код (занимающий почти треть книги) и рекомендации автора.

Программист-прагматик. Путь от подмастерья к мастеру, Эндрю Хант, Дэвид Томас

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

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

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

Структура и Интерпретация Компьютерных Программ, Харольд Абельсон, Джеральд Джей Сассман

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

Алгоритмы. Построение и анализ, Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн

Ещё одна увесистая книга по алгоритмам, впервые изданная в 1990 году в Массачусетском технологическом институте с авторством местных преподавателей. Несмотря на то, что написана она простым и понятным языком, из-за объёма и подачи материала (каждая глава имеет законченный вид) использовать лучше в качестве справочника, периодически обращаясь к нужной информации.

Release it! Проектирование и дизайн ПО для тех, кому не все равно, Майкл Нейгард

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

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

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

Мифический человеко-месяц, Хилл Чапел, Фредерик Брукс

Эта книга в США входит в список must-read любого разработчика ПО. Написана она была в далёком 1975 году, но описанные этапы, проблемы и советы по разработке ПО актуальны и по сей день. Вряд ли она будет полезна для человека, который уже несколько лет варится в профессии и на личном опыте знает об этом процессе, а вот студентам и новичкам в IT – прочитать действительно следует.

Не заставляйте меня думать!, Стив Круг

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

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

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

Карьера программиста. Как устроиться на работу в Google, Microsoft или другую ведущую IT-компанию, Г. Лакман Макдауэлл

Не обращайте внимание на российского название, в оригинале это «Cracking the Coding Interview: 150 Programming Interview Questions and Solution», то есть просто 150 наиболее часто задаваемых вопросов на собеседованиях в крупных IT-компаниях. Ответы, разумеется, прилагаются. Помогает не только потренировать собственный мозг, но и получить представление об образе мышления в Amazon, Apple, Facebook, Google и Microsoft.

А какую книгу добавили бы в этот список вы?

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

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

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

Чистый код. Создание, анализ и рефакторинг, Роберт К. Мартин

Кажется, это тот случай, когда даже не совсем правильный перевод названия книги (в оригинале «Clean Code: A Handbook of Agile Software Craftsmanship»), вполне чётко отражает её содержимое. Роберт Мартин в своём творении, опираясь на личный опыт и, что даже важнее, конкретные примеры из своей практики, рассказывает о том, как нужно кодить. Принципиальное отличие от книги Макконелла заключается в том, что здесь очень мало статистических обоснований правильности тех или иных действий, только код (занимающий почти треть книги) и рекомендации автора.

Программист-прагматик. Путь от подмастерья к мастеру, Эндрю Хант, Дэвид Томас

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

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

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

Структура и Интерпретация Компьютерных Программ, Харольд Абельсон, Джеральд Джей Сассман

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

Алгоритмы. Построение и анализ, Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн

Ещё одна увесистая книга по алгоритмам, впервые изданная в 1990 году в Массачусетском технологическом институте с авторством местных преподавателей. Несмотря на то, что написана она простым и понятным языком, из-за объёма и подачи материала (каждая глава имеет законченный вид) использовать лучше в качестве справочника, периодически обращаясь к нужной информации.

Release it! Проектирование и дизайн ПО для тех, кому не все равно, Майкл Нейгард

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

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

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

Мифический человеко-месяц, Хилл Чапел, Фредерик Брукс

Эта книга в США входит в список must-read любого разработчика ПО. Написана она была в далёком 1975 году, но описанные этапы, проблемы и советы по разработке ПО актуальны и по сей день. Вряд ли она будет полезна для человека, который уже несколько лет варится в профессии и на личном опыте знает об этом процессе, а вот студентам и новичкам в IT – прочитать действительно следует.

Не заставляйте меня думать!, Стив Круг

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

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

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

Карьера программиста. Как устроиться на работу в Google, Microsoft или другую ведущую IT-компанию, Г. Лакман Макдауэлл

Не обращайте внимание на российского название, в оригинале это «Cracking the Coding Interview: 150 Programming Interview Questions and Solution», то есть просто 150 наиболее часто задаваемых вопросов на собеседованиях в крупных IT-компаниях. Ответы, разумеется, прилагаются. Помогает не только потренировать собственный мозг, но и получить представление об образе мышления в Amazon, Apple, Facebook, Google и Microsoft.

А какую книгу добавили бы в этот список вы?

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