Сообщений 27    Оценка 212 [+2/-1]         Оценить  
Система Orphus

Классика Computer Science

Автор: Сергей Тепляков
Опубликовано: 14.03.2010
Версия текста: 1.0

С++
Java
.Net, C#
ООП, Шаблоны проектирования
Управление проектами
WinAPI/WinSocks
COM
Алгоритмы
Общие вопросы программирования
Базы данных

Ежегодно выходит множество книг по программированию, начиная от описания определенных языков программирования, заканчивая восхвалением методологий, которые, якобы, должны изменить этот компьютерный мир к лучшему. Наиболее сложной задачей для читателя в этом случае является выбор из всего этого многообразия книги, на которую действительно будет не жалко потраченных усилий. На многих форумах довольно легко найти перечень рекомендуемых книг по С++, C#, ООП и чему угодно еще, которые люди относят к классике в своей области. Я же хочу собрать в одном месте книги, которые считаются классическими в различных областях компьютерной науки. При этом я не собираюсь основываться исключительно на собственном мнении (более того, я не готов основываться на мнении любого ОДНОГО человека), а воспользоваться для этих целей мнением компьютерного сообщества.

Хорошей практикой в подборе компьютерной литературы является рассмотрение «перекрестных ссылок» литературных источников. Например, если вы возьмете любую книгу, так или иначе связанную с объектно-ориентированным анализом и проектированием, то в перечне литературы вы несомненно найдете труды Бертрана Мейера, Гради Буча, упоминание книги Банды Четырех (GoF) и, наверняка, Рефакторинг Мартина Фаулера. Такую же картину вы можете наблюдать и пролистывая книги по С++, .Net, базам данных, управлению проектами или любой другой области. Кроме того, многие авторы в перечне литературы приводят не просто голый список, а список с небольшими комментариями, по которым легче судить, какая книга является однодневкой, а какая классической.

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

С++

1. Бьерн Страуструп. Язык программирования С++. Специальное издание. Бином, Невский диалект, 2008

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

Рецензия Купить в Озоне

2. Бьерн Страуструп. Дизайн и эволюция языка C++. ДМК Пресс, Питер, 2006

Язык С++ является таким, каким он есть со всеми его достоинствами и недостатками. Но прежде чем говорить о тех или иных архитектурных вопросах, стоит посмотреть на то, в каких условиях находились его авторы и почему они принимали те или иные решения. В этой книге рассказывается именно об этом: для чего были введены ссылки, какие силы двигали командой разработчиков языка при реализации первых шаблонов, почему библиотека ввода/вывода такая, какая она есть и так далее. Все эти сведения помогают несколько мягче относится к недостаткам языка и с еще большим уважениям относится к его достоинствам.

Рецензия Купить в Озоне

3. Скотт Мейерс. Эффективное использование C++. 55 верных советов улучшить структуру и код ваших программ. 3-е издание. ДМК Пресс, 2006

Рецензия Купить в Озоне

4. Скотт Мейерс. Эффективное использование С++. 35 новых способов улучшить стиль программирования. Питер, 2006

Рецензия Купить в Озоне

5. Скотт Мейерс. Эффективное использование STL. Питер, 2002

Рецензия Купить в Озоне

Все три книги Скотта Мейерса относятся к категории «для продолжающих» и будут полезны людям уже знакомым с С++, но желающим поднять свои знания на следующий уровень. Книги уже давно стали классикой в своей области и являются родоначальниками серии «Effective programming», главным редактором которой является Скотт Мейерс.

6. Герб Саттер. Решение сложных задач на C++. Вильямс, 2008

Рецензия Купить на Озоне

7. Герб Саттер. Новые сложные задачи на C++. Вильямс, 2005

Рецензия Купить на Озоне

