Яка єдина найвпливовіша книга, яку повинен прочитати кожен програміст? [зачинено]


1439

Якщо ви могли б повернутись у часі і сказати собі, щоб прочитати конкретну книгу на початку вашої кар’єри як розробника, якою це була б книга?

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

Для пошуку: Використовуйте вікно пошуку у верхньому правому куті. Для пошуку відповідей на поточне запитання використовуйте inquestion:this. Наприклад:

inquestion:this "Code Complete"

8
Переглядаючи цю тему, я даю мені зрозуміти, наскільки потворні більшість книг, пов’язаних із програмуванням. Дуже гарна нитка, хоча!
Карл Бергкіст

23
Цікаво, що в той час, коли в заголовку написано "Яка є найвпливовіша книга, яку повинен прочитати кожен програміст?", Існує досить багато книг, які стосуються мовної тематики. За визначенням і за питанням, як це було сказано, запропоновані тут книги повинні стосуватися мовних агностичних тем, що підтверджує, що більшість програмістів ще не навчилися читати.
Грак

19
Якщо я міг би повернутися у часі і сказати собі, щоби щось прочитати, то краще це буде газета чи книга із спортивними фактами, яку я носив із собою. Все інше - це марна трата часу на подорожі. :-)
jmucchiello

32
Ви знаєте, якби я не хвилювався за те, щоб зійти, проголосував ВСІЙ партії, я би по-тролейськи пішов і запропонував Сутінку. "ЇЇ ТАКОЖ про людей, які бліді і уникають сонця!"
Якоб Белламі

3
Чи може хтось очистити відповіді, видаливши повторні записи в книгах? Більшість з них вже проголосували за площу.
рао

Відповіді:


1746
  • Кодекс завершено (2-е видання) Стіва МакКоннелла
  • Прагматичний програміст
  • Структура та інтерпретація комп'ютерних програм
  • Мова програмування С Керніган та Річі
  • Вступ до алгоритмів Cormen, Leiserson, Rivest & Stein
  • Шаблони дизайну бандою чотирьох
  • Рефакторинг: вдосконалення конструкції існуючого коду
  • Міфічний місяць людини
  • Мистецтво комп’ютерного програмування Дональда Кнута
  • Укладачі: принципи, методики та засоби Альфреда В. Ахо, Раві Сетхі та Джеффрі Д. Уллмана
  • Гедель, Ешер, Бах Дуглас Хофстадтер
  • Чистий код: Підручник з гнучкої майстерності програмного забезпечення Роберта К. Мартіна
  • Ефективний C ++
  • Більш ефективний C ++
  • КОД Шарля Петцольда
  • Програмування перлів Джона Бентлі
  • Ефективна робота зі спадковим кодексом Майкла К. Пір’я
  • Посуд від Demarco та Lister
  • Кодери на роботі Пітера Сейбела
  • Напевно Ви жартуєте, містере Фейнман!
  • Ефективна Java 2-го видання
  • Шаблони архітектури корпоративних додатків Мартіна Фаулера
  • Маленький Схемер
  • Досвідчений шемер
  • Чому (Покірний) путівник по Рубі
  • Засуджені працюють у притулку: чому продукти високих технологій нас змушують божевільно та як відновити розум
  • Мистецтво програмування Unix
  • Тестова розробка: за прикладом Кент Бек
  • Практики спритного розробника
  • Не змушуй мене думати
  • Agile Розробка програмного забезпечення, принципи, шаблони та практики Роберта К. Мартіна
  • Ерик Еванс, керований доменом
  • Дизайн повсякденних речей Дональда Нормана
  • Сучасний дизайн C ++ від Андрія Олександреску
  • Краще написання програмного забезпечення I Джоела Спольського
  • Практика програмування Керніган та Пайк
  • Прагматичне мислення та навчання: рефакторинг вашого посуду від Енді Ханта
  • Оцінка програмного забезпечення: Демістифікація чорного мистецтва Стіва Макконеля
  • Пристрасний програміст (Моя робота пішов в Індію) Чада Фаулера
  • Хакери: Герої комп'ютерної революції
  • Алгоритми + Структури даних = Програми
  • Написання твердого коду
  • JavaScript - хороші частини
  • Отримання реального 37 сигналів
  • Основи програмування Карла Сегуїна
  • Комп'ютерна графіка: принципи та практика роботи на C (2-е видання)
  • Думаючи на Яві Брюса Еккеля
  • Елементи обчислювальних систем
  • Рефакторинг на візерунки Джошуа Керієвського
  • Сучасні операційні системи Ендрю С. Таненбаума
  • Анотований Тьюрінг
  • Речі, які роблять нас розумними Дональдом Норманом
  • Безчасний шлях будівництва Крістофер Олександр
  • Кінцевий термін: Роман про управління проектами Тома Демарко
  • Мова програмування на C ++ (3-е видання) від Stroustrup
  • Закономірності архітектури прикладних програм підприємства
  • Комп'ютерні системи - перспектива програміста
  • Спритні принципи, зразки та практики в C # від Роберта К. Мартіна
  • Вирощування об’єктно-орієнтованого програмного забезпечення, керуючись тестами
  • Рамкові рекомендації щодо дизайну Бреда Абрамса
  • Об’єктне мислення доктора Девіда Веста
  • Розширене програмування у середовищі UNIX В. Річарда Стівенса
  • Хакери та живописці: великі ідеї з епохи комп'ютера
  • Душа нової машини від Трейсі Кіддер
  • CLR через C # від Джефрі Ріхтера
  • Безчасний шлях будівництва Крістофер Олександр
  • Шаблони дизайну в C # від Стіва Меткера
  • Аліса в країні чудес Льюїс Керол
  • Дзен і мистецтво технічного обслуговування мотоциклів Роберт М. Пірсіг
  • Про обличчя - основи дизайну взаємодій
  • Тут приходять усі: Сила організації без організацій Клей Ширкі
  • Дао програмування
  • Обчислювальна краса природи
  • Написання твердого коду Стіва Магуайра
  • Посібник Філіпа та Алекса з веб-видавництва
  • Об'єктно-орієнтований аналіз та дизайн із додатками Grady Booch
  • Ефективна Java Джошуа Блоха
  • Computability по NJ Cutland
  • Основні напрямки програмування
  • Цін Дао
  • Продуктивний програміст
  • Мистецтво обману Кевіна Мітніка
  • Кар'єрний програміст: Партизанська тактика для недосконалого світу Крістофера Дункана
  • Парадигми програмування штучного інтелекту: кейси в Common Lisp
  • Майстри Doom
  • Тестування прагматичних одиниць на C # з NUnit Енді Хант та Дейва Томаса з Меттом Харгеттом
  • Як її вирішити Джордж Поля
  • Алхімік Пауло Коельо
  • Smalltalk-80: Мова та її реалізація
  • Написання безпечного коду (2-е видання) Майкла Говарда
  • Вступ до функціонального програмування Філіпа Вадлера та Річарда Берда
  • Ніяких помилок! Девід Тілен
  • Переробка Джейсона Фрейда та DHH
  • JUnit в дії

16
Code Complete - це приємна книга, якщо ви, можливо, в коледжі. Якщо у вас є принаймні 1 рік досвіду програмування, це загальний нудьга.
Богдан Гавриль MSFT

19
Code Complete містить багато корисної інформації, але він закопаний у гіперболі, вафлі та повторенні, що робить його важким для читання.
Джефф Йейтс

76
Я читав Code Complete за 3 роки своєї кар’єри. Я не брав курс програмної інженерії, а також не конструював курс програмування на мові програмування, але пройшов кілька курсів введення CS. Це на сьогодні найкраща окрема книга, яку я коли-небудь читав, щоб стати кращим програмістом. Це не зробить вас спеціалістом, але зробить вас набагато більше, ніж тінішер.
Ши

119
Проблема цієї книги полягає в тому, що для початківців це насправді не має сенсу, оскільки поняття трохи вдосконалені. На той час, коли ви будете готові прочитати, ви вже повинні знати і практикувати 99% понять у книзі.
esac

57
Ось угода із здоровими глуздами, як і у цій книзі. Кожен так часто вам потрібно нагадувати про них, щоб вони повернулися в чергу.
JohnFx

9

K&R

