обязательные книги для программистов
Mar. 1st, 2011 02:25 pmПопулярная тема на 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 книг, что я не прочитал, три-четыре я все еще собираюсь прочесть. Остальные я либо не читал и не вижу смысла, либо начинал читать и не увидел смысла.
Это мое мнение; если хотите добавить свое, пожалуйста, буду рад комментариям на эту тему.
Вот список книг, набравших на данный момент больше 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 книг, что я не прочитал, три-четыре я все еще собираюсь прочесть. Остальные я либо не читал и не вижу смысла, либо начинал читать и не увидел смысла.
Это мое мнение; если хотите добавить свое, пожалуйста, буду рад комментариям на эту тему.
no subject
Date: 2011-03-01 12:36 pm (UTC)no subject
Date: 2011-03-01 12:41 pm (UTC)Странно что вы не читали SICP - по-моему отличная книга и must-read для любой программиста.
Кроме SICP в списке нет ни одной книге про не-мейнстрим программированию, что очень печально, но в принципе объяснимо. :(
Еще печально, что так много книг, которые пропагандируют cargo-cult programming, типа design patterns.
no subject
Date: 2011-03-01 12:47 pm (UTC)EoPL
Date: 2011-03-01 12:47 pm (UTC)no subject
Date: 2011-03-01 12:48 pm (UTC)no subject
Date: 2011-03-01 12:48 pm (UTC)Это Cormen, он в списке.
Странно что вы не читали SICP - по-моему отличная книга и must-read для любой программиста.
Да, это одна из лакун у меня, я в принципе собираюсь. Хоть и подозреваю, что почти весь материал там довольно хорошо понимаю и так уже.
no subject
Date: 2011-03-01 12:49 pm (UTC)no subject
Date: 2011-03-01 12:51 pm (UTC)Да-да, я в курсе про второе издание, но тем не менее?
no subject
Date: 2011-03-01 12:51 pm (UTC)no subject
Date: 2011-03-01 12:53 pm (UTC)no subject
Date: 2011-03-01 12:54 pm (UTC)И правда. Не заметил. )
"Хоть и подозреваю, что почти весь материал там довольно хорошо понимаю и так уже."
Вероятно. Всё равно возможно будет интересен подобный подход к обучению, особенно последний раздел с абстракциями на уровне языка.
no subject
Date: 2011-03-01 12:55 pm (UTC)no subject
Date: 2011-03-01 12:56 pm (UTC)Было время, когда я считал, что они обязательны и это я такой глупый и неправильный, и надо стараться сильнее, но это время прошло.
(точнее, я до сих пор считаю, что надо стараться сильнее, просто необязательно в сторону чтения TAOCP).
no subject
Date: 2011-03-01 12:58 pm (UTC)no subject
Date: 2011-03-01 01:04 pm (UTC)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.
no subject
Date: 2011-03-01 01:05 pm (UTC)no subject
Date: 2011-03-01 01:09 pm (UTC)Начинающим поможет быстрее понять важные вещи. А вот тем, кто самые важные уже понял, читать её довольно скучно. Да со многим в ней можно поспорить (всякие частности, в основном).
no subject
Date: 2011-03-01 01:10 pm (UTC)no subject
Date: 2011-03-01 01:18 pm (UTC)Ну я вот, например, студент. Если бы я прочитал её на первом курсе, очень бы обогатился. Сейчас читать было скучновато.
no subject
Date: 2011-03-01 01:20 pm (UTC)no subject
Date: 2011-03-01 01:23 pm (UTC)Как раз таки сделана попытка рассказать обо всём с нуля и дать основы с точки зрения правильного подхода. Ничего сильно «продвинутого» в ней нету.
no subject
Date: 2011-03-01 01:26 pm (UTC)no subject
Date: 2011-03-01 01:27 pm (UTC)no subject
Date: 2011-03-01 01:31 pm (UTC)Я бы назвал еще Design and Evolution of C++, причем не только для углубления понимания языка программистами C++ (хотя им эти книга, безусловно, полезна еще и этим), но и как развернутый case study развития большого проекта с анализом решений и их дальних последствий -- для всех программистов.
no subject
Date: 2011-03-01 01:32 pm (UTC)Гораздо хуже, когда, отучившись несколько лет в строгой заточке на 1 язык, человек сам допрёт прочитать «Паттерны проектирования на Java» какие-нибудь (не путать с оригинальной книгой из поста, хотя она тут тоже не сахар) и на этом его развитие закончится.