Talks C++ Russia 2019 Piter

Sean Parent Adobe
Sean Parent
Adobe 
Day 1 / 10:30  / Track 1 / EN /

Better code: Relationships

A look at common ways data and code are connected in an application, how those relationships are typically represented, and the problems caused by the use and misuse of these paradigms. Then we'll look at ways to model these relationships in C++ and use them to build correct applications.

Antony Polukhin Yandex.Taxi
Antony Polukhin
Yandex.Taxi 
Day 1 / 19:00  / Track 1 / RU / Для практикующих инженеров

C++ tricks from Yandex.Taxi

Atypical and effective solutions for typical tasks:

  • Pimpl — but without dynamic allocations.
  • Fast logging — but usually without std::ostream and std::locale.
  • Conversions from JSON/XML/YAML/... to user-defined types — but with code reuse (almost a function overloading by result type).
Eric Niebler Facebook
Eric Niebler
Facebook 
Day 2 / 11:00  / Track 1 / EN / Хардкор. Сложный низкоуровневый доклад, требующий от слушателя знаний технологии.

A unifying abstraction for async in C++

Eric Niebler digs into the Standard Committee's search for the basis operations that underpin all asynchronous computation. He will discuss why futures and promises are slow, what an executor is, what callbacks and coroutines have in common, and how the "Task" abstraction — under active R&D at Facebook — might do for async algorithms what the Iterator abstraction did for synchronous ones.

Marshall Clow C++ Alliance
Marshall Clow
C++ Alliance 
Day 2 / 14:30  / Track 1 / EN / Введение в технологию

Hardening the C++ standard template library

The C++ standard library is used by all C++ programs; it needs to be as robust as possible. Marshall will talk about the techniques used by libc++ to ensure robustness. He will cover debug mode, test suites, static analysis, dynamic analysis, code coverage tools, and fuzzing.

Guy Davidson Creative Assembly
Guy Davidson
Creative Assembly 
Day 1 / 14:00  / Track 3 / EN / Академический доклад

Teaching geometry to C++

With the linear algebra proposal making its way through the C++ standard committee, the authors are now considering teaching analytical geometry to C++. This talk will tell you about the progress to date.

Adi Shavit Consultant
Adi Shavit
Consultant 
Day 1 / 17:30  / Track 1 / EN / Для практикующих инженеров

Generators, coroutines and other brain-unrolling sweetness

We'll see how coroutines allow for cleaner code, easier abstraction and genericity, composition and avoiding callbacks and inversion of control.

Bryce Adelstein Lelbach NVIDIA
Bryce Adelstein Lelbach
NVIDIA 
Day 2 / 16:30  / Track 1 / EN / Хардкор. Сложный низкоуровневый доклад, требующий от слушателя знаний технологии.

The C++20 synchronization library

C++20 introduces a range of number of new synchronization primitives designed for the modern era; in this talk, you'll learn how to use these new tools to write scalable C++ software.

Maxim Khizhinsky VAS Experts
Maxim Khizhinsky
VAS Experts 
Day 1 / 16:00  / Track 1 / RU / Хардкор. Сложный низкоуровневый доклад, требующий от слушателя знаний технологии.

Comfort class apartments for actors and handlers

In this talk, an approach based on thread specialization will be explored. In many cases it allows you to get rid of shared data and write multithreaded programs, asynchronous by nature, in such a way that they look sequential in the code.

Mikhail Matrosov Align Technology
Mikhail Matrosov
Align Technology 
Day 2 / 18:00  / Track 1 / RU / Для практикующих инженеров

Clauses, qualifiers and patterns

Starting with C++98 and to C++17 a lot of keywords for variables have appeared and in C++20 some more will appear. In this talk Mikhail will try to sort out all this variety of keywords.

Alexander Bychuk Kaspersky Lab
Alexander Bychuk
Kaspersky Lab 
Day 1 / 17:30  / Track 3 / RU / Для практикующих инженеров

С++ Enterprise Edition — message brokers

Alexander will tell about present-day MessageMQ market and its most outstanding representatives, go over advantages and disadvantages of message brokers, taking into account local import substitution market. Of course, he'll also tell how he wrote his own message broker and why exactly he did it.

Hana Dusíková AVAST
Hana Dusíková
AVAST 
Day 1 / 12:00  / Track 1 / EN / Хардкор. Сложный низкоуровневый доклад, требующий от слушателя знаний технологии.

A state of сompile time regular expressions

Learn how to parse a regular expression pattern in compile-time and generate matcher with finite automaton.

Karina Dorozhkina Kaspersky Lab
Karina Dorozhkina
Kaspersky Lab 
Day 1 / 16:00  / Track 3 / RU / Для практикующих инженеров

BareMetal C++

Karina will show and talk about the features of writing and building of C++ code with limited resources and the absence of the compiler.

Andrey Karpov PVS-Studio
Andrey Karpov
PVS-Studio 
Day 1 / 19:00  / Track 3 / RU / Введение в технологию

Premature optimization is evil! All hail premature optimization!

Due to our own experience of developing a static code analyzer, we came to the conclusion that only premature optimization of everything that is available can save us from continuous declining performance. We'd like to share our thoughts and techniques that we apply in our company.

Nikolay Beloborodov Variti
Nikolay Beloborodov
Variti 
Day 1 / 17:30  / Track 2 / RU /

Using slab allocators in high performance network applications developed with boost.asio

Nikolay will tell how he and his team solved the problem of memory fragmentation and what limitation they had to face in the process.