@Juan: Я знаю Хуана, я знаю, - але є деякі речі, які можна дізнатися, тільки насправді переходячи до завдання, що знаходиться під рукою. Виступ у абстрактних ідеалах цілий день просто робить вас академічним. Саме у застосуванні реферату ми справді шукаємо причину їх існування. : P

@Keith: Чудова згадка про "Засуджені керують притулком" від Алана Купера - очевидця, яка відкриває очі, напевно, будь-який розробник, який працював зі мною з моменту, коли я прочитав цю книгу, почув, як я згадую ідеї, які вона підтримує. +1


9

Дискретна математика для науковців 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

Систематика: як працюють системи і особливо, як вони виходять з ладу . Використовуйте його дешево. Але ви не зможете отримати гумор, поки не попрацюєте над кількома невдалими проектами.

Краса книги - рік авторських прав.

Напевно, найглибший «закон» про винесення, представлений у книзі:

Основна теорема відмов (FFT): Складні системи зазвичай працюють у режимі відмови.

Ідея полягає в тому, що в будь-якому фрагменті програмного забезпечення є несправні частини, які замасковані відмовами в інших частинах або валідаціями в інших частинах. Дивіться приклад у реальному світі на радіаційній машині Therac-25 , чиї недоліки в програмному забезпеченні були замасковані аварійними помилками обладнання. Коли технічні збої в роботі апаратних засобів були усунені, стан гонки програмного забезпечення, який залишився непоміченим за всі ці роки, призвів до того, що в машині загинули 3 людини.


1
Ознайомтесь також із Біблією Системи того ж автора (Джон Галл). Це третє видання Systemantics, він просто змінив назву. Це книга, яку ви вкрали зі школи. Це книга, яку дорослі дорослі читають під ковдрою з ліхтариком.
Кріс Венхем

9

Один з моїх особистих улюблених - захоплення Хакером , адже читати було так само весело, як і навчально.

Я сподіваюся, що друге видання незабаром вийде!


+1 для "Хакерського захоплення" Генрі С. Уоррена-молодшого - справа не в злому в популярному розумінні, а про хакінгу, як у подвійному подвійному битві та інших "хаках" у справжньому та оригінальному сенсі цього слова. Не для всіх, але якщо ви займаєтесь оптимізацією коду, компіляторами тощо, або просто загальний глузд, який зацікавлений у матеріалах низького рівня, це чудова книга.
Пол Р

9

Бриллант, на обкладинці книги показана "La Sagrada Família", велика римо-католицька базиліка, що будується в Барселоні, Каталонія, Іспанія. Буде завершено у 2026 році (залишилось лише 17 років). Як і більшість програм, навіть з найкращими книгами, вони так і не закінчили ...
PeterMmm

9

Екстремальне програмування, пояснене: прийняти зміну Кент Бек. Хоча я не прихильник того, щоб хардкорний XP або дорога взявся за розробку програмного забезпечення, я б хотів, щоб мене ознайомили з принципами в цій книзі набагато раніше, ніж у моїй кар’єрі. Тестування одиниць, рефакторинг, простота, безперервна інтеграція, вартість / час / якість / сфера - це змінило спосіб, на який я дивився на розвиток. До Agile все було пов'язано з налагоджувачем і страхом перед запитами на зміни. Після Agile, ці демони не маячилися настільки великими.





9

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

Стиль, показаний тут, відмінний - код просто говорить сам за себе, і вся книга відповідає принципу KISS. Особисто не мої мови вибору, але все ще впливають на мене.




9

Парадигми програмування штучного інтелекту : практичні приклади у звичайному Ліппесі Пітера Норвіга

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

Я почав її читати, тому що хотів навчитися Common Lisp. Коли я опинився на півдорозі, я зрозумів, що це найбільша книга про програмування, яку я читав досі.


9

Однозначно майстерність програмного забезпечення

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

Ця книга пояснює багато речей щодо інженерії програмного забезпечення, розробки систем. Також надзвичайно корисно зрозуміти різницю між різними видами розробки продукту: веб-VS shrinkwrap VS IBM Framework. Що люди мали на увазі, коли замислили модель водоспаду? Прочитайте це, і все нам стане зрозуміло (сподіваємось)


Цю книгу потрібно переписати з нуля. Тема дуже цікава, але книга досить божевільна.
Кріс Маунтфорд,

