avva: (Default)
[personal profile] avva
Популярная тема на StackOverflow: What is the single most influential book every programmer should read?

Вот список книг, набравших на данный момент больше 100 голосов, в порядка убывания голосов:

1-5: Code Complete, The Pragmatic Programmer, SICP, Kernighan/Ritchie, Cormen.

6-10: Fowler's Refactoring, The Mythical Man-Month, Design Patterns, Knuth vol.1, the Dragon Book.

11-15: Head-First Design Patterns, GEB, [More] Effective C++, Programming Pearls, Zen and the Art...

16-20: Petzold's Code, Working Effectively w/ Legacy Code, Peopleware, Coders at Work, Martin's Clean Code.

21-26: Surely You're Joking, Effective Java, Fowler's Patterns of Enterprise Application Architecture, The Little/Seasoned Schemer, The Inmates Are Running the Asylum, Why's Poignant Guide to Ruby.

Из этих 26 книг я читал (понимая под этим - прочел не меньше половины книги) тринадцать: те, что выделены курсивом.

Из этих тринадцати книг три не имеют отношения к программированию, из этих трех одну все равно следует прочитать всем программистам (а также всем остальным людям). Это "Surely You're Joking, Mr. Feynman!".

Из оставшихся десяти три мне почти ничего не дали, и я с тем же успехом мог бы их и не читать: Code Complete, The Pragmatic Programmer, Design Patterns (о первых двух из них я думал по-другому, когда их прочитал, но потом понял, что мне просто льстило то, что они в основном повторяли то, чему я сам давно научился). Возможно, другим они помогли больше. Я бы не советовал их в качестве обязательного чтения.

Оставшиеся семь книг - они выделены курсивом и жирным шрифтом - я бы посоветовал всем программистам, с тем только замечанием, что Effective C++/Java нужны только тем, кто пишет на этих языках (а вот к Kernighan/Ritchie это не относится).

Я подумал о том, какие книги из тех, что на меня повлияли и что я могу порекомендовать всем. В первую очередь на ум приходит The Practice of Programming Кернигана и Пайка; она, на мой взгляд, важнее примерно 20 из 26 книг этого списка.

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

Это мое мнение; если хотите добавить свое, пожалуйста, буду рад комментариям на эту тему.
Page 1 of 5 << [1] [2] [3] [4] [5] >>

Date: 2011-03-01 12:36 pm (UTC)
From: [identity profile] lair.livejournal.com
Просто Code Complete и Design Patterns надо читать в начале карьеры. Тогда от них существенно больше пользы.

Date: 2011-03-01 12:41 pm (UTC)
From: [identity profile] freiksenet.livejournal.com
Странно, что нет Introduction to Algorithms, по-моему намного более интересная и полезная книга, чем Dragon Book.

Странно что вы не читали SICP - по-моему отличная книга и must-read для любой программиста.

Кроме SICP в списке нет ни одной книге про не-мейнстрим программированию, что очень печально, но в принципе объяснимо. :(

Еще печально, что так много книг, которые пропагандируют cargo-cult programming, типа design patterns.

Date: 2011-03-01 12:47 pm (UTC)
From: [identity profile] bacek.livejournal.com
Ну Mythical Man-Month почитать наверно стоит.

EoPL

Date: 2011-03-01 12:47 pm (UTC)
From: [identity profile] triampurum.livejournal.com
Essentials of Programming Languages, D. Friedman, M. Wand. Изложение основ, с которыми должен быть знаком, если по-хорошему, каждый программист. Примечательна методом изложения. Метод - последовательное, совместное с читателем написание интерпретаторов (где интерпретаторы исполняют роль однозначных исполняемых спецификаций), иллюстрирующих концепции, о которых идет речь. Человек, сам реализовавший call-by-value, call-by-reference и call-by-need, путать их, скорее всего, не будет. Стратегиями вычисления материал книги не ограничивается, хотя материал по большей части и слишком прост для работающего программиста, потому что знаком ему по другим источникам. Поэтому читать её имеет смысл, видимо, лишь начинающему.

Date: 2011-03-01 12:48 pm (UTC)
From: [identity profile] shadow-ru.livejournal.com
Кормен там есть.

Date: 2011-03-01 12:48 pm (UTC)
From: [identity profile] avva.livejournal.com
Странно, что нет Introduction to Algorithms

Это Cormen, он в списке.

Странно что вы не читали SICP - по-моему отличная книга и must-read для любой программиста.

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

Date: 2011-03-01 12:49 pm (UTC)
From: [identity profile] avva.livejournal.com
Да, я собираюсь.

Date: 2011-03-01 12:51 pm (UTC)
From: [identity profile] shadow-ru.livejournal.com
А есть ли смысл читать в XXI веке этот привет из 80-х - драгонбук?

Да-да, я в курсе про второе издание, но тем не менее?

Date: 2011-03-01 12:51 pm (UTC)
From: [identity profile] nokachi.livejournal.com
Что скажете насчёт обязательности третьего тома Кнута? Кормен уже давно прочитан.

Date: 2011-03-01 12:53 pm (UTC)
From: [identity profile] avva.livejournal.com
Мне кажется, что нужна книга, которая показывает, как оно работает, и де-мистифицирует то, что происходит между написанием программы и выполнением кода процессором. Конкретные техники, например, парсинга не так важны, как это базисное понимание.

Date: 2011-03-01 12:54 pm (UTC)
From: [identity profile] freiksenet.livejournal.com
"Странно, что нет Introduction to Algorithms"

И правда. Не заметил. )

