20
Авг
2019

Лучшие доклады с C++ Russia 2019

Нашли для вас плейлист-подборку лучших докладов с конференции C++ Russia 2019, проведённой JUG Ru Group. Рассказывают про многопоточность, метапрограммирование, улучшение производительности, указатели и многое другое.

1 — Know your hardware: CPU memory hierarchy

https://www.youtube.com/watch?v=QOJ2hsop6hM&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=1

Alexander Titov (Intel)

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

2 — На что нужно обратить внимание при обзоре кода разрабатываемой библиотеки

https://www.youtube.com/watch?v=_1Nuae9EvhY&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=2

Андрей Карпов (PVS-Studio)

В докладе даётся ряд советов, на что разработчикам библиотек стоит дополнительно обращать внимание на code review.

3 — Эволюция метапрограммирования: как правильно работать со списками типов

https://www.youtube.com/watch?v=ZUmc45Njs9U&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=3

Олег Фахтиев (Яндекс)

Рассказ о метапрограммировании в ретроспективе. В докладе обсуждаются общие подходы в метапрограммировании, а также списки типов. По ходу доклада автор напишет небольшую библиотеку для работы со списками типов, похожую на Boost.Hana.

4 — C++17 — the biggest traps

https://www.youtube.com/watch?v=h-zy1hBqT74&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=4

Nicolai Josuttis

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

5 — Как апгрейдили компилятор и поддерживали кроссплатформенность

https://www.youtube.com/watch?v=PGOvl0dH8lM&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=5

Михаил Матросов, Александр Воронков (Align Technology)

Case study переноса кодовый базы в 2 миллиона строк с зависимостью от 80 сторонних библиотек с C++11 на C++17 и GCC 7.3.

6 — Initialisation in modern C++

https://www.youtube.com/watch?v=2jJumNzcp6Y&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=6

Timur Doumler

Доклад об инициализации в C++. Сначала речь пойдёт об истории инициализации в C++. Затем автор расскажет о текущих правилах инициализации и распространённых ошибках и сюрпризах. Также разговор затронет свежие предложения по упрощению инициализации в C++20.

7 — ABI compatibility is not a MAJOR problem

https://www.youtube.com/watch?v=aqQT3J16OxI&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=7

Javier García Sogo (JFrog/Conan)

В этом докладе речь идёт об ABI-совместимости, её важности для разработчиков библиотек, а также приводятся примеры вещей, которые влияют на ABI, и методы для уменьшения головной боли. В последней части доклада автор расскажет о Conan — инструменте, который может помочь решить проблемы ABI-совместимости.

8 — Concurrency and parallelism in C++17 and C++20/23

https://www.youtube.com/watch?v=qE4AxHg_H_A&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=8

Rainer Grimm (Modernes C++)

Рассказ о том, что принёс в мир конкурентности и параллелизма C++17, и каких улучшений в этой области ожидать от C++20/23.

9 — Метаклассы в C++17: фантастика? Реальность!

https://www.youtube.com/watch?v=4ewl9LJXaZQ&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=9

Сергей Садовников (Лаборатория Касперского)

Доклад посвящён одному из подходов реализации метаклассов для тех версий компиляторов, которые не поддерживают ни статической рефлексии, ни собственно метаклассов из коробки. В докладе будет рассказано, как именно поддержку метаклассов можно реализовать в виде сторонней утилиты и что можно/нужно сделать для того, чтобы интегрировать результаты работы этой утилиты в собственный код.

10 — Язык программирования Rust — обзор экосистемы

https://www.youtube.com/watch?v=vpPgC4cPja0&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=10

Илья Богданов (Exonum, the Bitfury)

В докладе будет выполнен краткий обзор экосистемы, сложившейся вокруг языка Rust к настоящему времени. Будут рассмотрены нововведения, которые были внесены Rust-сообществом в современную разработку программного обеспечения, а также способы их использования программистами на других языках, включая С++.

11 — Незаменимый С++

https://www.youtube.com/watch?v=LZflL44SVVY&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=11

Антон Полухин (Яндекс.Такси)

Каждый новомодный язык программирования норовит заявить о том, что он быстрее, надёжнее и вообще по всем параметрам в несколько раз лучше C++. Автор доклада попробует разобраться, где правда, а где вымысел, и сравнит C++ с другими языками.