Timur Doumler audio++
Timur Doumler
audio++ 
Day 1 / 16:00  / Track 2 / EN / Для практикующих инженеров

Type punning in modern C++

This talk is a comprehensive overview of type punning techniques, including new ones introduced in C++20. We will discuss when and how they can be used safely without causing undefined behaviour, what C++ does and does not allow you to do (and why), existing holes in the C++ language, and how to fix them. In the process, we will cover important C++ concepts such as object lifetime, object representation, and aliasing rules.

Ivan Čukić KDE
Ivan Čukić
KDE 
Day 2 / 19:30  / Track 1 / EN / Для практикующих инженеров

Compile-time type tagging

We will use and explain many new C++ features like fold expressions, concepts, type lists and index sequences, and the code will extensively use move semantics to generate a cleaner assembly code for type instantiation.

Rainer Grimm Modernes C++
Rainer Grimm
Modernes C++ 
Day 2 / 18:00  / Track 2 / EN /

The Big Four of C++20

How C++20 will change the way we program modern C++.

Dmitry Kozhevnikov JetBrains
Dmitry Kozhevnikov
JetBrains 
Day 2 / 12:30  / Track 2 / RU / Для практикующих инженеров

Modules in C++20 — real or fake?

We'll see how modules in C++ work, how they resemble and differ from similar concepts in other languages, what capabilities were included in the standard and how they will affect code that we write, discuss common misconceptions about modules (where they can and cannot help), look how they affect language tooling and to what extent they can accelerate compilation of real-life projects.

Arno Schoedl think-cell
Arno Schoedl
think-cell 
Day 1 / 12:00  / Track 3 / EN / Введение в технологию

The C++ rvalue lifetime disaster

Arno will talk about the main problems surrounding rvalue references and suggest the alternate solution with the help of the library-only approach.

Kirill Tikhonov DINS
Kirill Tikhonov
DINS 
Day 1 / 12:00  / Track 2 / RU /

Automate it

Kirill Tikhonov will tell how to easily optimize your work with continuous integrations, services and clients.

Denis Panin NVIDIA
Denis Panin
NVIDIA 
Day 1 / 14:00  / Track 2 / RU /

How we switched to vcpkg

The talk will be dedicated to the usage of vcpkg and it's niceties. Also, we'll talk about painful migration from monorepository to several small repos and how dependencies (both external and internal) are managed. Especially, when internal dependencies have no clue about package management.

Juan Pedro Bolívar Puente Independent consultant
Juan Pedro Bolívar Puente
Independent consultant 
Day 1 / 19:00  / Track 2 / EN /

Squaring the circle: value-oriented design in an object-oriented system

Learn about how cursors and reactive lenses can help designing your code around value-semantics and functions in legacy code-bases and UI's otherwise written in a referential, object-oriented style.

Roman Rusyaev Samsung
Roman Rusyaev
Samsung 
Day 1 / 14:00  / Track 1 / RU / Хардкор. Сложный низкоуровневый доклад, требующий от слушателя знаний технологии.

C++ exceptions through the prism of compiler optimizations

Roman's talk will demonstrate when building your application with -fno-exceptions makes sense and when you can enjoy C ++ exceptions, knowing that the code has not lost performance.

Alexander Ganyukhin MERA
Alexander Ganyukhin
MERA 
Day 2 / 18:00  / Track 3 / RU /

Serialization with blackjack and metaprogramming

In this talk, Alexander will describe an approach to semi-automatic serialization through getters with help of metaprogramming.

Timofey Lavrenuyk KeepSolid
Timofey Lavrenuyk
KeepSolid 
Day 2 / 16:30  / Track 3 / RU / Готовьтесь, будет подгорать

Dart as an opportunity to transfer a C++ application to web

At one moment Timofey and his team realized that development of client application on C++ is long and expensive. And gradually began migrating products to the web. Speaker will tell how the team of C++ developers was able to quickly rewrite C++ code for web with help of Dart.

Ashot Vardanian UNUM
Ashot Vardanian
UNUM 
Day 2 / 12:30  / Track 1 / EN / Для практикующих инженеров

Dive into the general-purpose GPU programming

Comparing OpenCL & CUDA with high-level C++ libraries and compiler toolchains for heterogeneus computing.

Alexander Maslennikov Intel
Alexander Maslennikov
Intel 
Day 2 / 16:30  / Track 2 / RU / Введение в технологию

Algorithmic and microarchitecture optimizations of C++ applications

С++ is often employed because of its high performance, but you can't achieve maximum performance without thoroughly analysing the code of your application. Alexander will review the process and patterns of performance optimizations.

Björn Fahller Net Insight
Björn Fahller
Net Insight 
Day 2 / 14:30  / Track 3 / EN / Для практикующих инженеров

Modern techniques for keeping your code dry

Björn will show modern C++ techniques enabling you to write your own zero-cost abstractions that help getting rid of the patterns that keep repeating in your code.

Pavel Novikov Align Technology
Pavel Novikov
Align Technology 
Day 2 / 12:30  / Track 3 / RU / Для практикующих инженеров

Insights into the C++ standard library

A couple of things about the C++ standard library implementation you might want to know. We'll discuss implementation details and how using of types and algorithms from the standard library may impact the performance of your application.

Andrey Davydov JetBrains
Andrey Davydov
JetBrains 
Day 2 / 14:30  / Track 2 / RU / Хардкор. Сложный низкоуровневый доклад, требующий от слушателя знаний технологии.

Modules: changes in core language

The talk about modules in C++ and their influence on core language.