Книги Герба Саттера по праву считаются лучшими в области «продвинутых» книг по языку С++. В них рассматриваются интересные задачи и не менее интересные решения, исследуются темные углы языка С++, включая тему безопасности исключений, которая является весьма сложной и наиболее любимой автором (не зря первые две книги автора названы “Exceptional C++” и “More Exceptional C++”). Главы этих книг доступны на сайте автора (http://gotw.ca), кроме того на сайте Герба можно найти множество статей серии Effective Concurrency, которые уже в ближайшее время выйдут в виде новой книги.

8. Андрей Александреску. Современное проектирование на С++. Вильямс, 2004

В своей книге Александреску показывает, как можно реализовать основные шаблоны проектирования, описанные в книге «банды четырех», с помощью современного компилятора С++. Книга требует серьезной подготовки как в области шаблонов проектирования (design patterns), так и шаблонов С++ (C++ templates), поэтому я бы рекомендовал ее к прочтению после тщательного изучения книги «банды четырех» и книги Джосаттиса и Вандервурда по шаблонам С++.

Рецензия Купить на Озоне

9. Герб Саттер и Андрей Александреску. Стандарты программирования на С++. Вильямс, 2008

Книга представляет собой концентрацию опыта, накопленного авторами и компьютерным сообществом в области программирования на С++. Ее можно рассматривать как краткую версию «продвинутых» книг по языку программирования С++, ставших такими популярными в последнее время.

Рецензия Купить на Озоне

10. Дэвид Вандевурд, Николай М. Джосаттис. Шаблоны C++. Справочник разработчика. Вильямс, 2008

Книга представляет собой наиболее полное руководство по шаблона С++, начиная от простых шаблонов функций и классов, заканчивая метапрограммированием и определением фундаментальных типов во время компиляции. Она прекрасно дополняет книгу Александреску «Современное проектирование», а точнее позволяет понять и реализовать самостоятельно все то, о чем пишет Андреи в своей книге.

Рецензия Купить на Озоне

Java

1. Bruce Eckel. Thinking in Java, 4th Edition. Prentice Hall Ptr, 2006

Книга Брюса Эккеля является, безусловно, лучшим учебником по языку программирования Java с введением в объектно-ориентированное программирование и шаблоны проектирования. Автор обладает отличным стилем изложения, приводит интересные примеры и не стесняется критики разработчиков языка. В 2009-м году вышла на русский язык под названием «Философия Java», отличительной особенностью русскоязычного варианта является отсутствие пяти глав: Strings, Container In Depth, Enumerated Types, Annotations и Graphic User Interface. Поэтому вопрос о том, какой вариант выбирать остается открытым.

Купить на Озоне

2. Кей Хорстманн, Гари Корнелл. Java 2. Библиотека профессионала. Том 1. Основы. 8-е издание. Вильямс, 2008

Купить на Озоне

3. Кей Хорстманн, Гари Корнелл. Java 2. Библиотека профессионала.Том 2. Тонкости программирования. 8-е издание. Вильямс, 2008

Купить на Озоне

Наиболее фундаментальный труд по языку Java.

4. Joshua Bloch. Effective Java, 2nd Edition. Prentice Hall, 2008

Книга Джошуа Блоха занимает то же положение на полке Java программиста, что и книги Скотта Мейерса и Герба Саттера на полке С++ программиста. Эта книга содержит множество приемов и идиом и будет полезна каждому, кто всерьез занимается этим замечательным языком.

Купить на Amazon

5. Brian Goetz et al. Java Concurrency in Practice.

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

Рецензия Купить на Озоне

.Net, C#

1. Джеффри Рихтер. CLR via C#. Питер, Русская редакция, 2007

Рецензия Купить на Озоне

2. Jeffrey Richter. CLR via C#. 3d Edition. Microsoft Press, 2010

Книга уже давно стала классикой в области программирования на платформе .Net. Именно она является первой книгой, на которую необходимо обратить внимание каждому разработчику, который рассчитывает использовать платформу .Net в своей профессиональной деятельности. Третье издание книги подверглось существенным переработкам, в результате чего в ней отражены новшества C# 3.0 и C# 4.0, а также содержит новую часть, полностью посвященную вопросам многопоточности.

Купить на Amazon

3. Дон Бокс, Крис Селлз. Основы платформы .NET. Том 1. Общеязыковая исполняющая среда. Вильямс, 2003

При своем небольшом объеме (всего 288 страниц) и почтенном возрасте (оригинал вышел в 2002 году) книга остается ценным экспонатом в библиотеке .Net программиста. Поскольку авторы описывают исключительно фундаментальные концепции платформы, причем делают это с невероятным талантом, совмещая доступность изложения и глубину, поэтому эта книга остается, и будет оставаться актуальной на протяжении всего времени жизни платформы .Net.

Купить на Озоне

4. Krzysztof Cwalina, Brad Abrams. Framework Design Guidelines 2nd Edition. Addison-Wesley Professional, 2008

Разработка качественных программных систем является весьма сложной задачей, а разработка качественных библиотек (особенно framework-ов) является поистине вершиной мастерства архитекторов и разработчиков. Сложность здесь кроется в специфике принимаемых решений, ведь акцент серьезно смещается в сторону простоты и удобства использования, расширяемости и надежности. Но хотя эта тема является центральной, книга будет также весьма полезна и простым разработчикам, ведь знание ключевых идиом языка является совершенно необходимым, когда команда смотрит хотя бы немного дальше своего носа, и заботится не только о написании кода, но и о его последующем сопровождении.

Рецензия Купить на Amazon

5. Bill Wagner. Effective C# (Covers C# 4.0): 50 Specific Ways to Improve Your C#. 2nd Edition. Addison-Wesley Professional, 2010

Купить на Amazon

6. Bill Wagner. More Effective C#: 50 Specific Ways to Improve Your C#. Addison-Wesley Professional, 2008

Тема эффективности использования стала настолько популярной, что подобная литература появляется по большинству языков программирования и многим технологиям. Язык программирования C# не является исключением. Представителем серии «эффективного программирования» на языке C# являются эти две книги Била Вагнера. Первая книга вышла еще в 2004-м году и посвящена C# 1.0 и рассматриваются самые разные вопросы, начиная от различий между классами и структурами, заканчивая важностью строгой гарантией исключений и проблемами взаимодействия управляемого и неуправляемого кода. Вторая книга хотя и вышла незадолго до официального выхода C# 3.0, но уже отражает всю специфику этой версии языка и платформы. В книге рассматриваются особенности работы с обобщениями (generics), многопоточностью (в том числе и при работе с пользовательским интерфейсом), новые возможности языка C# 3.0 и отдельно рассматриваются вопросы, связанные с LINQ. В марте 2010 года вышло второе, переработанное издание первой книги, в которой отражены изменения C# 4.0, включая такие новшества как PLINQ и тип Dynamic (которому посвящена целая глава).

ООП, Шаблоны проектирования

1. Бертран Мейер. Объектно-ориентированное конструирование программных систем, 2-е издание. Русская редакция, 2005

Книга, которую многие по своей фундаментальности в области объектно-ориентированного программирования сравнивают с творением Дональда Кнута (причем совершенно без преувеличения) в области алгоритмов и структур данных. Эта книга является наиболее фундаментальным трудом по объектной парадигме, когда-либо выходивших на русском или на английском языках. Книга охватывает широкий круг вопросов, начиная от вопросов наследование, инкапсуляция, модульности, повторного использования, заканчивая автоматическим управлением памятью, шаблонами проектирования и проектированием по контракту (который только спустя два десятилетия начинает набирать обороты в mainstream языках и технологиях).

Купить на Озоне

2. Гради Буч. Объектно-ориентированный анализ и проектирование, 3-е издание. Вильямс, 2008

Еще одна классическая книга по объектно-ориентированному программированию, но в отличие от книги Бертрана Мейера имеет менее формальный и более описательный характер. В книге потрясающе описана проблема сложности ПО, описаны роли абстракции и иерархии, изложено сравнение наиболее популярные на сегодняшний день методологии разработки и многое другое.

Рецензия Купить на Озоне

3. Эрик Гамма, Ральф Джонсон, Ричард Хелм, Джон Влиссидес. Приемы объектно-ориентированного проектирования. Паттерны проектирования. Питер, 2007

Это та самая, знаменитая книга «банды четырех», после выхода которой началось стремительное развитие идеи шаблонов проектирования в мире разработки ПО. После ее выхода идея шаблонов начала распространяться и развиваться, и сегодня идеи шаблонов применяется не только в контексте проектирования, а и практически в каждой области разработки программного обеспечения.

Рецензия Купить на Озоне

4. Мартин Фаулер. Рефакторинг. Улучшение существующего кода. Символ-Плюс, 2008

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

Рецензия Купить на Озоне

Управление проектами

1. Фредерик Брукс. Мифический человеко-месяц или Как создаются программные системы, 2-е издание. Символ-Плюс, 2006

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

Рецензия Купить на Озоне

2. Том ДеМарко и Тимоти Листер. Человеческий фактор. Успешные проекты и команды. 2-е издание. Символ-Плюс, 2009

Книга «Человеческий фактор» является отличным доказательством того, что, несмотря на стремительное развитие технологий, человеческий фактор является одной из наиболее сложных проблем при построении программных систем. Фредерик Брукс (читая лекции своим студентам) выделил следующие фундаментальные концепции книги: 1) важность кристаллизации команд (team jelling) и понятие травли команд (teamicide); 2) важность рабочего пространства; 3) акцент на «качестве сотрудников»; 4) влияние (негативное) на переезд крупного программного проекта с одного места (географического) в другое. Этой книге уготована долгая жизнь по той же причине, «почему рассказы Гомера пережили тысячи лет: эти рассказы о людях, и они также верны сегодня, как и тысячу лет назад».