12 — Метапрограммирование, щадящее компилятор

https://www.youtube.com/watch?v=udTEfwCkmaw&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=12

Андрей Давыдов (JetBrains)

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

13 — Концепты: упрощаем реализацию классов std utility

https://www.youtube.com/watch?v=vYzjV0xSqJE&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=13

Андрей Давыдов (JetBrains)

Доклад начнётся с краткого обзора нововведений в концептах в C++20, после чего будет рассмотрена реализация некоторых классов и функций STL вместе со сравнением решений C++17 и С++20.

14 — Higher-order functions and function_ref

https://www.youtube.com/watch?v=HYENjkZvsrM&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=14

Vittorio Romeo (Bloomberg L.P.)

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

15 — The hitchhiker’s guide to faster builds

https://www.youtube.com/watch?v=5rRLHRRqg5A&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=15

Viktor Kirilov

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

16 — Postmodern immutable data structures

https://www.youtube.com/watch?v=dbFfpTp3EhA&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=16

Juan Pedro Bolívar Puente

В этом докладе речь пойдёт об архитектурных преимуществах неизменяемости. Автор покажет, как можно написать очень эффективный неизменяемый векторный тип с помощью современных структур (Relaxed Radix Balanced Trees), а также покажет пример приложения, написанного с применением приведённого в докладе архитектурного стиля.

17 — Шаблоны C++ и базы данных

https://www.youtube.com/watch?v=7qCtCXxpgfw&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=17

Сергей Федоров (Яндекс.Такси)

Рассказ о проектировании и реализации драйвера PostgreSQL с человеческим интерфейсом с применением почти всех доступных на данный момент языковых средств C++17. Описанный в докладе подход можно адаптировать практически к любому протоколу уровня приложений.

18 — Modern C++ allocators

https://www.youtube.com/watch?v=DIH-9ae_3DE&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=18

Руслан Арутюнян (Intel)

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

19 — Асинхронная разработка на C++

https://www.youtube.com/watch?v=seDJT66BJJo&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=19

Павел Новиков (Align Technology)

Начиная с C++11 в стандарте появились примитивы для асинхронного выполнения задач. Автор доклада расскажет, какие возможности предоставляет стандартная библиотека сейчас и какие планируется добавить в будущем. Также он расскажет о concurrency::task из PPL и о том, как облегчает написание и понимание написанного кода использование корутин.

20 — Оптимизации времени компиляции. Даём больше информации компилятору

https://www.youtube.com/watch?v=k26IOUaz2es&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=20

Кирилл Тихонов (DINS)

В докладе будут рассмотрены способы передачи компилятору информации об используемых данных и действиях над ними: от single compilation unit, link time optimization и static initialization до consteval и шаблонного метапрограммирования.

21 — Не слишком глупые указатели в ClickHouse

https://www.youtube.com/watch?v=pCUfOExRM4I&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=21

Алексей Миловидов (Яндекс)

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

22 — Рецепты использования умных указателей

https://www.youtube.com/watch?v=UQyA8P1mHoc&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=22

Алексей Малов (iSpring)

В стандарт C++11 были введены умные указатели unique_ptr, shared_ptr и weak_ptr, которые кроме упрощения управления динамической памятью могут выступать в виде строительных блоков для создания более сложных конструкций. Из этого доклада вы узнаете ряд полезных приёмов использования как стандартных, так и пользовательских умных указателей.

23 — Монадические парсеры

https://www.youtube.com/watch?v=q39PHTJDaLE&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=23

Александр Гранин

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

24 — Move only C++ design

https://www.youtube.com/watch?v=04HcVuqlZ5E&list=PLZN9ZGiWZoZo3hYXXOn6NZAi3YzUETzy2&index=24

Ivan Čukić (KDE e.V.)

RAII обычно высвобождает все выделенные ресурсы в программах. Но есть один ресурс, который никак не вернуть — время. Одной из самых дорогостоящих ошибок, которые мы можем совершить, является создание ненужных копий. В докладе будет рассмотрен подход к разработке ПО, который позволяет использовать только некопируемые типы, называемые «линейными».

— Исчтояник «Лучшие доклады с C++ Russia 2019»

Share

Тебе может это понравится...