Посты
С++17: новые возможности

VKС++Deep5_21.06_SITE_2.png

Стандарт языка С++17 был принят относительно недавно – в декабре 2017 года. Тем не менее, уже как минимум два компилятора под Linux его поддерживают:

g++, начиная с версии 7.1; – clang, начиная с версии 5.

Список нововведений со времени предыдущего стандарта C++14 довольно велик. Посмотреть можно, например, Bartek's C++17 features list. В этой заметке остановимся всего на двух чертах, которые оказались полезными и удобными в практическом плане на конкретных примерах.

Виды памяти

VKС++Deep_21.06_Site.png

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

Введение в Boost.Asio

VKС++Deep2.png

Asio означает asynchronous input/output – асинхронный ввод-вывод. Данная библиотека позволяет обрабатывать данные асинхронно, т.е. операция может быть запущена, и, не дожидаясь конца выполнения этой операции, мы можем запустить другую операцию.

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

Зачем что-то обещать или почему noexcept меняет поведение кода?

С++Deep_14.06_SITE.png

Если бы по телевизору показывали рекламу языка C++, наверняка, в ней бы было что-то вроде:

«С добавлением move-семантики вы получаете бесплатное увеличение производительности за счёт избавления от нецелесообразных операций копирования. Просто перекомпилируйте свой проект новой версией компилятора с поддержкой 11 или 14 стандарта и радуйтесь ускорению работы программы!».

Стоит ли верить такой рекламе?

Warning: (to_be || !to_be) if always true!

C++Deep_05.06_Site.png

Чем так хорош язык C++? Конечно, возможностью перегрузки операторов для своего класса! Ну ладно, разумеется, не только этим, но это классная возможность, разве нет? Давайте поговорим о перегрузке логических операторов, стоит ли это делать и чем это грозит (кроме непонятного кода в результате).

Экспорт шаблонов или как испортить жизнь коллегам

Предположим, вам требуется написать разделяемую библиотеку (DLL в терминологии Windows и shared library в мире *nix). Допустим, в библиотеке реализована некоторая фабричная функция, которая создаёт очень полезные для пользователей объекты.

20 типичных ошибок многопоточности в C++

С___Deep_25-5020-1175ed.09_site.png

Многопоточное программирование одна из самых сложных тем в программировании, особенно в C++. Трудно избежать при этом ошибок. К счастью большую часть удаётся отловить на этапе проверки кода или тестирования. Но особо коварные проникают в рабочие системы и исправлять их достаточно затруднительно.

В этой статье собраны и переведены самые значимые по мнению автора заметки ошибочные ситуации. Если у вас есть свои любимые ошибки или варианты их решения, оставьте, пожалуйста, их в комментариях.

Как программист ошибку искал

C++Deep3.04Site.png

Один день из жизни команды разработчиков

«Слипы в коде – это очень и очень плохо!» – разорялся программист Вася на совещании. «Согласен, но давай пока так оставим?» – робко парировал его коллега Антон. «Лааадно, ты прав. Так действительно проще.» – нехотя согласился Вася.
ScopeGuard: одним велосипедом стало меньше

С++Deep2Site.png Все, кто хоть раз восхищался нововведениями стандарта C++11 (давно это было, но восхищаться можно бесконечно), знают о существовании интеллектуальных указателей, которые позволяют не беспокоиться о корректной очистке памяти.

Стоимость операций в тактах ЦП

С++_Deep_21.06_SITE_5.png

Оригинал статьи: ссылка

Всем доброго! Вот мы и добрались до тематики С++ на наших курсах и по нашей старой доброй традиции делимся тем, что мы нашли достаточно интересным при подготовке программы и то, что будем затрагивать во время обучения.