Какую самую влиятельную книгу должен прочитать каждый программист? [закрыто]

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

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

Для поиска: воспользуйтесь окном поиска в правом верхнем углу. Для поиска ответов на текущий вопрос используйте inquestion:this. Например:

inquestion:this "Code Complete"
4.08.2008 23:50:22
Просмотр этой ветки заставляет меня понять, насколько уродливы книги, связанные с программированием. Очень хорошая тема, хотя!
Carl Bergquist 5.08.2009 12:09:17
Интересно, что хотя название гласит: «Какую единственную наиболее влиятельную книгу должен прочитать каждый программист?», Есть довольно много книг, которые посвящены языковым темам. По определению и по определенному вопросу книги, предлагаемые здесь, должны затрагивать темы, не зависящие от языка, что доказывает, что большинству программистов еще предстоит научиться читать.
Rook 2.10.2009 19:54:13
Если бы я мог вернуться в прошлое и попросить себя что-нибудь прочитать, то это была бы газета или спортивная книга фактов, которую я взял с собой. Все остальное - пустая трата хорошего путешествия во времени. :-)
jmucchiello 8.11.2009 09:38:35
Знаете, если бы я не беспокоился о том, что меня могут опровергнуть, я бы покорно пошел и предложил Сумерки. "ТАКЖЕ о людях, которые бледны и избегают солнца!"
Jacob Bellamy 12.02.2010 00:20:50
Может кто-нибудь очистить ответы, удалив повторяющиеся записи в книгах? Большинство из них уже проголосовали.
rao 16.03.2010 05:44:26
30 ОТВЕТОВ
  • Code Complete (2-е издание), Стив Макконнелл
  • Прагматичный программист
  • Структура и интерпретация компьютерных программ
  • Язык программирования Си Кернигана и Ричи
  • Введение в алгоритмы от Cormen, Leiserson, Rivest & Stein
  • Шаблоны дизайна от банды четырех
  • Рефакторинг: улучшение дизайна существующего кода
  • Мифический Человек Месяц
  • Искусство компьютерного программирования Дональда Кнута
  • Компиляторы: принципы, методы и инструменты Альфреда В. Ахо, Рави Сетхи и Джеффри Д. Уллмана
  • Гедель, Эшер, Бах , Дуглас Хофштадтер
  • Чистый код: руководство по гибкому программному обеспечению Роберта Мартина
  • Эффективный C ++
  • Более эффективный C ++
  • КОДЕКС Чарльза Петцольда
  • Программирование Жемчуга Джоном Бентли
  • Эффективная работа с устаревшим кодом от Michael C. Feathers
  • Peopleware от Демарко и Листера
  • Кодеры за работой Питер Сейбел
  • Конечно, вы шутите, мистер Фейнман!
  • Эффективное Java, 2-е издание
  • Шаблоны корпоративной архитектуры приложений от Мартина Фаулера
  • Маленький интриган
  • Опытный интриган
  • Почему (Пикантный) Справочник по Руби
  • Заключенные управляют убежищем: почему высокотехнологичные продукты сводят нас с ума и как восстановить здравомыслие
  • Искусство Unix-программирования
  • Разработка через тестирование: на примере Кента Бека
  • Практики проворного разработчика
  • Не заставляй меня думать
  • Гибкая разработка программного обеспечения, принципы, шаблоны и практики Роберта К. Мартина
  • Проекты, управляемые доменом , Эрик Эванс
  • Дизайн повседневных вещей Дональда Нормана
  • Современный C ++ дизайн Андрея Александреску
  • Лучший софт для написания I от Joel Spolsky
  • Практика программирования Кернигана и Пайка
  • Прагматичное мышление и обучение: рефакторинг вашей посуды от Энди Ханта
  • Оценка программного обеспечения: демистификация черного искусства Стивом Макконнелом
  • Страстный программист (моя работа отправилась в Индию) Чед Фаулер
  • Хакеры: герои компьютерной революции
  • Алгоритмы + структуры данных = программы
  • Написание твердого кода
  • JavaScript - хорошие части
  • Реализуясь 37 сигналами
  • Основы программирования Карла Сегуина
  • Компьютерная графика: принципы и практика в Си (2-е издание)
  • Мышление на Яве , Брюс Экель
  • Элементы вычислительных систем
  • Рефакторинг на Узоры Джошуа Кериевского
  • Современные операционные системы Эндрю С. Таненбаум
  • Аннотированная Тьюринг
  • Вещи, которые делают нас умными Дональд Норман
  • Вечный путь строительства Кристофер Александр
  • Последний срок: роман об управлении проектами Тома Демарко
  • Язык программирования C ++ (3-е издание) от Страуструпа
  • Шаблоны корпоративной архитектуры приложений
  • Компьютерные системы - перспектива программиста
  • Гибкие принципы, шаблоны и практики в C # Роберта Мартина
  • Растущее объектно-ориентированное программное обеспечение, ориентированное на тесты
  • Руководство по проектированию рамок от Брэда Абрамса
  • Мышление объекта доктором Дэвидом Вестом
  • Расширенное программирование в среде UNIX У. Ричарда Стивенса
  • Хакеры и художники: большие идеи компьютерного века
  • Душа новой машины Трейси Киддер
  • CLR via C # от Джеффри Рихтера
  • Вечный путь строительства Кристофер Александр
  • Дизайн шаблонов в C # от Стива Мецкера
  • Алиса в стране чудес Льюис Кэрол
  • Дзен и искусство ухода за мотоциклом Роберт М. Пирсиг
  • About Face - Основы дизайна взаимодействия
  • Сюда приходит каждый: сила организации без организаций Клэй Ширки
  • Дао программирования
  • Вычислительная красота природы
  • Написание твердого кода от Стива Магуайра
  • Руководство Филиппа и Алекса по веб-публикации
  • Объектно-ориентированный анализ и проектирование с использованием приложений от Grady Booch
  • Эффективная Java от Джошуа Блоха
  • Вычислимость Н. Дж. Катленда
  • Вдохновители программирования
  • Тао Те Чинг
  • Продуктивный Программист
  • Искусство обмана Кевина Митника
  • Карьерный программист: партизанская тактика для несовершенного мира Кристофер Дункан
  • Парадигмы программирования искусственного интеллекта: тематические исследования в Common Lisp
  • Мастера Судьбы
  • Прагматическое модульное тестирование в C # с NUnit Энди Хантом и Дейвом Томасом с Мэттом Харджеттом
  • Как решить это Джордж Поля
  • Алхимик Пауло Коэльо
  • Smalltalk-80: язык и его реализация
  • Написание безопасного кода (2-е издание) Майкл Ховард
  • Введение в функциональное программирование от Филиппа Вадлера и Ричарда Берда
  • Нет ошибок! Дэвид Тилен
  • Переработка Джейсона Фрейда и DHH
  • JUnit в действии
