beldmit: (Программизм)
[personal profile] beldmit
Купил и пролистал по наводке [livejournal.com profile] alenacpp книгу Скотта Мейерса «Современный и эффективный C++». Как всегда, сколько-то советов по возможностям, предоставляемым стандартами C++11 и C++14.

Книга хороша, но то ли я недостаточно современный и эффективный, то ли бОльшая часть этих новых возможностей на самом деле возможности прострелить себе ногу. В общем, "C с классами" был мне более-менее понятен, алгоритмы и контейнеры тоже, а вот эти все новшества понятны весьма фрагментарно. Впрочем, пока что перспективы писать на C++ не предвидится.

Date: 2015-12-21 03:04 am (UTC)
yurikhan: (Default)
From: [personal profile] yurikhan

Книга называется Effective Modern C++. И парсить это нужно именно так: сначала C++, потом (Modern C++) — C++11 и C++14, потом уже (Effective (Modern C++)) — как на этом писать эффективно. Переводчик налажал, и хорошо, если только в названии.

В классическом C++ две основополагающие фичи: это детерминированный вызов деструкторов (из которого следует идиома RAII) и принцип нулевого оверхеда, унаследованный от C (и из которого следует множество граблей, но выкинуть его нельзя, потому что «если вы хотите C#, то вы знаете, где его взять»).

Новшества C++11/14 можно разделить на четыре категории:

  1. конструкции для более точного и явного выражения намерений (nullptr, = delete и = default, override, final);
  2. поддержка оптимизаций в компиляторах (rvalue references + move semantics, noexcept, constexpr);
  3. поддержка многопоточности;
  4. синтаксический сахар (почти весь type deduction, using вместо typedef, лямбды).

Первая категория при последовательном применении убирает грабли там, где раньше приходилось надеяться на конвенции и хорошую документацию.

Оптимизация — палка о двух концах, конечно. По сути, нам дают средства, чтобы подсказывать компилятору вещи, о которых он теоретически мог бы догадываться сам.

Многопоточность просто давно пора было узаконить.

Ну и синтаксический сахар при правильном использовании даёт более понятный код.

Date: 2015-12-21 08:51 am (UTC)
From: [identity profile] beldmit.livejournal.com
Ну вот мне показалось, что такое количество syntax sugar приводит к диабету. Многопоточность, nullptr, atomic и кое-что ещё я в состоянии оценить. Лямбды - вещь. Но очень многое вызывает желание забыть, потому как в голову не укладывается.

Profile

beldmit: (Default)
Dmitry Belyavskiy

December 2025

S M T W T F S
 123456
78910111213
14151617181920
2122 2324252627
28 29 3031   

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 10th, 2026 10:52 am
Powered by Dreamwidth Studios