Какая самая лучшая книга по программированию C++ для опытного программиста?
Какую современную книгу вы бы посоветовали обязательно прочитать каждому программисту на С++? Язык не важно - английский/русский.
Пример - открыл недавно известную многим книгу "Совершенный код" - оказался банальный ликбез, дикий уклон в бюрократию, несколько интересных моментов и 90% воды. Просто пролистывал. Вот не такую.
Страуструп это классика, конечно прочитан... Но лично для меня настоящей библией, с моей спецификой, стала книга UNIX Network Programming в двух томах. Потрясающая книга. Купил ее в год выхода и зачитал до дыр - до сих пор на полке стоит на меня смотрит каждый день. Правда, там C.
Страуструп - классика.
А вообще, весьма интересные методики можно найти в книге "Библиотека С++ программиста" - Джефф Элджер. Эту книжку Mail.ru на своих курсах всем советует.
"С++. Священные знания" Стивена Дьюхерста - одна из самых лучших книг по плюсам.
Автор кратко и со знанием дела рассматривает в каждой главе один из аспектов C++.
Книга написана чудесным языком - понятно и без лишнего текста.
А где вы читали Макконелла? Кто вам ее посоветовал? Ерунда ведь книга. Я программирование на C начал изучать на курсах в 1994 году, а программировать начал еще раньше. Так что я более-менее опытный программист уже) К слову, эту книгу также не читал и мой друг - призер международных олимпиад по программированию. Не знаю что в ней такого что ее оказывается все читать должны.
Андрей: Дело в том, что разработка программного обеспечения -- это в меньшей степени знание языка или же решение олимпиадных задач.
Книга Макконелла хороша тем, что это введение в разработку ПО, которое затрагивает множество тем и позволяет систематизировать знания. Рассмотрены вопросы качества кода, ОО-декомпозиции, нэйминга и комментариев, организации кода, совместной работы, тестирования, поддержки, оптимизации и многое-многое другое. Именно всё это и есть разработка ПО.
Опытность программиста измеряется качеством созданных продуктов. Можно хоть 20 лет просидеть и быть по факту джуниором, а можно и за пару лет очень и очень многого добиться. В каких проектах вы участвовали, за какие части отвечали, какими успехами можете похвастаться, как быстро решаете и проблемы и умеете ли оценивать сложность задач, создавать гибкую архитектуру и т.п.? Именно это всё делает профессионала профессионалом, а не время просиженное за компом. Видел я, что творят в коде "опытные программисты" с 10-15 годами опыта формального опыта, но без фактических знаний... И врагу не пожелаю это ревьюить и поддерживать.
В плане же олимпиадников... Честно, предпочел бы работать в одной команде с человеком, который знает и умеет использовать например GRASP, SOLID, DDD, (B)TDD и пишет поддерживаемый код, чем с призёром олимпиад, который не имеет представления о том что я написал выше. Безусловно, знание алгоритмов -- это плюс, умение решать проблемы и живой ум -- это тоже плюс, но это далеко не всё.