"Хоть и подозреваю, что почти весь материал там довольно хорошо понимаю и так уже."

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

Date: 2011-03-01 12:55 pm (UTC)
From: [identity profile] freiksenet.livejournal.com
Есть менее тяжелые тексты, например Engineering a Compiler.

Date: 2011-03-01 12:56 pm (UTC)
From: [identity profile] avva.livejournal.com
На мой взгляд, ни один том Кнута не обязателен. Я не прочитал целиком ни один из них, и не собираюсь; использовать их в качестве reference подглядеть сложную тему - да, приходилось.

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

(точнее, я до сих пор считаю, что надо стараться сильнее, просто необязательно в сторону чтения TAOCP).

Date: 2011-03-01 12:58 pm (UTC)
From: [identity profile] freiksenet.livejournal.com
Там, например, на парсерах не фокусируются, а говорят именно про компиляторы.

Date: 2011-03-01 01:04 pm (UTC)
From: [identity profile] freiksenet.livejournal.com
Хорошие, но не мейнстримовые книги.

Pierce - Types and Programming Languages
Okasaki - Purely Functional Data Structures
Книги про хаскель, хоть одну стоит прочитать - Real-World Haskell, Introduction to Functional Programming Using Haskell, Haskell road to Logic, Maths and Programming.
Хорошо бы еще книгу обзорную книгу по ИИ программированию, типа Norvig.

Date: 2011-03-01 01:05 pm (UTC)
From: [identity profile] nokachi.livejournal.com
Спасибо. Я пытался читать Кнута но не осилил, очень тяжело он читается. Может быть, в конце концов прочту по частям.

Date: 2011-03-01 01:09 pm (UTC)
From: [identity profile] pin-dragon.livejournal.com
«Практику программирования», на мой взгляд, следует использовать для обучения программированию вместо того, что используется сейчас, например, в России.
Начинающим поможет быстрее понять важные вещи. А вот тем, кто самые важные уже понял, читать её довольно скучно. Да со многим в ней можно поспорить (всякие частности, в основном).

Date: 2011-03-01 01:10 pm (UTC)
From: [identity profile] freiksenet.livejournal.com
А что в России используется? Поймут ли студенты при обучении о чем говорят в "Практике"?

Date: 2011-03-01 01:18 pm (UTC)
From: [identity profile] pin-dragon.livejournal.com
В России (как и везде) используется то, что нравится преподавателю. Преподавателю обычно не нравится ничего, поэтому он обычно пишет свою книжку, которая никуда не годится, зато совпадает с курсом.

Ну я вот, например, студент. Если бы я прочитал её на первом курсе, очень бы обогатился. Сейчас читать было скучновато.

Date: 2011-03-01 01:20 pm (UTC)
From: [identity profile] vasily-nosikov.livejournal.com
Мне "Паттерны проектирования" одназначно помогли. Еще "Codecraft" сколько-то пригодился, хотя его наверное тоже имеет смысл читать разве что в начале карьеры. "Pragmatic Programmer" не впечатлил

Date: 2011-03-01 01:23 pm (UTC)
From: [identity profile] pin-dragon.livejournal.com
Да и что в ней такого непонятного?
Как раз таки сделана попытка рассказать обо всём с нуля и дать основы с точки зрения правильного подхода. Ничего сильно «продвинутого» в ней нету.

Date: 2011-03-01 01:26 pm (UTC)
From: [identity profile] freiksenet.livejournal.com
Ну если мы возьмем обычно студента который пришел в универ, и программировал до этого максимум паскаль (или что у вас в школах теперь учат?), и то если повезет. Даже если не концентрироваться на том, что его наверно не стоит разу обучать C/C++, то что он может подчерпнуть их такой книги если он сам программировать почти не умеет?

Date: 2011-03-01 01:27 pm (UTC)
From: [identity profile] freiksenet.livejournal.com
С/C++/Java*

Date: 2011-03-01 01:31 pm (UTC)
From: [identity profile] mtyukanov.livejournal.com
Полностью согласен насчет Кернигана-Пайка, на мой взгляд, это в десятке наиболее нужных книг.
Я бы назвал еще Design and Evolution of C++, причем не только для углубления понимания языка программистами C++ (хотя им эти книга, безусловно, полезна еще и этим), но и как развернутый case study развития большого проекта с анализом решений и их дальних последствий -- для всех программистов.

Date: 2011-03-01 01:32 pm (UTC)
From: [identity profile] pin-dragon.livejournal.com
Ну, разумеется, знание на начальном уровне хоть какого-то из используемых языков предполагается. Но это, на самом деле, не такое уж страшное требование. Не первый семестр, так второй.
Гораздо хуже, когда, отучившись несколько лет в строгой заточке на 1 язык, человек сам допрёт прочитать «Паттерны проектирования на Java» какие-нибудь (не путать с оригинальной книгой из поста, хотя она тут тоже не сахар) и на этом его развитие закончится.
Page 1 of 5 << [1] [2] [3] [4] [5] >>

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 04:00 pm
Powered by Dreamwidth Studios