Рецензия Купить на Озоне

3. Эдвард Йордон. Путь камикадзе. 2-е издание. Лори, 2008

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

Рецензия Купить на Озоне

WinAPI/WinSocks

1. Джеффри Рихтер, Кристоф Назарр. Windows via C/C++. 5-е издание. Питер, Русская Редакция, 2009

Это классическая и однозначно самая лучшая книга по программированию в Microsoft Windows. Если вам нужно понять что такое объекты ядра, потоки, принципы синхронизации потоков, таймера, асинхронный ввод-вывод, архитектура памяти, структурная обработка исключений, DLL и все что с ними связано и многое другое, то эта книга именно то, что нужно.

Рецензия Купить на Озоне

2. Джеффри Рихтер, Джейсон Кларк. Программирование серверных приложений для Microsoft Windows 2000. Питер, Русская Редакция, 2001

Прекрасное дополнение к предыдущей книги Джеффри Рихтера для разработчиков серверных приложений. Хотя эта книга и не является столь популярной, как предыдущая (в связи со своей более узкой направленностью), она также отличается глубиной изложения, которую весьма сложно найти в каком-либо другом источнике. Поэтому если вам интересна тема разработки серверных приложений – книга будет очень полезной.

Рецензия Купить на Озоне

3. Энтони Джонс, Джим Оланд. Программирование в сетях Microsoft Windows. Питер, Русская Редакция, 2002

