В книге Скотта Мейерса "Эффективный и современный С++: 42 рекомендации по использованию C++11 и C++14" отражен бесценный опыт ее автора как программиста на C++. Новые возможности этого языка программирования, появившиеся в стандартах C++11 и C++14 — это не просто новые ключевые слова или функции, это появление совершенно новых концепций, так что для их эффективного использования недостаточно просто узнать об их существовании, и программировать на C++11, как на несколько улучшенном и расширенном функционально C++98.
Когда происходят такие глобальные изменения в языке программирования, их изучению следует посвятить определенное время, написать сотни, а еще лучше — тысячи строк кода, и столкнуться с массой проблем, кажущихся тем более странными и непонятными, чем большим опытом работы с C++98 вы обладаете. К программированию в полной мере относится фраза Евклида о том, что в геометрии нет царских путей. Но пройти путь изучения и освоения нового языка программирования вам может помочь проводник, показывающий наиболее интересные места и предупреждающий о ямах и ухабах. Таким проводником может послужить книга Скотта Мейерса. С ней вы не заблудитесь и не забредете в дебри, из которых будете долго и трудно выбираться с помощью отладчика.
При этом книга не просто научит вас использовать новые возможности языка — она научит использовать их эффективно. Но и это не все — книга не просто учит эффективному применению C++, но еще и рассказывает, почему ту или иную задачу следует решать именно так.Эта книга заставляет вас не просто заучить правила — она заставляет думать.
И хотя эта книга в первую очередь предназначена для энтузиастов и профессионалов, она достойна места на полке любого программиста — как профессионала, так и зеленого новичка.
Освоение C++11 и C++14 — это больше, чем просто ознакомление с вводимыми этими стандартами возможностями (например, объявлениями типов auto, семантикой перемещения, лямбда-выражениями или поддержкой многопоточности). Вопрос в том, как использовать их эффективно — так, чтобы создаваемые программы были корректны, эффективны и переносимы, а также чтобы их легко можно было сопровождать.
Именно этим вопросам и посвящена данная книга, описывающая создание по-настоящему хорошего программного обеспечения с использованием C++11 и C++14 — т.е. с использованием современного C++.
В книге рассматриваются следующие темы
- Преимущества и недостатки инициализации с помощью фигурных скобок, спецификации noexcept, прямой передачи и функций make интеллектуальных указателей
- Связь между std::move, std::forward, rvalue-ссылками и универсальными ссылками
- Методы написания понятных, корректных, эффективных лямбда-выражений
- Чем std::atomic отличается от volatile, как они используются и как соотносятся с API параллельных вычислений C++
- Какие из лучших методов "старого" программирования на C++ (т.е. C++98) должны быть пересмотрены при работе с современным C++
- Эффективный и современный C++, следуя принципам более ранних книг Скотта Мейерса, охватывает совершенно новый материал. Эта книга достойна занять свое место на полке каждого программиста на современном C++.
Об авторе
Скотт Мейерс — один из ведущих мировых экспертов по C++, широко востребованный как инструктор, консультант и докладчик на разных конференциях. Более чем 20 лет книги Скотта Мейерса серии Эффективный C++ являются критерием уровня книг по программированию на C++. Понятное пояснение сложного технического материала принесло ему всемирную известность. Он всегда самый желанный гость на международных конференциях, а его услуги консультанта широко востребованы во всем мире.
Скотт Мейерс имеет степень доктора философии (Ph.D.) в области компьютерных наук в Университете Брауна (Brown University).
Отзывы о книге
"После изучения основ C++ я перешел к изучению того, как применять C++ в промышленном программировании, с помощью серии книг Скотта Мейерса Эффективный C++. Эффективный и современный C++ — наиболее важная из книг серии, предлагающая ключевые рекомендации, стили и идиомы, позволяющие эффективно использовать современный C++. Вы еще не купили эту книгу? Сделайте это прямо сейчас."
— Герб Саттер,глава Комитета ISO по стандартизации C++, специалист в области архитектуры программного обеспечения на C++ в Microsoft.
Вас интересует C++? Современный C++ (т.е. C++11/C++14) — гораздо большее, чем простое внесение косметических изменений в старый стандарт. Учитывая новые возможности языка, это скорее его переосмысление. Вам нужна помощь в его освоении? Тогда перед вами именно та книга, которую вы ищете. Что касается C++, то Скотт Мейерс был и остается синонимом точности, качества и удовольствия от чтения.
— Герхард Крейцер (Gerhard Kreuzer), Инженер-исследователь в Siemens AG.
Трудно получить достаточный опыт и стать экспертом. Не менее трудно стать настоящим учителем, способным просто и ясно донести сложный материал до ученика. Если вы читаете эту книгу, то вы знаете человека, который объединяет оба эти качества. Книга Эффективный и современный C++ написана непревзойденным техническим писателем, который умеет излагать сложные взаимосвязанные темы ясно и понятно, блестящим литературным стилем. При этом вряд ли вам удастся найти в книге хотя бы одну техническую ошибку.
— Андрей Александреску (Andrei Alexandrescu), доктор философии, исследователь, автор книги Современное проектирование на C++.
Когда человек с более чем двадцатилетним опытом работы с C++ берется рассказать, как получить максимальную отдачу от современного C++ (рассказывая как о лучших подходах, так и о возможных ловушках, которых следует избегать) — я настоятельно рекомендую внимательно прочесть его книгу! Я определенно узнал из нее много нового!
— Невин Либер (Nevin Liber), cтарший программист в DRW Trading Group.
Бьярне Страуструп — создатель C++ — сказал: "C++11 выглядит как новый язык программирования". Книга Эффективный и современный C++ заставляет нас разделить это впечатление, поясняя, как использовать новые возможности и идиомы C++11 и C++14 в повседневной практике. Еще одна талантливая книга Скотта Мейерса.
— Кассио Нери (Cassio Neri), аналитик в Lloyds Banking Group.
Скотт умеет добраться до самой сути любой технической проблемы. Книги серии Эффективный C++ способствовали улучшению стиля кодирования предыдущего поколения программистов C++; новая книга делает то же самое с программистами на современном C++.
— Роджер Орр (Roger Orr), OR/2 Limited, член Комитета ISO по стандартизации C++.
Эффективный и современный C++ — отличный инструмент для повышения вашего уровня как программиста на современном C++. Книга не только учит тому, как, когда и где эффективно использовать современный C++, но и почему делать это именно так. Вне всякого сомнения, эта книга Скотта Мейерса даст программистам гораздо лучшее понимание языка.
— Барт Вандвустин (Bart Vandewoestyne), инженер, исследователь и просто энтузиаст C++.
Я люблю C++, он десятилетиями был моей рабочей лошадкой. А с новыми копытами эта лошадка стала еще сильнее и привлекательнее, чем я мог ранее себе представить. Но при больших изменениях всегда встает вопрос — "когда и как пользоваться всем этим богатством?" Как и всегда, книга Скотта Мейерса компетентно и исчерпывающе отвечает на поставленный вопрос.
— Дамьен Уоткинс (Damien Watkins), руководитель группы программной инженерии в CSIRO.
Отличное чтение для перехода к современному C++ — новинки языка C++11/14 описаны наряду с C++98, разделение книги на разделы позволяет легко найти интересующую тему, а в конце каждого раздела приведены итоговые рекомендации. Книга интересна и полезна для программистов на C++ всех уровней.
— Рейчел Ченг (Rachel Cheng), F5 Networks.
Если вы переходите с C++98/03 на C++11/14, вам нужна точная практичная информация, которую вам предоставляет Скотт Мейерс в книге Эффективный и современный C++. Если вы уже пишете код на C++11, то, вероятно, сталкивались с проблемами при применении новых возможностей, которые легко решаются чтением книги Скотта. В любом случае можно уверенно утверждать, что время, затраченное на чтение этой книги, не пропадет впустую.
— Роб Стюарт (Rob Stewart), член Boost Steering Committee member.
Оглавление
Введение 15
Глава 1. Вывод типов 23
Глава 2. Объявление auto 49
Глава 3. Переход к современному C++ 61
Глава 4. Интеллектуальные указатели 125
Глава 5. Rvalue-ссылки, семантика перемещений
и прямая передача 165
Глава 6. Лямбда-выражения 221
Глава 7. Параллельные вычисления 245
Глава 8. Тонкости 281
Предметный указатель 301
Читать полностью ⇓