Книга: The C++ Programming Language, 4th Edition

Новую редакцию классической книги Страуструпа я, конечно же, не мог обойти своим вниманием. Если уж автор языка C++ не сможет объяснить что там куда, зачем и как, то кто сможет? Ну, кроме Мейерса?

Автор: Bjarne Stroustrup Издатель: Addison-Wesley Издано: 2013 ISBN: 978-0-321-56384-2

Автор: Bjarne Stroustrup
Издатель: Addison-Wesley
Издано: 2013
ISBN: 978-0-321-56384-2

А Мейерс новую книгу по C++11 все никак не выпускает. Так что пришлось читать Страуструпа. Почему «пришлось»? Во-первых, я ее более раннее издание когда-то читал. А во-вторых, хоть чтение и пошло мне на пользу, но восторга как от моего любимого Мейерса я не испытал. Скучновато было. Как на мой вкус, слишком много дидактики и нравоучений для новичков — к которым, имхо, новички и не готовы еще.

По мере чтения книги я все время ловил себя на мысли, что не могу понять, для кого она написана. Ну, однозначно не для полных новичков в программировании, это и сам автор в предисловии говорит. Но я бы не советовал бы эту книгу и программистам (особенно не очень опытным программистам), которые раньше в глаза не видели C++, а тут вот решили приобщиться. Имхо, слишком сложно для них будет. Лучше начать с не столь сложной книги (Липпман подойдет), а Струструпом уже отполировать — и то лучше после незабвенного Мейерса. Книга не для новичков, не для начинающих, но и не для профи — имхо, для них многовато воды и объяснения азов дизайна.

Также я натыкался на невнятное и скомканное изложение некоторых тем. Чтобы понять, что имел в виду автор, мне понадобилось прилично погуглить. Например, о том, что такое POD (plain old data, чем оно было и чем оно стало), имхо, рассказано из рук вон плохо и бессвязно. Но такие места все же редкость.

И вообще я уже придираюсь. В целом книга однозначно хороша.

Главное достоинство книги — это полнота изложения. Больше нет книг, которые столь полно и последовательно излагают именно C++11. Да, я и до прочтения книги был в курсе, что такое static_assert, зачем придумали rvalue, как работает цикл for(:) и какая замечательная штука auto. В конце концов, это и в википедии описано. Но чтобы претендовать на рабочее понимание предмета, этого мало — нужно набить шишки на нюансах. И этого добра в книге хватает. Например вот:

Или вот:

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

Оно и правильно. Хотя, наверное, некоторые фичи C++03 временами уж слишком не упоминаются, а столкнуться с ними читателю придется… впрочем, учитывая, что в новом стандарте язык стал не проще, а сложнее — фич-то добавилось, а старых почти не убавилось — то, наверное, альтернатив нет. И так книга толстенная.

Как итог могу рекомендовать книгу к прочтению всем, кто хочет причесать свои познания в C++11. Я о потраченном времени не пожалел.

Добавить комментарий