Кріс, мені важко зрозуміти ваш коментар ... Чи можете ви пояснити більше? Чому «божевільний»?
dario minonne

По-перше, він повний друкарських помилок. Зазвичай у цьому томі дивно відсутня редакційна рука Аддісон Веслі.
Кріс Маунтфорд

... продовження, і тут не вистачає місця, але: 2. в тексті ніколи не зрозуміло, де автор перемикається між фактом і думкою, анекдотом та основоположним принципом тощо. складні аспекти розробки програмного забезпечення. Він має специфічні переваги перед альтернативами та, ймовірно, недоліками. Я вважаю, що це розумний підхід. Безглуздо говорити, що програмне забезпечення по суті є ремеслом. Дуже прикро читати, але чесно кажучи, це було дуже давно і багато конкретики, яку я забув. Однак моя огида залишається.
Кріс Маунтфорд

8

@ Петер Култон - ти не читаєш Кнут, ти вивчаєш його.

Як для мене, так і для моєї роботи ... Чисто функціональні структури даних чудово підходять для мислення та розвитку з використанням функціональних мов.


8

"Світ плоский" Томаса Фрідмана.

Досконалість програмування вимагає вкладення розумової енергії та відданості постійному навчанню, порівнянному з професіями медицини чи права. Він платить частину від тієї, яку платять ці професії, набагато менше заробітної плати виплаченим математично кмітливим, хто прямує у фінансовий сектор. І заробітна плата за побудову коду розмивається, оскільки це професія, яку інтелектуальні та самодисципліновані в більшості економік відносно легко.

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

Якщо ви живете в Північній Америці чи Європі, молоді і розумні, програмування не є раціональним вибором кар'єри. Компанії, які передбачають програмування, абсолютно. Вивчайте бізнес, достатньо знайте про програмування, щоб удосконалити свій детектор BS: блискучий. Але присвятити левову частку вашої розумової енергії майстерності бібліотек, структур даних та алгоритмів? Це має сенс лише в тому випадку, якщо програмування для вас щось більше, ніж економічний вибір.

Якщо ви любите програмування і з цієї причини маєте намір зробити це своєю кар'єрою, тоді вам належить розвинути холодноокі розуміння сил, які є і будуть продовжувати, щоб зробити це більш важкою і важкою професією, в якій можна заробляти на життя . "Світ плоский" не навчить вас називати свої змінні, але він занурить вас на 6 або 8 годин в економічні реалії, які вже надійшли. Якщо ви можете прочитати його, і не злякатися, тоді вийдіть і купуйте "Кодекс завершений".


Це одна біса хорошої відповіді!
Аві

8

alt текст

У минулому році я пройшов ряд занять. я читаю

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

Кожна книга була дивовижною, але «Дилема інноватора» Клейтона Крістенсена (1997 !!!) - це справді фантастична книга, і це мене дуже подумало про сучасний світ програмного забезпечення. Завдання, яке вирішується, - це руйнівна технологія, і те, як компанії, що працюють на дисках, і нетехнічні компанії завжди порушуються новою технологією зміни ігор. Це дає нову точку зору, коли мислимо про Google, мабуть, про найбільшу "веб-" компанію. Чому вони ВСІХ руки мають? Це тому, що вони не хочуть, щоб їхнє становище було порушене чимось новим. Попередній перегляд у Google є достатньою для отримання ідеї. Читати!


Я думаю, що ця книга досить повторювана. Я рекомендую прочитати першу 1/4.
Бен Хейлі

8

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

Перш за все повинні вийти особистість і спосіб життя. Про все інше можна дізнатися.



8

Мова Python була на мене дуже впливовою, я б хотів, щоб я прочитав ці книги років тому. Краса та простота мови Python дійсно вплинули на те, як я писав код іншими мовами.

alt текст alt текст


2
Я думаю, що запуск нових програмістів з Python зменшить кількість некрасивих кодів у світі. Я працюю з тим, хто випадково відступає рядки - ця людина не зробила б цього, якби працювала з Python кілька місяців.
xnine

6
Я думаю, що запуск нових програмістів з Python зменшить кількість інших мов.
Марко Мар'яні

2
Чи це охоплює збіг?
Келлі С. Французька