1746
21.02.2012 21:02:44
Code Complete - хорошая книга, если вы учитесь в колледже. Если у вас есть опыт программирования не менее 1 года, это полный труд.
Bogdan Gavril MSFT 27.11.2008 12:11:06
В Code Complete содержится много полезной информации, но он скрыт в гиперболе, вафле и повторениях, что делает его трудным для чтения.
Jeff Yates 2.12.2008 20:49:45
Я прочитал Code Complete 3 года в моей карьере. Я не учился на курсах по разработке программного обеспечения и на курсах по языку программирования, но прошел некоторые вводные курсы по CS. На сегодняшний день это лучшая книга, которую я когда-либо читал, чтобы стать лучшим программистом. Это не сделает вас специалистом, но сделает вас гораздо больше, чем тинкер.
Shea 25.04.2009 16:11:22
Проблема этой книги в том, что для новичка это не имеет смысла, так как понятия немного продвинуты. К тому времени, когда вы будете готовы прочитать его, вы уже должны знать и практиковать 99% концепций в книге.
esac 30.04.2009 01:46:37
Это дело здравого смысла, как в этой книге. Время от времени вам нужно напоминать о них, чтобы вернуться в очередь.
JohnFx 17.06.2009 15:56:21

К & Р

@Juan: я знаю Хуана, я знаю - но есть некоторые вещи, которые могут быть изучены, только фактически приступая к выполнению задачи. Говорить в абстрактных идеалах весь день просто делает вас академиком. Именно в применении абстрактного мы действительно уловили причину их существования. :П

@Keith: Большое упоминание Алана Купера «Заключенные бегут в убежище» - наверняка откровение, любой разработчик, который работал со мной с тех пор, как я прочитал эту книгу, слышал, как я упоминал идеи, которые она поддерживает. +1

9
21.08.2008 20:06:37

Дискретная математика для компьютерных ученых http://ecx.images-amazon.com/images/I/51HCJ5R42KL._SL500_BO2,204,203,200_AA219_PIsitb-sticker-dp-arrow,TopRight,-24,-23_SH20_OU02_.jpg

