12 книг, которые должен прочитать каждый программист

Программирование – та сфера, в которой практика значит куда больше, чем теория, но знания лишними не бывают. Представляем подборку из 12 книг, которые должен прочитать каждый программист. Список составлен в произвольном порядке, не по значимости или простоте\сложности книг.

 

1. «Computer Science: A Very Short Introduction», Subrata Dasgupta

Серия книг «A Very Short Introduction» издаётся Оксфордским университетом с 1995 года, и в 2016 году вышла книга по информатике. Не стоит презрительно махать рукой, исходя из «общего» названия – именно в этом и заключается цель книги. Она написана экспертом для общей аудитории. Автор делает общий экскурс в тему, своеобразное «введение» (каково название, таково и содержание).

Почему же её стоит читать программистам? Во-первых, это та самая базовая теория, которую порой можно пропустить, но с которой чувствуешь себя несколько подкованнее. Во-вторых, эта та самая книга, после которой можно собраться с мыслями и по-простому рассказать несведущему товарищу, что к чему и откуда начиналось.

Книга издаётся только на английском языке. Купить её можно на Amazon.

 

2. «Искусство программирования», Дональд Кнут\ «The Art of Computer Programming»,  Donald Knuth

По соседству с достаточно «лёгкой» книгой гордо красуется монументальный труд математика и учёного в области информатики Дональда Кнута. Несмотря на достаточный возраст (а первая книга вышла в 1968 году), она по праву считается одним из главных must-read-ов в сфере программирования и должна стать настольной книгой каждого уважающего себя профессионального программиста.

За что же её так ценят? «Искусство программирования» отличает крайне глубокий подход к теме и академическое изложение. Книга обеспечивает прочную базу в программировании. Однако за всё это придется «платить» – книга не так уж легка в прочтении. Не столько из-за языка (хотя и он не прост), сколько из-за необходимости иметь определённый набор знаний в математике, ведь школьного уровня тут явно не хватит. Книга изобилует примерами и задачами, сложность которых варьируется от решаемых за 1 минуту до до сих пор нерешённых вопросов.

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

 

 

3. «Алгоритмы: построение и анализ»,  Томас Кормен, Чарльз Лейзерсон, Рональд Ривест и Клиффордом Штайн\ «Introduction to Algorithms», Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein

Книга проще и немного моложе, чем предыдущая – первое издание вышло в 1990-ом. Но от этого она не стала ни на толику хуже. Её советуют уже студентам, причём тем, кто также хорошо подкован математически. Язык несколько проще, чем в «Искусстве программирования», а примеры современнее. Книга не сколько учит программировать, сколько мыслить общо и понимать структуру алгоритмов. 

Книга доступна в русском и английском вариантах. Она  успела пережить три переиздания, каждый раз вносились исправления и дополнения.

 

4, 5 и 6. Герберт Шилдт и серия книг по С++ («С++ для начинающих. Шаг за шагом», «C++. Базовый курс», «Полный справочник по C++»)\ «C++ A Beginner's Guide: Step by Step», «C++ from the Ground Up», «C++: The Complete Reference», Herbert Schildt

Как видите, серия представляет собой постепенное увеличение сложности материала. Первая книга – самый настоящий самоучитель для начинающих – вообще не сведущим в программировании она не подходит. Её отличает простота в примерах и наглядность решений.

Пара минусов: перевод сделан не так качественно, как хотелось бы, а потому наличие ошибок и опечаток несколько омрачает общую картину. Кроме того, ошибки можно найти и в самих кодах. Однако читатели шутят, что их наличие только помогает быстрее находить собственные.

Вторая книга содержит больше основательной базы, больше примеров, сложных примеров. Базовый курс глубже рассматривает многие не затронутые в первом пособии вопросы. А вот «Полный справочник» целиком оправдывает своё название: он не сложнее «Базового курса», но содержит в себе исключительное количество именно справочных сведений, таких как библиотеки стандартных классов и функций. Однако и эта книга порой грешна на опечатки, в том числе и за счёт переводчиков.

 