7

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


6
це дублікат.
Крістофер Махан

7

Хоча я погоджуюсь, що багато книг вище є обов'язковими для читання (Прагматичний програміст, Міфічний чоловік-місяць, Мистецтво комп’ютерного програмування та SICP приходять до тями одразу), я хотів би піти в іншому напрямку і рекомендую Дисципліну програмування Едсгера Дікстра. Незважаючи на те, що йому вже 32 роки, наголос на "конструкції для перевірки" є дуже актуальним (навіть якщо "перевіряемость" означає "доказ", а не "одиничні тести").


7

Я покладав великі надії на цю книгу, але вона це не робить для мене. Я думаю, що це констатує очевидне. Це, мабуть, добре для тих, хто не програмує.
projecktzero

7

Рефакторинг Мартіна Фаулера : вдосконалення дизайну існуючого коду вже перераховано. Але я детально поясню, чому це вплинуло на мене.

Суть усієї книги полягає в структуруванні коду таким чином, щоб його було простіше читати і розуміти людиною . Мене це сильно вчить, що код, який я пишу, призначений для того, щоб мої колеги та наступники споживали і, можливо , з нього виходили щось хороше . Це надихає мене свідомо програмувати таким чином, що залишає людей хвалити моє ім’я, а не проклинає мене на прокляття цілу вічність .


7

alt текст http://ecx.images-amazon.com/images/I/61dECNkdnTL._SL500_AA240_.jpg

C ++ Як програмувати Це добре для початківців. Це відмінна книга, яка повною мірою містить 1500 сторінок.


Я цілком погоджуюся. Підхід Deitel у вивченні мови програмування дивовижний. Я вважаю Java Як програмувати свою біблію з програмування!
HH

7

Ось чудова книга, яка не так широко аплодує, але наповнена глибоким розумінням: Agile Software Development: The Cooperative Game , Алістер Кокберн.

Що такого особливого в цьому? Ну, явно всі чули термін "Agile", і, здається, більшість віруючих сьогодні. Хоча ви вірите чи ні, ховаються деякі глибокі принципи, чому існує рухливий рух. Ця книга точно і науково розкриває та формулює ці принципи. Деякі принципи: (btw, це мої слова, а не Alistair):

  1. Найскладніше в розробці програмного забезпечення команди - це розум кожного для розуміння. Ми будуємо величезні, складні, складні системи, невидимі у відчутному світі. Чим краще ви отримаєте більше мозку людей, щоб поділитися глибшим розумінням, тим ефективніше ваша команда буде працювати над розробкою програмного забезпечення. Це основна причина, що парне програмування має сенс. Більшість людей відмовляється від цього (і я це робив занадто спочатку), але, маючи на увазі цей принцип, я настійно рекомендую вам дати ще раз. Ви закінчилися з ДВОМИ людьми, які глибоко розуміють щойно побудовану підсистему ... Існує не так багато інших способів, щоб настільки швидко здійснити такий глибокий перенос інформації. Це наче вульканський розум.
  2. Вам не завжди потрібні слова для швидкого спілкування з глибоким розумінням. І слідство: занадто багато слів, і ви перевищуєте здатність слухача / читача, це означає, що передача розуміння, яку ви намагаєтеся, не відбувається. Подумайте, що діти вчаться розмовляти мовою, будучи "зануреним" і "поглинаючим". Не лише мова ... він наводить приклад деяких дітей, які грають з поїздами на підлозі. Поряд приходить ще одна дитина, яка ніколи навіть не бачила поїзд ... але спостерігаючи за іншими дітьми, він підбирає суть гри і грає прямо поруч. Це відбувається весь час між людьми. Це разом із наслідками про занадто багато слів допомагає побачити, наскільки помилково було в старі дні «водоспаду», щоб спробувати написати 700 детальних специфікацій вимог.

Тут є і набагато більше. Я зараз заткнуся, але настійно рекомендую цю книгу!


2
Унікальний внесок, і ви знайшли час, щоб чітко пояснити, чому це варто прочитати. +1 за оригінальність та зусилля! Я з нетерпінням чекаю цього незабаром прочитати ...
Avery Payne

Добре. Я не думаю, що ви розчаруєтесь.
Charlie Flowers

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.