Наиболее полное руководство по разработке сетевых приложений с использованием WinAPI. Если вдруг понадобиться поработать с NetBIOS, именованными каналами, реализовать асинхронный ввод-вывод с помощью портов завершения, настроить качество обслуживания или воспользоваться простыми (Raw) сокетами, эта книга будет как нельзя кстати.

Купить на Озоне

COM

1. Дон Бокс. Сущность технологии COM, Питер

Если вы все же каким-то образом связаны с этой замечательной технологией, «с маршалингом, моникерами, распределенными потоками, агрегатами и миллионом других вещей, которые понимал только Дон Бокс, и даже Дон Бокс больше не может на это смотреть», то эта книга должна быть первой в вашем списке. А если серьезно, то это лучшая и единственная книга по технологии COM, которая поможет вам понять эту технологию.

Рецензия Купить на Озоне

2. Кристофер Таваре, Кирк Фертитта, Брент Ректор, Крис Селлз. ATL 8. Внутренняя структура и применение. 2-е издание. Вильямс, 2007

Лучшая и единственная (ну, не совсем единственная, но остальные книги выходили не позднее 2000 года) книга по библиотеке ATL.

Купить на Озоне

Алгоритмы

1. Дональд Э. Кнут. Искусство программирования. Том 1. Основные алгоритмы. 3-е издание. Вильямс, 2008

Купить на Озоне

2. Дональд Э. Кнут. Искусство программирования. Том 2. Получисленные алгоритмы. 3-е издание. Вильямс, 2005

Купить на Озоне

3. Дональд Э. Кнут. Искусство программирования. Том 3. Сортировка и поиск. 2-е издание. Вильямс, 2008

