Подтвердить что ты не робот

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

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

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

Поиск: Используйте окно поиска в правом верхнем углу. Чтобы найти ответы на текущий вопрос, используйте inquestion:this. Например:

inquestion:this "Code Complete"
4b9b3361

Ответ 1

  • Код завершен (2-е издание) от Steve McConnell
  • Прагматический программист
  • Структура и интерпретация компьютерных программ
  • Язык программирования C от Kernighan и Ritchie
  • Введение в алгоритмы Cormen, Leiserson, Rivest и Stein
  • Шаблоны проектирования банды четырех
  • Рефакторинг: улучшение дизайна существующего кода
  • Месяц Мифического Человека
  • Искусство компьютерного программирования Дональда Кнута
  • Составители: принципы, методы и инструменты Альфреда В. Ахо, Рави Сети и Джеффри Д. Ульмана.
  • Гёдель, Эшер, Бах Дуглас Хофштадтер
  • Чистый код: руководство по гибкому программному мастерству Роберта К. Мартина.
  • Эффективный С++
  • Более эффективный С++
  • КОД Чарльза Петцольда
  • Программирование Pearls by Jon Bentley
  • Эффективная работа с устаревшим кодом Michael C. Feathers
  • Peopleware от Demarco и Lister
  • Coders at Work by Peter Seibel
  • Конечно, ты шутишь, мистер Фейнман!
  • Эффективное Java 2nd edition
  • Шаблоны архитектуры корпоративных приложений Мартина Фаулера
  • The Little Schemer
  • The Seasoned Schemer
  • Почему (Poignant) Руководство по Ruby
  • Заключенные прибегают к убежищу: почему высокотехнологичные продукты приводят нас в бешенство и как восстановить спокойствие.
  • Искусство программирования Unix
  • Тестируемое развитие: к примеру, Кент Бек
  • Практики гибкого разработчика
  • Не заставляйте меня думать
  • Agile Software Development, Principles, Patterns and Practices, Роберт К. Мартин.
  • Проекты, управляемые доменом Эрика Эванса
  • Дизайн повседневных вещей Дональда Нормана
  • Современный дизайн С++ от Andrei Alexandrescu
  • Лучшее программное обеспечение, написанное мной Джоэл Спольски
  • Практика программирования Кернигана и Пайка
  • Прагматическое мышление и обучение: рефакторинг вашей Wetware by Andy Hunt.
  • Оценка программного обеспечения: демистификация черного искусства Стив Макконнел
  • Страстный программист (Моя работа пошла в Индию) Чадом Фаулером
  • Хакеры: Герои компьютерной революции
  • Алгоритмы + Структуры данных = Программы
  • Написание твердого кода
  • JavaScript - хорошие детали
  • Получение реальных сигналов 37
  • Основы программирования Карла Сегина
  • Компьютерная графика: принципы и практика в C (2-е издание)
  • Мышление в Java от Брюса Эккеля
  • Элементы вычислительных систем
  • Рефакторинг для шаблонов Джошуа Кериевского
  • Современные операционные системы Andrew S. Tanenbaum
  • Аннотированный Тьюринг
  • Вещи, которые делают нас умными Дональдом Норманном
  • Бесконечный путь строительства Кристофера Александра
  • Крайний срок: роман о управлении проектами Тома ДеМарко
  • Язык программирования С++ (3-е издание) Stroustrup
  • Шаблоны архитектуры корпоративных приложений
  • Компьютерные системы - перспектива программиста
  • Гибкие принципы, шаблоны и практика в С# Роберта К. Мартина.
  • Растущее объектно-ориентированное программное обеспечение, руководствуясь тестами
  • Руководства по дизайну рамок Брэда Абрамса
  • Объектное мышление д-ра Дэвида Уэста
  • Расширенное программирование в среде UNIX У. Ричардом Стивенсом
  • Хакеры и художники: большие идеи с компьютерного века
  • Душа новой машины Трейси Киддер
  • CLR через С# Джеффри Рихтера
  • Бесконечный путь строительства Кристофера Александра
  • Шаблоны проектирования в С# от Стива Мецкера
  • Алиса в Стране чудес Льюис Кэрол
  • Zen и искусство обслуживания мотоциклов Robert M. Pirsig
  • О Face - Основы дизайна взаимодействия
  • Here Comes Everybody: Сила организации без организаций Clay Shirky.
  • Дао программирования
  • Вычислительная красота природы
  • Написание твердого кода Стив Магуайр
  • Филипп и Алекс Руководство по веб-публикации
  • Объектно-ориентированный анализ и дизайн с помощью приложений Grady Booch
  • Эффективная Java от Джошуа Блоха
  • Вычислимость Н. Дж. Катленда
  • Учредители программирования
  • The Tao Te Ching
  • Производственный программист
  • Искусство обмана Кевина Митника
  • Карьерный программист: Тактика партизан для несовершенного мира Кристофера Дункана.
  • Парадигмы программирования искусственного интеллекта: тематические исследования в Common Lisp
  • Мастера судьбы
  • Прагматическое тестирование модуля в С# с NUnit Энди Хантом и Дейвом Томасом с Мэттом Харгеттом
  • Как решить его Джорджем Пойей
  • Алхимик Пауло Коэльо
  • Smalltalk-80: язык и его реализация
  • Написание защищенного кода (2-е издание) Майкла Говарда
  • Введение в функциональное программирование Филиппа Вадлера и Ричарда Берда.
  • Нет ошибок! Дэвид Тилен
  • Rework by Jason Freid и DHH
  • JUnit in Action

Ответ 2

K & R

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

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

Ответ 4

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

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

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

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

Ответ 5

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

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

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

Теорема о фундаментальном отказе (F.F.T.): сложные системы обычно работают в режиме отказа.

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

Ответ 6

Окончательное программное мастерство

alt text http://ecx.images-amazon.com/images/I/5186JKTDVWL._SL500_AA240_.jpg

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

Ответ 7

Один из моих личных фаворитов - Hacker Delight, потому что было так же интересно читать, как и образовательные.

Я надеюсь, что второе издание будет выпущено в ближайшее время!

Ответ 9

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

Ответ 10

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

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

Ответ 15

@Peter Coulton - вы не читаете Кнута, вы его изучаете.

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

Ответ 16

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

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

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

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

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

Ответ 17

alt text

В прошлом году я занял несколько классов. Я читал

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

Каждая книга была потрясающей, но дилемма Новатора Клейтона Кристенсена (1997!!!) - действительно фантастическая книга, и это заставило меня задуматься о современном мире программного обеспечения. Речь идет о разрушительной технологии и о том, как компании с дисковыми накопителями и нетехнические компании всегда нарушаются новыми технологиями смены игр. Это дает новую перспективу, когда мы думаем о Google, возможно, о самой большой "веб-компании". Почему у них есть все руки? Это потому, что они не хотят, чтобы их положение нарушено чем-то новым. Предварительный просмотр в google - это много, чтобы получить эту идею. Прочтите его!

Ответ 18

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

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

Ответ 22

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

alt textalt text

Ответ 24

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

Ответ 25

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

Ответ 27

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

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

Ответ 29

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

Ответ 30

Здесь отличная книга, которая не так широко аплодирует, но полна глубокого понимания: Agile Software Development: совместная игра, по Алистер Кокберн.

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

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

Там так много. Я закрою сейчас, но я ВЫ рекомендую эту книгу!