среда, декабря 27, 2006

Еще немного хороших книг по C++

Это продолжение рассказа о книгах по C++. Начало можно найти тут: Хорошие книги по C++

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





"Стандарты программирования на С++", Герб Саттер, Андрей Александреску.
Название оригинала: C++ Coding Standards: 101 Rules, Guidelines and Best Practices

"Стандарты программирования на С++" на Ozon.ru




"Эфективное програмирование на С++", Эндрю Кениг, Барбара Э. Му.
Название оригинала: Accelerated C++

"Эфективное програмирование на С++" на Ozon.ru




"Шаблоны C++. Справочник разработчика", Дэвид Вандевурд, Николаи М. Джосаттис.
Название оригинала: C++ Templates. The Complete Guide
Слышала весьма лестные отзывы. Упоминается как самая полная книга по шаблонам.
"Шаблоны C++. Справочник разработчика" на Ozon.ru


И еще пара книг, которые мне не удалось найти в русском переводе.
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond
The Annotated C++ Reference Manual - хорошая, но несколько устаревшая книга

13 коммент.:

Анонимный комментирует...

По поводу "The annotated C++ Reference manual". Был в своё время перевод на русский:
М. Эллис, Б. Страуструп. Справочное руководство по языку программирования С++ с комментариями. М.: Мир. 1992

Книга действительно замечательная и вот тут:
http://kak-tot.narod.ru/ru/book-otd_bs2e.htm
можно эту книжку на русском скачать.

Подольский Михаил комментирует...

http://kak-tot.narod.ru/ru/book-otd_bs2e.htm

содержит не ARM (annotated reference manual), а полный перевод второго издания книги Страуструпа "The C++ Programming Lanuage". В конце этой книги было тоже приведено справочное руководство (но без комментариев) по С++.

Qbit комментирует...

Первые три книги читал, действительно Отличные Книги.
"Стандарты программирования на C++" — моя любимая книга по C++, даром, что самая тонкая на полке.
Требование прочетния "Стандартов" имхо должно быть необходимым условием при приёме на работу. Книгу Кёнига-Му, думаю, Алёне читать уже поздно :) Хоть эта книга уровня beginners, но очень хороша, жалею, что начинал изучение C++ со всяких дейтелов и шилдтов, а не с "Accelerated C++".
"Шаблоны C++" — must have всем, кто усиленно применяет шаблоны. Хоть она и заявлена как справочник, книга является скорее учебником, наиболее полно освещающем тему. Рекомендуется читать до попытки открыть Александреску "Modern C++ Design".
Книгу Абрахамса-Гуртового сейчас читаю. Вставляет.
Что касается Страуструпа — не люблю его. Самое интересное его произведение (и то с натяжкой) — это D&EC++, а TC++PL — стоит на полке исключительно понту ради. ARM не читал. И, скорее всего, не стану, манера излагать мысли не нравится. Но это имхо.

Alena комментирует...

Рекомендуется читать до попытки открыть Александреску "Modern C++ Design".

Угу, я начала читать "Шаблоны С++" и уже успела погоревать, что взялась за Александреску до нее. Очень многое было бы понятнее.

Qbit комментирует...

Ну, горевать особо не о чем, всё равно перечитывать :) Не знаю правда, как у вас, но у меня с первого раза понимать книги маньяков вроде Александреску не получается, нужны 2—3 итерации.

Вместо "/* должно стоять "до" курсивом, не знаю, что за глюк с разметкой (руками?)

Анонимный комментирует...

Если хотите стать толковыми программистами, или около того, то обязательно прочтите книгу: Верёвка достаточной длины... чтобы выстрелить сабе в ногу, Ален И. Голуб. В ней расмотрены более 100 правил программирование на С++. В бумажном обрамлении гнигу эту помоему уже не найдёшь, но в электронном виде её хоть отбавляй.

Alena комментирует...

Ну, горевать особо не о чем, всё равно перечитывать :) Не знаю правда, как у вас, но у меня с первого раза понимать книги маньяков вроде Александреску не получается, нужны 2—3 итерации.

Перечитывать придется, это верно. :-)

Qbit комментирует...

Прочитать Голуба? Неужели, чтобы стать толковым программистом нужно заплатить столь ужасную цену? :)

Советы Голуба:

"61. В цикле со счётчиком его значение должно по возможности уменьшаться."

"90.1 Если проект не ориентирован на объекты, то используйте Си [вместо C++]."

"135. Суперобложки на Си++ для существующих интерфейсов редко хорошо работают."

Да, я это читал :( Слава богу, в бумажном виде Голуба уже не найдёшь :)

Примерно такое же впечатление оставила книга Кернигана-Пайка "Практика программирования". Чуть лучшее впечатления произвёл МакКоннелл "Code Complete". А вообще — ну их, этих философов. Всяк на свой лад советы дают.

Alena комментирует...

Чуть лучшее впечатления произвёл МакКоннелл "Code Complete".

А мне эта книга понравилась. Хотя местами нудновата.

Анонимный комментирует...

"Эфективное програмирование на С++", Эндрю Кениг, Барбара Э. Му.
очень рад что приобрел эту книжку. сейчас читаю её запоем!

Анонимный комментирует...

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

Andrey комментирует...

Leopold

Здесь по моему не хватает Мейерса с его "Эффективное использование C++. 55 верных советов улучшить структуру и код ваших программ"

Effective C++: 55 Specific Ways to Improve Your Programs and Designs

К примеру:
Пока не прочитал его, даже не задумывался о значении аргументов по умолчанию виртуальной функции базового класса при вызове переопределённой функции наследника. :) Читал его я после Бьярна, и Мейерс объяснил мне "популярно" когда надо писать typedef typename T::SomeType SomeType; а когда typedef T::SomeFunc SomeFunc; в шаблонах.

Анонимный комментирует...

Здесь тут Голуба упоминали. Ну что сказать. Некоторые советы из «Верёвки» и впрямь по нынешним временам могут показаться странными. Большинство всё же вполне вменяемые и полезные. Не стоит недооценивать автора.

Совет #61, про циклы. Это было актуально в 70-80-е, когда компиляторы Си слабо оптимизировали циклы, если вообще оптимизировали, а скорость работы подсистемы памяти примерно равнялась скорости работы процессора. Смысл в том, что на машинном уровне сравнивать переменную цикла с 0 «проще», чем с константой. Константу нужно хранить в регистре или читать из памяти на каждой итерации, а проверка на ноль происходит, так сказать, имплицитно. :) Сейчас такие «оптимизации» лучше предоставить компилятору.

Есть у Алена Голуба и другая весьма достойная книжка, «Compiler Design in C. 1990» называется, - разработка компилятора Си на себе самом :). Очень неплохо изложена классическая теория компиляции. Всё подкреплено примерами кода, все эти NFA to DFA, DFA minimization etc, так что если вам что-то мутно в теории, можно уразуметь из кода. В книге содержатся исходники как самого б.м. полноценного Си-компайлера, так и клонов Lex’а и Yacc’а.

Сам Голуб по сию пору читает курсы Си++ и ООП в Калифорнийском университете в Беркли.