Советуют разработчики: подборка популярных книг о программировании, языках, алгоритмах

    В сегодняшнем материале мы собрали одни из наиболее популярных книг, отобранных самими разработчиками — резидентами Reddit, Quora, Stack Exchange, Stack Overflow и Hacker News.

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


    / фото Marketa CC



    Об устройстве компьютера и разработке в целом




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




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

    Крэйг Роу (Craig Rowe), руководитель группы разработчиков компании Dootrix, признается, что прочитал книгу только потому, что Джоэл Спольски (Joel Spolsky), автор блога Joel on Software и один из основателей Stack Overflow, назвал её маст-ридом. Сначала Крэйг сомневался, стоит ли читать книгу, ведь она вышла в 2000 году. Но в итоге прочитал и остался доволен: книга помогла ему заполнить пробелы по темам, упущенным во время обучения, а повествование в формате последовательности исторических событий позволило сделать чтение увлекательным.




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




    Ещё одна книга об устройстве компьютера для читателей любого уровня. В ней доступным языком описаны общие принципы работы компьютера. Один из авторов блога WirelessMoves утверждает, что всего 30 минут с этой книгой позволили ему понять, как работает ЦПУ — блогер признает, что несмотря на опыт и теоретические знания, для него этот раздел был своего рода «белым пятном». Специфика книги поможет сделать то же самое даже тем, кто ничего не знает об электронике.

    В книге есть множество практических задач, решение которых приводится далеко не всегда — некоторые видят в этом еще одно ее достоинство. В качестве дополнения к этой книге пользователи Reddit рекомендуют обратить внимание на издание The Elements of Computing Systems.




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

    Популярность эта книга приобрела из-за отзыва Питера Норвига (Peter Norvig), директора по исследованиям в Google. Питер проводит аналогию с автомобилями: SICP подойдет тем, кто хочет понять, как работает автомобиль, из чего состоит, и как построить безопасную и надежную машину, но вряд ли порадует тех, кто просто хочет научиться водить.

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



    Об алгоритмах





    Программист Филип Бьюак (Philip Buuck) утверждает, что эта книга стала самой захватывающей книгой о структурах данных из всех, что он когда-либо читал. Стивен Скиена (Steven Skiena), автор книги и профессор информатики Университета штата Нью-Йорк в Стоуни-Брук, на понятном языке объясняет читателю сложные вещи, а в конце каждой главы приводит массу упражнений.

    Однако мнения резидентов Stack Overflow об этой книге разделились: кто-то уверенно рекомендует её начинающим, а кто-то советует только полистать первые 200 страниц. Кстати, Стивен Скиена в 1988 году вместе со своей командой придумал и описал концепцию, похожую на iPad, на конкурсе по разработке компьютера будущего.




    Фундаментальная монография о принципах работы алгоритмов и о структурах данных от выдающегося учёного в области компьютерных наук, профессора, математика и идеолога программирования Дональда Кнута (Donald Knuth). Эту книгу читать не просто, однако по мнению резидентов Hacker News и Stack Exchange, она стоит потраченных усилий. Билл Гейтс был готов рассмотреть резюме каждого, кто осилит этот труд. У самого Гейтса на это ушло «несколько месяцев в условиях строжайшей дисциплины».



    О тонкостях Linux





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

    По словам Фила Булла (Phil Bull), исследователя в области астрофизики из NASA, проблема многих книг по Linux состоит в том, что они пытаются объять необъятное. Авторы часто мечутся между общим, но поверхностным материалом и описанием специфики конкретного дистрибутива.

    Автор этой книги сумел найти баланс между данными о системе в целом и более детальной информацией. По мнению разработчика компании AppDynamics Фрэнка Клирли (Frank Cleary), книга помогла ему лучше понять, как взаимодействуют разные компоненты Linux, и применять полученные знания в работе.




    По словам Дэйва (Dave C), системного администратора, разработчика и автора YouTube-канала tutoriaLinux, если вы хотите прочитать только одну книгу по системному администрированию, стоит выбрать эту. Книга станет хорошим справочником и позволит быстро найти нужную информацию благодаря удобному содержанию.

    Резиденты Reddit отмечают, что она подскажет нужные инструменты и научит управлять популярными серверными дистрибутивами. Автор книги, преподаватель и инженер Эви Немет (Evi Nemeth) известна глубокими познаниями в области системного администрирования и сетевых технологий. Помимо работы в ИТ и преподавания Эви увлекалась яхтенным туризмом и ходила на своей яхте Wonderland в разные части мира. В 2013 году она вместе с командой отплыла на яхте Niña в направлении Австралии и пропала без вести где-то в пути.




    По мнению 95% людей, которые оставили отзыв на Amazon, эта книга — лучший справочник по Linux. В ней рассказывается об операционных системах в целом и о Linux в частности, приводится историческая справка, примеры кода на С и 200 упражнений.

    Автор книги Майкл Керриск (Michael Kerrisk) — программист и создатель проекта Linux man-pages получил широкое признание за этот объемный (1500+ страниц) труд среди Linux-разработчиков. Федерико Лючифреди (Federico Lucifredi), менеджер дистрибутивов SUSE Linux Enterprise и openSUSE, называет эту книгу энциклопедией программирования под Linux.

    А Джейк Эдж (Jake Edge), Linux-разработчик и редактор LWN.net, говорит, что, несмотря на внушительный объем, книга легко читается и простыми словами объясняет большинство ключевых моментов.


    / фото Wall Boat PD



    О языках программирования





    Знакомиться с C++ логично, следуя советам его создателя: Бьёрна Страуструпа. Автор подробно изложил в своей книге фундаментальные особенности и эволюцию языка. Первое издание книги датируется 1986 годом. Популярность книги с тех пор только росла: ее издавали 4 раза (последний в 2013) и перевели на 20 языков.

    Питер Ли (Peter Lee), глава Microsoft Research, особенно рекомендует обратить внимание на книгу тем, кто хочет освежить свои знания о С++. Кроме того, Ли отмечает хорошую подачу материала, которая позволяет быстро и эффективно найти и изучить все, что нужно. Стоит учесть физические размеры книги (если вы предпочитаете бумажную версию): томик размером в 1300 страниц читать в транспорте или между делом будет не очень удобно.

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




    На ста пятидесяти страницах этой книги авторы сумели уместить множество достойных советов. Джон Курлак (John Kurlak) из Facebook, жалеет, что не прочел ее, когда впервые столкнулся с JavaScript, потому что объем и подача материала хорошо подходят для начинающих. По словам Джона, книга будет полезна, если вы хотите изучить шаблоны проектирования на этапе знакомства с языком. Книгу традиционно включают в списки самых популярных: 178 упоминаний на Stack Overflow и 639 на Reddit.




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




    Питер Купер (Peter Cooper), разработчик и автор книги Beginning Ruby, прочитал эту книгу целиком всего за 24 часа. По его словам, книга затягивает манерой письма: кажется, что её написал один из ваших друзей.

    В отличие от своей предыдущей книги Design Patterns in Ruby в этой автор Расс Олсен (Russ Olsen) рассматривает не конкретные шаблоны проектирования на Ruby, а стиль и сущность Ruby в целом. Разработчик и автор блога Code inComplete Джейк Гордон (Jake Gordon) рекомендует эту книгу продвинутым Ruby-программистам, которые хотят убедиться, что они на верном пути.




    Этот классический учебник также иногда называют K&R по первым буквам фамилий авторов. Первый из них — Брайан Керниган (Brian Kernighan), ученый, один из разработчиков Unix, соавтор языков AWK и AMPL. Второй — Деннис Ритчи (Dennis Ritchie), физик, математик, создатель С и один из ведущих разработчиков Unix.

    Резиденты Reddit отмечают, что книга может стать вашим единственным туториалом по С, потому что дает исчерпывающее представление о структуре и особенностях языка. А программист Майк Тейлор (Mike Taylor) сравнивает эту книгу с группой Beatles: она популярна и популярность её абсолютно заслуженна.



    О тонкостях работы и самосовершенствовании





    Пользователи всех тематических площадок рекомендуют эту книгу к прочтению. Например, в этом треде на Quora её советует почти каждый пользователь. Автор книги — Робер Сесил Мартин (Robert Cecil Martin), известный как Uncle Bob, разработчик ПО, писатель и соавтор Agile Manifesto. Эта книга упоминалась на Stack Overflow 256 раз, помогла многим людям переосмыслить свой подход к работе.

    Дрю Хувер (Drew Hoover), разработчик компании Atomic Object, отмечает, что несмотря на возраст, книга содержит мысли и идеи, которые не теряют своей значимости. Некоторые, однако, ругают книгу за излишнюю категоричность — поэтому Clean Code рекомендуют опытным программистам.




    Эту книгу можно встретить почти в каждой подборке материалов для разработчика. И не просто так. Её автор Стив Макконнелл (Steve McConnell), генеральный директор компании Construx Software, дважды получал награду Jolt Excellence за выдающиеся книги о разработке ПО.

    Один из основателей Stack Overflow Джефф Этвуд (Jeff Atwood) отмечает, что чтение этой книги означает, что вам нравится ваша работа, вы серьезно к ней относитесь и хотите совершенствоваться. А блогер и разработчик Джейсон Роэлл (Jason Roell) считает, что независимо от опыта, среды разработки или размера проекта, эта книга будет стимулировать мышление и поможет усовершенствовать код.

    Осман Ахмед Осман (Osman Ahmed Osman), ведущий инженер Quora, утверждает, что в первый день работы в Google ему выдали именно эту книгу как гайд по написанию кода, и она здорово ему помогла. Среди минусов можно отметить объём — 900 страниц быстро прочитать не получится — и постепенное устаревание некоторых принципов, упомянутых в книге.




    Самая популярная книга на Stack Overflow расскажет, что делать с legacy-кодом — устаревшим кодом, который не обновляется, но используется. Илай Бендерски (Eli Bendersky) пишет, что «книга содержит приемы, такие же ужасные, как и тот код, на доработку которого они направлены». Как отмечает Илай, 400 страниц книги содержат мало «воды», и читать ее «линейно», от начала до конца, сложно и не всегда полезно. Удобнее использовать книгу как сборник рекомендаций по работе с теми или иными проблемами legacy-кода.




    Эта книга описывает решение задач объектно-ориентированного программирования и предлагает 23 шаблона для создания гибких и изящных решений самостоятельно. Из-за длинного названия её иногда называют «книга банды четырёх» (book by the Gang of Four).

    Резиденты Stack Exchange называют ее канонической в плане изучения шаблонов проектирования. А начать знакомство с шаблонами пользователи Stack Exchange рекомендуют с книги Head First Design Patterns: A Brain-Friendly Guide. Несмотря на неоднозначную обложку, многие отмечают, что ее легко читать, что особенно важно при знакомстве с темой.




    Этой книге уже 40 лет, но её до сих пор читают, обсуждают и включают в списки любимых книг программистов. Секрет популярности прост: технологии меняются, а люди — нет. Фредерик Брукс (Frederick Brooks), автор книги и ученый в области теории вычислительных систем известен тем, что руководил разработкой OS/360 в IBM и изложил в своей книге «закон Брукса»: если проект не укладывается в сроки, то добавление рабочей силы задержит его еще больше. Книга будет полезна всем, кто управляет проектами и задумывается о продуктивной работе.




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

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



    А какие книги, полезные для программистов, порекомендовали бы вы?

    Расскажите об этом в комментариях!




    P.S. Вот ещё пара подборок из нашего блога на Хабре:


    P.P.S. И несколько материалов по теме из нашего корпоративного блога:

    ИТ-ГРАД 275,92
    vmware iaas provider
    Поделиться публикацией
    Комментарии 12
    • +1
      Marc Gregoire. Professional c++ 3ed
      По моему мнению лучшая книга по с++ (собственно единственная, которую я прочитал от корки до корки). Но не для новичков, скорее для тех, у кого уже есть опыт и хочет заполнить пробелы. 3 издание включает в себя с++14.
      • +3

        По алгоритмам несколько не согласен предложениями. Да, конечно Скиена написал хорошую книжку, а фундаментальность творения Кнута никто не ставит под сомнение. (Хотя давайте будем честными, кто пользовался «Искусством программирования» как учебником?) На мой взгляд лучшие книжки по алгоритмам — это «Алгоритмы. Построение и анализ» Кормена и др. и «Алгоритмы на Java» Седжвика. Первая хороша сочетанием основательности с простотой изложения, а вторая — упражнениями. А для начинающих отличный вариант — «Алгоритмы» Дасгупты.


        Впрочем, кому как.

        • +3

          Удивился, когда не увидил ни одной книги Таненбаума в списке...


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


          K&R конечно без вариантов нужно читать! Особенно для тех, кто пишет на всяких PHP, Python, Ruby и JavaScript, чтобы хоть не много понимаю что такое компьютер.


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


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


          В общем, читайте Таненбаума )))

          • 0
            Я подозреваю, что «JavaScript. Сильные стороны» изрядно устарела. Я читал ее вскоре, после ее выхода, и тогда это было здорово, но с тех пор сам JavaScript изрядно изменился.
            • –1

              А у него даже есть какие-то сильные стороны? :-D :-D :-D


              Ок, мне кажется что есть одна реально сильная сторона как для штуки, которая работает по сети и не понятно что придет. Что можно взять из чего угодно создать объект, а потом уже разбираться есть ли там нужные поля или нет. Так даже в PHP нельзя, не говоря уже про священные Java и C#.

          • 0
            Подкиньте книжек по разработке и архитектуре PCIe-устройств.
            Язык не важен, если книга хорошая, но желательно русский/English/汉语
            • 0
              Окромя двух книжек, которые ищутся в гугле, особенно книжек про PCI-e нету. А реализацию самих устройств можно найти среди Open Hardware
            • 0
              Без привязки к языку и того что было в шапке:
              1) «Применение UML 2.0 и шаблонов проектирования. Введение в объектно-ориентированный анализ, проектирование и итеративную разработку» Крэг Ларман.
              2) «Принципы, паттерны и методики гибкой разработки» Роберт Мартин.
              3) «Алгоритмы. Теория и практическое применение» Род Стивенс.

              Бонус — «Design Patterns via C#» Александр Шевчук, Дмитрий Охрименко, Андрей Касьянов (бесплатно).
              • 0
                Гради Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на C++ — была моей первой кногой по ООП в начале 90-х, до сих пор считаю ее лучшей для понимания концепций ООП.
                Кто-то в отзывах поставил три звезды и «Too big and too academic». С комментом согласен — после ее прочтения добавить уже нечего :) и оно того стоит!
                • 0
                  Inside Machine — отличная книжка по архитектуре процессоров. Устарела в плане описания процессоров но все темы затрагивает прямо на пальцах разьясняет все. Очень рекомендую всем кто хочет опуститься до железа

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

                    Самое читаемое