«Современный и эффективный C++»
Dec. 20th, 2015 10:18 pmКупил и пролистал по наводке
alenacpp книгу Скотта Мейерса «Современный и эффективный C++». Как всегда, сколько-то советов по возможностям, предоставляемым стандартами C++11 и C++14.
Книга хороша, но то ли я недостаточно современный и эффективный, то ли бОльшая часть этих новых возможностей на самом деле возможности прострелить себе ногу. В общем, "C с классами" был мне более-менее понятен, алгоритмы и контейнеры тоже, а вот эти все новшества понятны весьма фрагментарно. Впрочем, пока что перспективы писать на C++ не предвидится.
Книга хороша, но то ли я недостаточно современный и эффективный, то ли бОльшая часть этих новых возможностей на самом деле возможности прострелить себе ногу. В общем, "C с классами" был мне более-менее понятен, алгоритмы и контейнеры тоже, а вот эти все новшества понятны весьма фрагментарно. Впрочем, пока что перспективы писать на C++ не предвидится.
no subject
Date: 2015-12-21 03:04 am (UTC)Книга называется Effective Modern C++. И парсить это нужно именно так: сначала C++, потом (Modern C++) — C++11 и C++14, потом уже (Effective (Modern C++)) — как на этом писать эффективно. Переводчик налажал, и хорошо, если только в названии.
В классическом C++ две основополагающие фичи: это детерминированный вызов деструкторов (из которого следует идиома RAII) и принцип нулевого оверхеда, унаследованный от C (и из которого следует множество граблей, но выкинуть его нельзя, потому что «если вы хотите C#, то вы знаете, где его взять»).
Новшества C++11/14 можно разделить на четыре категории:
nullptr,= deleteи= default,override,final);noexcept,constexpr);usingвместоtypedef, лямбды).Первая категория при последовательном применении убирает грабли там, где раньше приходилось надеяться на конвенции и хорошую документацию.
Оптимизация — палка о двух концах, конечно. По сути, нам дают средства, чтобы подсказывать компилятору вещи, о которых он теоретически мог бы догадываться сам.
Многопоточность просто давно пора было узаконить.
Ну и синтаксический сахар при правильном использовании даёт более понятный код.
no subject
Date: 2015-12-21 08:51 am (UTC)