Конференция C++ Russia
Санкт-Петербург
19-21 апреля 2018

27
лучших докладчиков
1250
минут информации
для опытных
разработчиков

Конференция «C++ Russia» с блинами и матрёшками! Как всегда, лучшие докладчики
со всей страны на два дня. Конференция ориентирована на опытных разработчиков, никаких вводных лекций!

Место проведения: Санкт-Петербург, ул. Кораблестроителей, 14, гостиница Прибалтийская.

В течение года сообщество проводит встречи в разных городах России: Москве, Санкт-Петербурге, Новосибирске, Екатеринбурге, Нижнем Новгороде, Саратове.
На встречах выступают докладчики из разных городов и стран.

Открывать конференцию будет Jon Kalb, разработчик с 25-летним стажем
В течение этого времени успел поработать в Amazon, Microsoft, Netscape,
Yahoo и других компаниях. Jon -- организатор конференции CppCon. Автор книги
C++ Today: The Beast is Back.

Доклады

20/04/18
Track B
12:45 - 13:45
Borislav Stanimirov
Borislav Stanimirov
DynaMix: A New Take on Polymorphism

Software with very complex business logic, such as games, CAD systems, and enterprise systems, often needs to compose and modify objects at runtime - for example to add or override a method in an existing object. Standard C++ has rigid types which are defined at compile time and make this hard. On the other hand languages with dynamic types like lua, Python, and JavaScript make this very easy. Therefore, to keep the code readable and maintainable, and accomplish complex business logic requirements, many projects use such languages alongside C++. Some drawbacks of this approach include the added complexity in a language binding layer, the performance loss from using an interpreted language, and the inevitable code duplication for many small utility functionalities.

DynaMix is a library which attempts to remove, or at least greatly reduce, the need for a separate scripting language by allowing the users to compose and modify polymorphic objects at runtime in C++. This talk will elaborate on this problem and introduce the library and its key features to potential users or people who might benefit form the approach with an annotated example and a small demo.

Slides

20/04/18
Track A
13:45 - 14:45
Jonathan Boccara
Jonathan Boccara
105 STL Algorithms in Less Than an Hour

We are all aware that we should know the STL algorithms. Including them in our designs allows us to make our code more expressive and more robust. And sometimes, in a spectacular way.

But do you know your STL algorithms?

In this talk, you'll see the 105 algorithms that the STL currently has, including those added in C++11 and C++17. But more than just a listing, the point of this talk is to present the different groups of algorithms, the patterns they form in the STL, and how the algorithms relate together.

This kind of big picture is the best way I know to actually remember them all, and constitute a toolbox chock-full of ways to make our code more expressive and more robust.

Slides in pdf

20/04/18
Track C
12:45 - 13:45
Дмитрий Банщиков
Дмитрий Банщиков
Разделяемые библиотеки без внешних зависимостей

Я расскажу о своём опыте разработки антивирусного движка на C++ в виде разделяемой библиотеки. Уникальной особенностью является отсутствие каких-либо внешних зависимостей (runtime C++ или C). Вся эта связка построена вокруг использования кастомного toolchain'а на GCC для специального таргета, которым собирается libc newlib для этого же таргета, поверх которого собирается libstdc++. Соответственно, разделяемая библиотека собирается через кастомный тулчейн с кастомными libgcc_s, libc, libcstdc++ (изменения только в сборке). Все взаимодействие со средой выполнения осуществляется через ABI разделяемой библиотеки.

Таким образом, внутри библиотеки сохраняется возможность использовать полноценный современный С++ без ограничений (RTTI, exceptions, iostream, etc), что уходит в libstdc++->libc (newlib)| l ibgcc->ABI.

Подобный подход проверялся на тулчейнах GCC/newlib/libstdc++ для Linux, и clang/newlib/libc++ для MacOS.

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

Slides in pdf

21/04/18
Track A
13:45 - 14:45
Dietmar Kühl
Dietmar Kühl
Concept Based Testing

With concepts being added to the next revision of C++ it is expected that new concepts get defined. Each concept defines a set of operations used by generic code. One such use could be a generic test verifying that all parts of a concept are defined and checking generic interactions between a concept’s operations. Ideally, such a test even works with classes only partially modelling a concept to guide the implementation of classes.

This presentation doesn’t use the actual concept extensions but shows how generic tests can be created using features of C++17. For the generic tests the detection idiom and constexpr if are used to determine availability of required operations and gracefully dealing with the abseence of operations. The generic tests should be able to cover basics of classes modelling a concept. Obviously, specific behaviour for classes will still require corresponding tests.

