Ежегодно выходит множество книг по программированию, начиная от описания определенных языков программирования, заканчивая восхвалением методологий, которые, якобы, должны изменить этот компьютерный мир к лучшему. Наиболее сложной задачей для читателя в этом случае является выбор из всего этого многообразия книги, на которую действительно будет не жалко потраченных усилий. На многих форумах довольно легко найти перечень рекомендуемых книг по С++, C#, ООП и чему угодно еще, которые люди относят к классике в своей области. Я же хочу собрать в одном месте книги, которые считаются классическими в различных областях компьютерной науки. При этом я не собираюсь основываться исключительно на собственном мнении (более того, я не готов основываться на мнении любого ОДНОГО человека), а воспользоваться для этих целей мнением компьютерного сообщества.
Хорошей практикой в подборе компьютерной литературы является рассмотрение «перекрестных ссылок» литературных источников. Например, если вы возьмете любую книгу, так или иначе связанную с объектно-ориентированным анализом и проектированием, то в перечне литературы вы несомненно найдете труды Бертрана Мейера, Гради Буча, упоминание книги Банды Четырех (GoF) и, наверняка, Рефакторинг Мартина Фаулера. Такую же картину вы можете наблюдать и пролистывая книги по С++, .Net, базам данных, управлению проектами или любой другой области. Кроме того, многие авторы в перечне литературы приводят не просто голый список, а список с небольшими комментариями, по которым легче судить, какая книга является однодневкой, а какая классической.
Теперь вернемся к самому перечню книг. Приведенный список, ни в коем случае не является окончательным, будет развиваться и дополняться, ведь главная его цель – собрать настоящую классику компьютерной литературы, но не абстрактную, а такую, которая бы помогла практикующему разработчику в заполнении брешей в той или иной области знаний.
Книги по С++
1. Бьерн Страуструп. Язык программирования С++. Специальное издание. Бином, Невский диалект, 2008
| Эта книга стоит первой не потому, что ее автор является по совместительству также и автором языка программирования С++, а потому что она содержит невероятную концентрацию мысли на одну строку текста. К этой книге стоит возвращаться снова и снова, и с высоты своего опыта вы будете находить все новые и новые сведения о программировании вообще и о С++ в частности. |
2. Бьерн Страуструп. Дизайн и эволюция языка C++. ДМК Пресс, Питер, 2006
3. Скотт Мейерс. Эффективное использование С++
Все три книги Скотта Мейерса относятся к категории «для продолжающих» и будут полезны людям уже знакомым с С++, но желающим поднять свои знания на следующий уровень. Книги уже давно стали классикой в своей области и являются родоначальниками серии «Effective programming», главным редактором которой является Скотт Мейерс.
4. Герб Саттер. Сложные задачи (Exceptional C++)
| 4.1. Герб Саттер. Решение сложных задач на C++. Вильямс, 2008 | |
| 4.2. Герб Саттер. Новые сложные задачи на C++. Вильямс, 2005 |
Книги Герба Саттера по праву считаются лучшими в области «продвинутых» книг по языку С++. В них рассматриваются интересные задачи и не менее интересные решения, исследуются темные углы языка С++, включая тему безопасности исключений, которая является весьма сложной и наиболее любимой автором (не зря первые две книги автора названы “Exceptional C++” и “More Exceptional C++”). Главы этих книг доступны на сайте автора (http://gotw.ca), кроме того на сайте Герба можно найти множество статей серии Effective Concurrency, которые уже в ближайшее время выйдут в виде новой книги.
5. Андрей Александреску. Современное проектирование на С++. Вильямс, 2004
6. Герб Саттер и Андрей Александреску. Стандарты программирования на С++. Вильямс, 2008
7. Дэвид Вандевурд, Николай М. Джосаттис. Шаблоны C++. Справочник разработчика. Вильямс, 2008
| Книга представляет собой наиболее полное руководство по шаблона С++, начиная от простых шаблонов функций и классов, заканчивая метапрограммированием и определением фундаментальных типов во время компиляции. Она прекрасно дополняет книгу Александреску «Современное проектирование», а точнее позволяет понять и реализовать самостоятельно все то, о чем пишет Андреи в своей книге. Рецензия |
Книги по Java
1. Bruce Eckel. Thinking in Java, 4th Edition. Prentice Hall Ptr, 2006
2. Кей Хорстманн, Гари Корнелл. Java 2. Библиотека профессионала.
| 2.1. Кей Хорстманн, Гари Корнелл. Java 2. Библиотека профессионала. Том 1. Основы. 8-е издание. Вильямс, 2008 |
| 2.2. Кей Хорстманн, Гари Корнелл. Java 2. Библиотека профессионала.Том 2. Тонкости программирования. 8-е издание. Вильямс, 2008 |
Наиболее фундаментальный труд по языку Java.
3. Joshua Bloch. Effective Java, 2nd Edition. Prentice Hall, 2008
4. Brian Goetz et al. Java Concurrency in Practice. Addison-Wesley Professional, 2006
Книги по .Net, C#
1. Джеффри Рихтер. CLR via C#
| 1.1. Джеффри Рихтер. CLR via C#. Питер, Русская редакция, 2007 | |
| 1.2. Jeffrey Richter. CLR via C#. 3d Edition. Microsoft Press, 2010 |
Эта книга уже давно стала классикой в области программирования на платформе .Net. Именно она является первой книгой, на которую необходимо обратить внимание каждому разработчику, который рассчитывает использовать платформу .Net в своей профессиональной деятельности. Третье издание книги подверглось существенным переработкам, в результате чего в ней отражены новшества C# 3.0 и C# 4.0, а также содержит новую часть, полностью посвященную вопросам многопоточности.
2. Дон Бокс, Крис Селлз. Основы платформы .NET. Том 1. Общеязыковая исполняющая среда. Вильямс, 2003
4. Bill Wagner. Effective C#
Тема эффективности использования стала настолько популярной, что подобная литература появляется по большинству языков программирования и многим технологиям. Язык программирования C# не является исключением. Представителем серии «эффективного программирования» на языке C# являются эти две книги Била Вагнера. Первая книга вышла еще в 2004-м году и посвящена C# 1.0 и рассматриваются самые разные вопросы, начиная от различий между классами и структурами, заканчивая важностью строгой гарантией исключений и проблемами взаимодействия управляемого и неуправляемого кода. Вторая книга хотя и вышла незадолго до официального выхода C# 3.0, но уже отражает всю специфику этой версии языка и платформы. В книге рассматриваются особенности работы с обобщениями (generics), многопоточностью (в том числе и при работе с пользовательским интерфейсом), новые возможности языка C# 3.0 и отдельно рассматриваются вопросы, связанные с LINQ. В марте 2010 года вышло второе, переработанное издание первой книги, в которой отражены изменения C# 4.0, включая такие новшества как PLINQ и тип Dynamic (которому посвящена целая глава).
Книги по ООП, шаблонам проектирования
1. Бертран Мейер. Объектно-ориентированное конструирование программных систем, 2-е издание. Русская редакция, 2005
2. Гради Буч. Объектно-ориентированный анализ и проектирование, 3-е издание. Вильямс, 2008
3. Эрик Гамма, Ральф Джонсон, Ричард Хелм, Джон Влиссидес. Приемы объектно-ориентированного проектирования. Паттерны проектирования. Питер, 2007
4. Мартин Фаулер. Рефакторинг. Улучшение существующего кода. Символ-Плюс, 2008
Книги по управлению проектами
1. Фредерик Брукс. Мифический человеко-месяц или Как создаются программные системы, 2-е издание. Символ-Плюс, 2006
2. Том ДеМарко и Тимоти Листер. Человеческий фактор. Успешные проекты и команды. 2-е издание. Символ-Плюс, 2009
3. Эдвард Йордон. Путь камикадзе. 2-е издание. Лори, 2008
Книги по WinAPI/WinSocks
1. Джеффри Рихтер, Кристоф Назарр. Windows via C/C++. 5-е издание. Питер, Русская Редакция, 2009
2. Джеффри Рихтер, Джейсон Кларк. Программирование серверных приложений для Microsoft Windows 2000. Питер, Русская Редакция, 2001
3. Энтони Джонс, Джим Оланд. Программирование в сетях Microsoft Windows. Питер, Русская Редакция, 2002
Книги по COM/ATL
1. Дон Бокс. Сущность технологии COM, Питер
2. Кристофер Таваре, Кирк Фертитта, Брент Ректор, Крис Селлз. ATL 8. Внутренняя структура и применение. 2-е издание. Вильямс, 2007
| Лучшая и единственная (ну, не совсем единственная, но остальные книги выходили не позднее 2000 года) книга по библиотеке ATL. |
Алгоритмы
1. Дональд Э. Кнут. Искусство программирования
Одна из наиболее известных в мире книг по программированию, Фундаментальный Труд, которому автор посвятил всю свою жизнь. И хотя сегодня современный прикладной программист не каждый день сталкивается с проблемами, решение которых он мог бы найти на страницах этой книги, это ни сколько не умаляет ее достоинств. Несмотря на стремительное развитие языков, инструментов, библиотек, каждый хороший программист периодически возвращается к ключевым темам, без знания которых невозможно стать Настоящим Программистом.
2. Генри C. Уоррен, мл. Алгоритмические трюки для программистов. Вильямс, 2007
Общие вопросы программирования
1. Эндрю Хант и Дэвид Томас. Программист-прагматик. Путь от подмастерья к мастеру. Лори, 2009
2. Джон Бентли. Жемчужины программирования, 2-е издание. Питер, 2007
3. Стив Макконнел. Совершенный код. 2-е издание. Питер, 2007
4. Джеффри Фриддл. Регулярные выражения. 3-е издание. Символ-Плюс, 2008
Базы данных
1. К. Дж. Дейт. Введение в системы баз данных. 8-е издание. Вильямс, 2006
2. Джеффри Ульман и др. Системы баз данных полный курс, Вильямс, 2004