Купить на Озоне

4. Дональд Э. Кнут. Искусство программирования. Том 1. Выпуск 1. MMIX - RISC-компьютер для нового тысячелетия. Вильямс, 2007

Купить на Озоне

5. Дональд Э. Кнут. Искусство программирования. Том 4. Выпуск 2. Генерация всех кортежей и перестановок. Вильямс, 2008

Купить на Озоне

6. Дональд Э. Кнут. Искусство программирования. Том 4. Выпуск 3. Генерация всех сочетаний и разбиений. Вильямс, 2007

Купить на Озоне

7. Дональд Э. Кнут. Искусство программирования. Том 4. Выпуск 4. Генерация всех деревьев. История комбинаторной генерации. Вильямс, 2007

Купить на Озоне

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

8. Генри C. Уоррен, мл. Алгоритмические трюки для программистов

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

Рецензия Купить на Озоне

Общие вопросы программирования

1. Эндрю Хант и Дэвид Томас. Программист-прагматик. Путь от подмастерья к мастеру. Лори, 2009

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

Рецензия Купить на Озоне

2. Джон Бентли. Жемчужины программирования, 2-е издание. Вильямс, 2007

Нельзя назвать эту книгу простой, поскольку темы, рассматриваемые в книге, таковыми не являются, но стиль изложения материала и перечень лирических отступлений существенно упрощает восприятие (книга больше напоминают рубрику «Занимательное программирование», и является одной из самых известных книг в своей области). Несмотря на это, темы, затронутые в книги, являются исключительно серьезными. Здесь и общие вопросы программирования, и алгоритмы, и структуры данных, и вопросы оптимизации и отладки, и умение делать предварительные оценки, и много чего еще. Только при чтении книги нужно следовать совету автора и не спешить, а тщательно продумывать и прорабатывать весь материал, вот тогда от книги будет максимальная отдача.

Рецензия Купить на Озоне

3. Стив Макконнел. Совершенный код. 2-е издание. Питер, 2007

По статистике над одним проектом в среднем работает 10 поколений разработчиков, а это значит, что большая часть жизненного цикла ПО составляет его поддержка и сопровождение. Из чего можно сделать простой вывод, что за _чтением_ программы проводится гораздо больше временем, чем за ее _написанием_, а это, в свою очередь значит, что качество кода играет очень важную роль. В этом вопросе книга Стива Макконнелла (как и многие книги в этом списке) является лучшей в своей области. В книге рассматривается широкий спектр вопросов, так или иначе связанных с кодированием, начиная от правил именования переменных (которым выделены 52 (!) страницы), заканчивая рефакторингом и рекомендациям по оптимизации.

Рецензия Купить на Озоне

4. Джеффри Фриддл. Регулярные выражения. 2-е издание. Символ-Плюс, 2008

Наиболее фундаментальный труд по теме регулярных выражений, который когда-либо выходил в свет (все же книга посвящена только этой теме и содержит 608 страниц). Книга содержит описание работы трех типов механизмов регулярных выражений, содержит примеры оптимизации и особенности применения в различных языках программирования и средах.

Купить на Озоне

Базы данных

1. К. Дж. Дейт. Введение в системы баз данных. 8-е издание. Вильямс, 2006

Книга прекрасно отражает, насколько обширной является тема систем управления базами данных, она отличается немалым объемом (более 1300 страниц), а перечень литературы к каждой из глав дает понять, что это только верхушка айсберга. Книга не описывает ни одну из существующих СУБД, а сосредоточена прежде всего на реляционной модели (хотя довольно часто проскакивает критика о несоответствии реляционной модели в существующих реализациях) и является наиболее фундаментальным трудом в своей области.

Купить на Озоне

2. Джеффри Ульман и др. Системы баз данных полный курс, Вильямс, 2004

Еще одна классическая книга из области систем управления базами данных. Книга также обладает немалым объемом (1088 страниц), покрывает большинство наиболее актуальных тем этой области, но является более практичной, нежели книга Криса Дейта. Книга также не привязывается к конкретной СУБД и будет полезна всем читателям, которые интересуются этой тематикой.

Купить на Озоне


Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.
    Сообщений 27    Оценка 212 [+2/-1]         Оценить