Attendees are expected to be familiar basic C++. However, deep knowledge of template meta programming is not needed.

Slides in pdf

20/04/18
Track C
16:00 - 17:00
Илья Шишков
Илья Шишков
Как научить языку C++: опыт создания курсов на Coursera

В течение последних полутора лет я руковожу созданием специализации на Coursera о современном C++. Специализация будет состоять из пяти курсов, два из которых уже запущены, а ещё один почти готов.

В своём докладе я хочу рассказать:

  • с какими проблемами мы столкнулись в работе над курсами (например, через 3 месяца работы мы выбросили все материалы и начали заново)
  • как мы формируем программу курсов и почему именно так (например, почему слово "указатель" не прозвучало в двух наших первых курсах ни разу)

Кроме того, за время работы над специализацией у нас выработался набор принципов, которые, я уверен, применимы и в повседневной работе:

  • в процессе интеграции нового сотрудника в проект
  • во время code-review
  • при найме Поэтому я не просто хочу рассказать, как мы делаем специализацию, но и попытаюсь переложить полученный опыт на повседневные задачи.

Slides in pptx

21/04/18
Track A
16:00 - 17:00
Rainer Grimm
Rainer Grimm
Best Practices for Concurrency in Modern C++

With the standardisation of C++11, we got in C++ a multithreading library and a memory model. The library has the basic building blocks such as atomics, threads, tasks, locks, and condition variables. The memory model provides guarantees for the thread-safe usage of this basic building blocks.

Seven years later, we have a lot of best practices to apply multithreading and the memory model in a safe way. My talk will be precisely about these best practices to general rules for concurrency, special rules for the multithreading library, and special rules for the memory model. The focus of this best practices will be far beyond C++.

Slides in pdf

Программа

Первый день конференции 19 апреля -- это день мастер-классов. Вы можете посетить один четыре мастер-классов на ваш выбор. Обратите внимание: два мастер-класса проходят на английском языке. Мастер-класс это практическое занятие под руководством опытного программиста. Для работы вам понадобится ноутбук, более подробные требования есть в описании каждого мастер-класса. На этот день продаётся отдельный билет.

20/04/18
track atrack btrack ctrack d
09:00 - 10:00 Регистрация
10:00 - 12:00 Jon KalbC++ Today: The Beast is Back
12:00 - 12:45 Кофе-брейк
12:45 - 13:45 Arno SchödlFrom Iterators To Ranges — The Upcoming Evolution Of the Standard Library Borislav StanimirovDynaMix: A New Take on Polymorphism Дмитрий БанщиковРазделяемые библиотеки без внешних зависимостей Фёдор КороткийПамять – идеальная абстракция
13:45 - 14:45 Jonathan Boccara105 STL Algorithms in Less Than an Hour Mikhail MatrosovVersatile C++ applied Сергей ВасильевСтатический анализ: ищем ошибки... и уязвимости? Алексей СалминMemory Management Tips & Tricks
14:45 - 16:00 Обед
16:00 - 17:00 Viktor KirilovInteractive C++ Compilation (REPL): The Lean Way Александр ГранинФункциональный подход к Software Transactional Memory Илья ШишковКак научить языку C++: опыт создания курсов на Coursera Herb SutterNew in C++20: The spaceship operator (operator<=>)
17:00 - 18:00 Victor CiuraEnough string_view to hang ourselves Вадим ВинникCollection Processing. Single essence, multiple manifestations Иван ПономарёвCrash репорты Android NDK Анастасия КазаковаОтладка кода на C++, без запуска и компиляции
18:00 - 19:00 Andrei AlexandrescuFastware

Билеты

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

Как всегда действует студенческая программа.
Для получения скидки пишите на
students@cpp-russia.ru

Входной билет

Посещение основной программы конференции 20-21 апреля

Мастер-класс

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

Онлайн

Просмотр любого доклада. Записи докладов доступны в течение двух месяцев.

Ужин с докладчиками

Горячая пища и общение с докладчиками в неформальной обстановке. 20 апреля в 20.00

Купить билет

Перейтик заказу билетов

Platinum спонсор

Gold спонсоры

Silver спонсоры

Community спонсоры

Контакты

Место проведения: Санкт-Петербург, ул. Кораблестроителей, 14, гостиница Прибалтийская.

Если у Вас есть вопросы,
их можно задать по телефону или почте

+7 (905) 292-77-13