7. «Приёмы объектно-ориентированного проектирования. Паттерны проектирования», Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес\ «Design Patterns: Elements of Reusable Object-Oriented Software»,  Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides.

Кто-то её хвалит, а кто-то обвиняет в старости – так или иначе, книга так называемой Банды четырёх привлекла в своё время большое внимание, и, что говорить, привлекает его до сих пор. Да, 1995 год издания для книги о паттернах (которые окончательно систематизировали в 2001—2002 гг.) – не лучший вариант, тем не менее в ней приведены шаблоны, существующие и успешно действующие и поныне. Она скорее яркий пример уже «классической» литературы, методы которой, увы, уже не применить, но для понимания знать стоит. Непростая по своей сути и языку она все же называется «ситом», которое отделяет любителей от профессионалов. Однако сильно подпортить мнение о книге может перевод – многие читатели предпочитают оригинал неудачным синонимам и откровенным ляпам русскоязычного издания.

 

8. «Совершенный код», Стив МакКоннел\ «Code Complete»,  Steve McConnell

Ещё одна книга must-have и must-read. Всё-таки больше ориентирована на начинающих программистов и разработчиков ПО, но и более опытным «заходит». Изобилует примерами, написана скорее в стиле теории с отсылками на собственный опыт и жизнь, отчего читается достаточно легко. Даст знания не только общие, но и о мелочах процесса разработки, так как здесь показан весь путь от начала до конца.

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

 

9. «Дизайн и эволюция C++», Бьёрн Страуструп\ «The Design and Evolution of C++», Bjarne Stroustrup

Книга, которая по праву заслуживает овации читателей. Она была издана в 1994 году и как практическое пособие устарела, но как книга-история, книга-пояснение, как появился С++ и как он строился, из каких частей и почему – просто незаменима. Читатели отмечают, что её стоит изучать тем, кто заинтересован в программировании не только как в работе, но и как в процессе, приносящем определённое удовлетворение. Язык, стиль, манера – всё это приятно, легко и захватывающе. И лишь одно может испортить впечатление: на этот раз не перевод, а само издание. Речь, конечно же, о русском варианте.

 

10. «Just for Fun. Рассказ нечаянного революционера», Линус Торвальдс, Дэвид Даймонд\«Just for Fun: The Story of an Accidental Revolutionary», Linus Torvalds, David Diamond

Одно из самых лёгких чтив списка, которое по достоинству оценят любители «пингвина». Написанная в соавторстве с самим создателем системы Linux Линусом Торвальдсом, она в отчасти даже забавной форме повествует о его жизни, о забитом мальчишке, истории появления Linux и забавных случаях из жизни. Всё это приправлено техническими описаниями и размышлениями о бытии. Для обывателя, не посвящённого в тонкости технической стороны, книга может показаться скучноватой, но для опытного программиста, особенно того, который «отдался» Linux-y, чтиво будет крайне занимательным.

 

11. «Рефакторинг. Улучшение существующего кода», Мартин Фаулер\  «Refactoring. Improving the Design of Existing Code», Martin Fowler

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

Однако читатели чуть ли не в один голос заявляют: книга должна быть настольной для любого серьёзного программиста. Классика, которая насыщена пусть иногда спорной, но качественной практикой. И даже если читатель будет с чём-то не согласен, он всегда сможет найти что-то, что придётся ему по душе даже сейчас, спустя столько лет после выхода книги, ведь некоторые части книги на самом деле уже неактуальны ввиду появления новых технологий.  Печалит лишь одно: всё тот же неточный перевод.  

 

12. «Пионеры программирования. Диалоги с создателями наиболее популярных языков программирования», Федерико Бьянкуцци, Шейн Уорден / «Masterminds of Programming», Federico Biancuzzi, Shane Warden

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

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

Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 3
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя dnki

Эх! Кнута в студенчестве читал. Скачал для повторного.

Аватар пользователя mike

Вбиваем в Гугле "книги, которые должен прочесть каждый программист" -- статья готова.

Теперь понятно, за что кол?angry

Редакция, проявите, наконец, уважение к пользователям: сообщайте, чем по жизни занимается автор. Иначе как ему(ей) верить? 

+1