Дискретная математика для компьютерных ученых по Дж. К. Труссу.

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

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

9
14.10.2008 12:04:58

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

Красота книги - год авторского права.

Вероятно, самый глубокий «закон» на вынос представлен в книге:

Основная теорема о режиме отказа (FFT): сложные системы обычно работают в режиме отказа.

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

9
19.11.2008 06:04:22
Также проверьте Библию Систем того же автора (Джон Галл). Это третье издание Systemantics, он просто сменил название. Это книга, которую ты украл из школы. Это книга, которую взрослые читают под одеялом с фонариком.
Chris Wenham 27.11.2010 17:16:51

Один из моих любимых - «Восторг Хакера» , потому что читать было так же весело, как и образовательно.

Надеюсь, второе издание скоро выйдет!

9
7.06.2009 17:38:52
+1 за «Восторг хакера» Генри С. Уоррена-младшего - речь идет не о хакерстве в общепринятом смысле, а о хакерстве, как при низкоуровневом переключении битов и других «хакерских атаках» в истинном и оригинальном смысле этого слова. Не для всех, но если вы участвуете в оптимизации кода, компиляторах и т. Д., Или просто являетесь общим ботаником, который интересуется вещами низкого уровня, то это отличная книга.
Paul R 7.02.2010 22:39:15
На обложке книги Brillant изображена большая римско-католическая базилика La Sagrada Família, строящаяся в Барселоне, Каталония, Испания. Будет завершено в 2026 году (осталось только 17 лет). Как и большинство программ, даже с лучшими книгами, они так и не закончили ...
PeterMmm 5.08.2009 12:11:20

Объясненное экстремальное программирование: Embrace Change от Kent Beck. Хотя я не сторонник жесткого подхода XP-or-the -way к разработке программного обеспечения, я бы хотел познакомиться с принципами, изложенными в этой книге, гораздо раньше в моей карьере. Модульное тестирование, рефакторинг, простота, постоянная интеграция, затраты / время / качество / область применения - все это изменило мой взгляд на разработку. До Agile речь шла об отладчике и страхе перед запросами на изменение. После Agile эти демоны выглядели не такими большими.

9
18.09.2009 03:34:36

Типы и языки программирования Бенджамина С. Пирса для глубокого понимания основ языков программирования.

9
26.05.2010 12:01:43

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

альтернативный текст

9
18.11.2010 19:27:10

Практика программирования. Брайан У. Керниган, Роб Пайк.

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

9
22.01.2011 19:52:05
Ruben Bartelink 27.03.2010 13:41:28

Программирование с нуля. Это бесплатно в интернете. Эта книга научила меня AT & T Asm. Это очень легко читать.

альтернативный текст

9
17.05.2011 04:19:52

Парадигмы программирования искусственного интеллекта : практические примеры в Common Lisp Питера Норвиг

введите описание изображения здесь

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

9
7.12.2011 09:09:43

Окончательно Мастерство Программного Обеспечения

альтернативный текст http://ecx.images-amazon.com/images/I/5186JKTDVWL._SL500_AA240_.jpg

Эта книга объясняет много вещей о разработке программного обеспечения, разработке систем. Также очень полезно понимать разницу между разными видами разработки продукта: web VS shrinkwrap против IBM framework. Что имели в виду люди, когда задумывали модель водопада? Прочтите это, и все станет ясно (надеюсь)

9
30.01.2012 17:56:07
Эту книгу нужно переписать с нуля. Тема очень интересная, но книга довольно безумная.
Chris Mountford 27.04.2011 06:52:52
Крис, мне трудно понять твой комментарий ... Можешь объяснить больше? Почему «безумный»?
dario minonne 27.04.2011 16:19:45
Во-первых, он полон опечаток. Обычно первоклассная редакционная рука Эддисона Уэсли странным образом отсутствует в этом томе.
Chris Mountford 11.05.2011 04:33:08
... продолжается, и здесь недостаточно места, но: 2. в тексте никогда не ясно, где автор переключается между фактом и мнением, анекдотом и фундаментальным принципом и т. д. 3. мастерство программного обеспечения - это метафора и стратегия для решения нескольких проблем. сложные аспекты разработки программного обеспечения. Он имеет определенные преимущества перед альтернативами и, по-видимому, недостатки. Я считаю, что это нормальный подход. Бессмысленно говорить, что программное обеспечение по своей сути ремесло. Очень раздражает чтение, но, если честно, это было давно, и многие подробности я забыл. Однако мое отвращение остается.
Chris Mountford 11.05.2011 04:45:47

