Лучшие доклады с C++ Russia 2019
На C++ Russia рассказывают кучу полезной информации. Публикуем подборку лучших докладов, чтобы вам было проще не упустить главное.
6К открытий6К показов
Нашли для вас плейлист-подборку лучших докладов с конференции C++ Russia 2019, проведённой JUG Ru Group. Рассказывают про многопоточность, метапрограммирование, улучшение производительности, указатели и многое другое.
1 — Know your hardware: CPU memory hierarchy
Alexander Titov (Intel)
Обзор структуры и алгоритмов иерархии памяти в современном процессоре. Темы включают в себя организацию кэша, принцип локальности и организацию данных, удобную для кэширования. Также даются некоторые практические советы, как избежать распространённых ловушек производительности.
2 — На что нужно обратить внимание при обзоре кода разрабатываемой библиотеки
Андрей Карпов (PVS-Studio)
В докладе даётся ряд советов, на что разработчикам библиотек стоит дополнительно обращать внимание на code review.
3 — Эволюция метапрограммирования: как правильно работать со списками типов
Олег Фахтиев (Яндекс)
Рассказ о метапрограммировании в ретроспективе. В докладе обсуждаются общие подходы в метапрограммировании, а также списки типов. По ходу доклада автор напишет небольшую библиотеку для работы со списками типов, похожую на Boost.Hana.
4 — C++17 — the biggest traps
Nicolai Josuttis
В C++17 было добавлено много новых фич, которые, несмотря на свою пользу, предоставляют много возможностей выстрелить себе в ногу. В докладе обсуждаются подобные ловушки, причины, по которым они появились, и методы борьбы с ними.
5 — Как апгрейдили компилятор и поддерживали кроссплатформенность
Михаил Матросов, Александр Воронков (Align Technology)
Case study переноса кодовый базы в 2 миллиона строк с зависимостью от 80 сторонних библиотек с C++11 на C++17 и GCC 7.3.
6 — Initialisation in modern C++
Timur Doumler
Доклад об инициализации в C++. Сначала речь пойдёт об истории инициализации в C++. Затем автор расскажет о текущих правилах инициализации и распространённых ошибках и сюрпризах. Также разговор затронет свежие предложения по упрощению инициализации в C++20.
7 — ABI compatibility is not a MAJOR problem
Javier García Sogo (JFrog/Conan)
В этом докладе речь идёт об ABI-совместимости, её важности для разработчиков библиотек, а также приводятся примеры вещей, которые влияют на ABI, и методы для уменьшения головной боли. В последней части доклада автор расскажет о Conan — инструменте, который может помочь решить проблемы ABI-совместимости.
8 — Concurrency and parallelism in C++17 and C++20/23
Rainer Grimm (Modernes C++)
Рассказ о том, что принёс в мир конкурентности и параллелизма C++17, и каких улучшений в этой области ожидать от C++20/23.
9 — Метаклассы в C++17: фантастика? Реальность!
Сергей Садовников (Лаборатория Касперского)
Доклад посвящён одному из подходов реализации метаклассов для тех версий компиляторов, которые не поддерживают ни статической рефлексии, ни собственно метаклассов из коробки. В докладе будет рассказано, как именно поддержку метаклассов можно реализовать в виде сторонней утилиты и что можно/нужно сделать для того, чтобы интегрировать результаты работы этой утилиты в собственный код.
10 — Язык программирования Rust — обзор экосистемы
Илья Богданов (Exonum, the Bitfury)
В докладе будет выполнен краткий обзор экосистемы, сложившейся вокруг языка Rust к настоящему времени. Будут рассмотрены нововведения, которые были внесены Rust-сообществом в современную разработку программного обеспечения, а также способы их использования программистами на других языках, включая С++.
11 — Незаменимый С++
Антон Полухин (Яндекс.Такси)
Каждый новомодный язык программирования норовит заявить о том, что он быстрее, надёжнее и вообще по всем параметрам в несколько раз лучше C++. Автор доклада попробует разобраться, где правда, а где вымысел, и сравнит C++ с другими языками.
12 — Метапрограммирование, щадящее компилятор
Андрей Давыдов (JetBrains)
С помощью метапрограммирования можно творить удивительные вещи, за злоупотребление которыми нужно платить. Один из основных сдерживающих факторов — время компиляции, поэтому в докладе обсуждается, какие операции/техники наиболее дороги с точки зрения компилятора и как их можно избегать.
13 — Концепты: упрощаем реализацию классов std utility
Андрей Давыдов (JetBrains)
Доклад начнётся с краткого обзора нововведений в концептах в C++20, после чего будет рассмотрена реализация некоторых классов и функций STL вместе со сравнением решений C++17 и С++20.
14 — Higher-order functions and function_ref
Vittorio Romeo (Bloomberg L.P.)
В этом докладе рассматривается, как функции высшего порядка можно использовать на практике для улучшения качества кода и продуктивности разработчиков.
15 — The hitchhiker’s guide to faster builds
Viktor Kirilov
C++ славится производительностью, выразительностью, отсутствием встроенной системы сборки и менеджера пакетов, сложностью и долгим временем компиляции. Если вам интересно улучшение последних пунктов — то вы по адресу. В докладе обсуждается, почему компиляция (и линковка) занимает столько времени, и как можно бороться с этой проблемой.
16 — Postmodern immutable data structures
Juan Pedro Bolívar Puente
В этом докладе речь пойдёт об архитектурных преимуществах неизменяемости. Автор покажет, как можно написать очень эффективный неизменяемый векторный тип с помощью современных структур (Relaxed Radix Balanced Trees), а также покажет пример приложения, написанного с применением приведённого в докладе архитектурного стиля.
17 — Шаблоны C++ и базы данных
Сергей Федоров (Яндекс.Такси)
Рассказ о проектировании и реализации драйвера PostgreSQL с человеческим интерфейсом с применением почти всех доступных на данный момент языковых средств C++17. Описанный в докладе подход можно адаптировать практически к любому протоколу уровня приложений.
18 — Modern C++ allocators
Руслан Арутюнян (Intel)
Автор познакомит слушателей с аллокаторами в целом, расскажет про современные тенденции, какие виды аллокаторов в каких случаях использовать, объяснит, как работает модель пропагации аллокаторов для вложенных контейнеров, и расскажет, что может ждать разработчиков библиотек при поддержке аллокаторов.
19 — Асинхронная разработка на C++
Павел Новиков (Align Technology)
Начиная с C++11 в стандарте появились примитивы для асинхронного выполнения задач. Автор доклада расскажет, какие возможности предоставляет стандартная библиотека сейчас и какие планируется добавить в будущем. Также он расскажет о concurrency::task из PPL и о том, как облегчает написание и понимание написанного кода использование корутин.
20 — Оптимизации времени компиляции. Даём больше информации компилятору
Кирилл Тихонов (DINS)
В докладе будут рассмотрены способы передачи компилятору информации об используемых данных и действиях над ними: от single compilation unit, link time optimization и static initialization до consteval и шаблонного метапрограммирования.
21 — Не слишком глупые указатели в ClickHouse
Алексей Миловидов (Яндекс)
В докладе будет описана механика реализации собственных указателей для ClickHouse, детали их использования для сложных структур данных, примеры современных возможностей C++, необходимых для реализации. Также будет рассказано про несколько возможностей, которых не хватает в стандарте C++, чтобы сделать реализацию более простой.
22 — Рецепты использования умных указателей
Алексей Малов (iSpring)
В стандарт C++11 были введены умные указатели unique_ptr, shared_ptr и weak_ptr, которые кроме упрощения управления динамической памятью могут выступать в виде строительных блоков для создания более сложных конструкций. Из этого доклада вы узнаете ряд полезных приёмов использования как стандартных, так и пользовательских умных указателей.
23 — Монадические парсеры
Александр Гранин
В докладе будут рассмотрены монадические парсеры: чем этот подход отличается от других видов парсинга, какие у него преимущества и недостатки и в чём здесь проявляются такие важные концепции функционального программирования, как функтор, аппликативный функтор и монада.
24 — Move only C++ design
Ivan Čukić (KDE e.V.)
RAII обычно высвобождает все выделенные ресурсы в программах. Но есть один ресурс, который никак не вернуть — время. Одной из самых дорогостоящих ошибок, которые мы можем совершить, является создание ненужных копий. В докладе будет рассмотрен подход к разработке ПО, который позволяет использовать только некопируемые типы, называемые «линейными».
6К открытий6К показов