@ Питер Коултон - ты не читаешь Кнута, ты его изучаешь.

Для меня и моей работы ... Чисто функциональные структуры данных отлично подходят для мышления и разработки с учетом функциональных языков.

8
5.08.2008 01:25:46

«Мир плоский» Томаса Фридмана.

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

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

Если вы живете в Северной Америке или Европе, молоды и умны, программирование не является рациональным выбором карьеры. Компании, которые занимаются программированием, абсолютно. Изучайте бизнес, достаточно разбирайтесь в программировании, чтобы усовершенствовать свой детектор BS. Но посвятить львиную долю вашей умственной энергии мастерству библиотек, структур данных и алгоритмов? Это имеет смысл, только если программирование для вас нечто большее, чем экономический выбор.

Если вы любите программирование и по этой причине намереваетесь сделать это своей карьерой, тогда вам следует выработать хладнокровное понимание тех сил, которые будут и будут делать эту профессию все труднее и труднее зарабатывать на жизнь. , «Мир плоский» не будет учить вас , что назвать ваши переменные, но это будет погружать вас в течение 6 или 8 часов в экономических реалиях , которые уже прибыли. Если вы можете прочитать его и не испугаться, тогда выходите и покупайте «Code Complete».

8
16.09.2008 03:25:30
Это чертовски хороший ответ!
Avi 4.03.2012 23:10:06

альтернативный текст

В прошлом году я прошел ряд занятий. Я читаю

Дилемма новатора (прорывная технология)
Мифический человеко-месяц (управление программным обеспечением)
Преодолевая пропасть (запуск)
Системы управления базами данных, Книга COW,
Программирование на C #, Книга OSTRICH
Начинающие разработчики iPhone, Книга GRAPEFRUIT

Каждая книга была удивительной, но «Дилемма новатора» Клейтона Кристенсена (1997 !!!) действительно фантастическая книга, и она заставила меня задуматься о современном мире программного обеспечения. Решаемая проблема - это прорывная технология и то, как компании, работающие с дисководами, и нетехнические компании всегда нарушаются новыми технологиями, меняющими игру. Это дает новую перспективу, когда мы думаем о Google, возможно, самой крупной веб-компании. Почему у них руки во ВСЕМ? Это потому, что они не хотят, чтобы их позиция нарушалась чем-то новым. Предварительный просмотр на Google достаточно, чтобы получить идею. Прочитайте это!

8
8.02.2017 14:13:47
Я думаю, что эта книга довольно повторяющаяся. Я рекомендую прочитать первую 1/4.
Ben Haley 14.10.2011 16:29:40

хакеры, Стивен Леви.

Личность и образ жизни должны быть на первом месте. Все остальное можно узнать.

8
26.11.2009 20:04:24

Практика программирования

альтернативный текст

и

Как решить это с помощью компьютера

альтернативный текст http://img.infibeam.com/img/7101e0ee/496b1/05/629/PMB-9788131705629.jpg?hei=200&wid=160&op_sharpen=1

8
8.02.2017 14:29:15

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

альтернативный текст альтернативный текст

8
24.10.2010 15:01:53
Я думаю, что запуск новых программистов на Python уменьшит количество уродливого кода в мире. Я работаю с кем-то, кто случайно выравнивает строки - этот человек не сделал бы этого, если бы он работал с Python в течение нескольких месяцев.
xnine 25.10.2010 05:56:44
Я думаю, что запуск новых программистов на Python уменьшит количество других языков.
Marco Mariani 25.10.2010 08:51:35
Это совпадения?
Kelly S. French 16.12.2010 21:00:30

Новый тьюринговский омнибус http://ecx.images-amazon.com/images/I/51HlYd-%2BRwL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg

Действительно хорошая книга. Имеет высокоуровневый вкус самых важных областей информатики. Да, CS! = Программирование, но это все еще полезно для каждого программиста.

8
20.06.2011 21:23:13

Мифический человеко-месяц Фреда Брукса http://en.wikipedia.org/wiki/The_Mythical_Man-Month

7
21.08.2008 20:02:07

Я думаю, что «Искусство программирования в Unix» - отличная книга, написанная Эриком Рэймондом, превосходным хакером / блестящим умом, который пытается помочь нам понять несколько принципов разработки программного обеспечения (главным образом, простоты). Эта книга обязательна для каждого программиста, который собирается начать проект на платформе Unix.

7
27.08.2008 01:42:43
это дубликат.
Christopher Mahan 8.11.2009 09:54:25

Хотя я согласен с тем, что многие из вышеперечисленных книг являются обязательными для прочтения (Прагматический программист, Мифический человеко-месяц, Искусство компьютерного программирования и SICP сразу приходят на ум), я бы хотел пойти в несколько ином направлении и рекомендовать Дисциплину программирования Эдсгера Дейкстры. Несмотря на то, что ему 32 года, акцент на «проверяемость» очень важен (даже если «проверяемость» означает «доказательство», а не «модульные тесты»).

7
28.08.2008 23:47:12
У меня были большие надежды на эту книгу, но она не делает это для меня. Я думаю, что это констатирует очевидное. Это, вероятно, хорошо для новичков в программировании.
projecktzero 30.08.2010 19:12:58

Рефакторинг Мартина Фаулера : Улучшение дизайна существующего кода уже перечислено. Но я подробно опишу, почему это повлияло на меня.

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

7
17.09.2008 07:55:51

альтернативный текст http://ecx.images-amazon.com/images/I/61dECNkdnTL._SL500_AA240_.jpg

Как программировать на C ++ Это хорошо для новичка. Это отличная книга, полная в комплекте с 1500 страницами.

7
23.09.2008 05:48:04
Я полностью согласен. Подход Deitel к изучению языка программирования поразителен. Я считаю Java Как программировать моей библией программирования!
H-H 27.11.2009 08:08:34

Вот отличная книга, которая не так широко приветствуется, но полна глубокого понимания: Agile Software Development: The Cooperative Game , автор Alistair Cockburn.

Что такого особенного в этом? Ну, ясно, что все слышали термин «Agile», и, похоже, в наши дни большинство верующих. Верите ли вы в это или нет, но за гибким движением стоят некоторые глубокие принципы. Эта книга раскрывает и формулирует эти принципы точным, научным способом. Вот некоторые из принципов (кстати, это мои слова, а не слова Алистера):

  1. Самое сложное в разработке командного программного обеспечения - заставить всех мозги иметь одинаковое понимание. Мы строим огромные, сложные, сложные системы, которые невидимы в материальном мире. Чем лучше вы научите больше людей делиться глубоким пониманием, тем эффективнее будет ваша команда в разработке программного обеспечения. Это основная причина, по которой парное программирование имеет смысл. Большинство людей отрицают это (и я сделал это изначально), но с учетом этого принципа я настоятельно рекомендую вам сделать еще один укол. Вы попадаете с ДВУМ людьми, которые глубоко понимают подсистему, которую вы только что создали ... не так много других способов получить такую ​​глубокую передачу информации так быстро. Это как слияние вулканцев.
  2. Вам не всегда нужны слова, чтобы быстро передать глубокое понимание. И следствие: слишком много слов, и вы превышаете возможности слушателя / читателя, что означает, что передача понимания, которую вы пытаетесь, не происходит. Учтите, что дети учатся говорить на языке, будучи «погруженными» и «поглощающими». Не только язык ... он приводит пример детей, играющих с поездами на полу. Вместе с ним появляется еще один ребенок, который никогда даже не видел поезд ... но, наблюдая за другими детьми, он улавливает суть игры и играет в нее . Это происходит все время между людьми. Это вместе с выводом о слишком большом количестве слов помогает понять, насколько ошибочно было в старые «водопадные» дни пытаться написать подробные спецификации требований на 700 страницах.

Там тоже много чего еще. Я замолчу сейчас, но я НАСТОЯТЕЛЬНО рекомендую эту книгу!

7
20.03.2009 02:45:42
Уникальный вклад, и вы нашли время, чтобы четко объяснить, почему это стоит прочитать. +1 за оригинальность и усилия! Я буду с нетерпением ждать чтения этого скоро ...
Avery Payne 20.05.2009 06:58:01
Хороший. Я не думаю, что вы будете разочарованы.
Charlie Flowers 23.06.2009 18:03:47

Мастера гибели. Что касается мотивации и любви к вашей профессии: она не станет лучше, чем описано в этой книге, правдиво вдохновляющей истории!

7
4.07.2009 09:10:59
+1 для точной один линии обзора
rubayeet 1.03.2011 08:04:16