Конференция 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.

Доклады

21/04/18
Track B
12:45 - 13:45
Сергей Шамбир
Сергей Шамбир
Когда хорош процедурный C++

Чистая архитектура проекта, простые абстракции на каждом слое — мечта любой команды. Для воплощения этой мечты придумано много объектно-ориентированных приёмов. Увлекаясь ООП, разработчики забывают следить за чистотой кода на стыке C и C++. Именно здесь процедурный стиль поможет навести порядок, выстроить удобные и безопасные абстракции, которые легко стыкуются с объектно-ориентированным кодом проекта. Мы выясним:

  • почему вообще надо изолировать API на языке C (такой как winapi, POSIX, SQLite, OpenGL, OpenSSL)
  • почему ООП в этом деле работает плохо
  • как всё-таки написать слой абстракции поверх C-style API
  • как разобраться с колбеками, обработкой ошибок и управлением ресурсами, чтобы сделать традиционно сложный и запутанный код понятным даже для джуниора
21/04/18
Track A
17:00 - 18:00
Simon Brand
Simon Brand
Modern C++ Parallelism from CPU to GPU

Parallel programming can be used to take advantage of multi-core and heterogeneous architectures and can significantly increase the performance of software. Modern C++ has gone a long way to making parallel programming easier and more accessible; providing both high-level and low-level abstractions. C++17 takes this further by providing high level parallel algorithms, and much more is expected in C++20. This talk will give an overview of the current parallelism utilities available, and look to the future of how GPUs and heterogeneous systems can be supported through new standard library features and other standards like SYCL.

Slides in pdf

20/04/18
Track A
17:00 - 18:00
Victor Ciura
Victor Ciura
Enough string_view to hang ourselves

Wouldn’t it be nice if we had a standard C++ type to represent strings ? Oh, wait... we do: std::string. Wouldn’t it be nice if we could use that standard type throughout our whole application/project ? Well… we can’t ! Unless we’re writing a console app or a service. But, if we’re writing an app with GUI or interacting with modern OS APIs, chances are that we’ll need to deal with at least one other non-standard C++ string type. Depending on the platform and project, it may be CString from MFC or ATL, Platform::String from WinRT, QString from Qt, wxString from wxWidgets, etc. Oh, let’s not forget our old friend const char*, better yet const wchar_t* for the C family of APIs…

So we ended up with two string types in our codebase. OK, that’s manageable: we stick with std::string for all platform independent code and convert back-and-forth to the other XString when interacting with system APIs or GUI code. We’ll make some unnecessary copies when crossing this bridge and we’ll end up with some funny looking functions juggling two types of strings; but that’s glue code, anyway… right?

It’s a good plan... until our project grows and we accumulate lots of string utilities and algorithms. Do we restrict those algorithmic goodies to std::string ? Do we fallback on the common denominator const char* and lose the type/memory safety of our C++ type ? Is C++17 std::string_view the answer to all our string problems ?

We’ll try to explore our options, together, with a case study on a 15 year old Windows application: Advanced Installer (www.advancedinstaller.com) - an actively developed C++ project, modernized to C++17, thanks to clang-tidy and “Clang Power Tools” (www.clangpowertools.com).

Slides in pdf

21/04/18
Track C
17:00 - 18:00
Павел Булатов
Павел Булатов
Переход на WebAssembly: стоит ли игра свеч?

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

Будут затронуты темы: • Поддержки стандарта на разных платформах и браузерах. • Производительности и размера сборки в сравнение с asm.js. • Взаимодействия с браузером. • Сборки крешей с пользователя. • Особенностей VM.

20/04/18
Track B
16:00 - 17:00
Александр Гранин
Александр Гранин
Функциональный подход к Software Transactional Memory

Параллельное программирование - тема очень многогранная и глубокая. За десятки лет исследований было выработано огромное количество подходов, практик и инструментов, но вряд ли мы можем считать, что язык C++ успевал за этими тенденциями. Начиная со стандарта C++11, были введены такие концепции как std::thread, std::atomic, std::future, std::mutex, а в будущем ожидается, что будут добавлены coroutines - модель асинхронных вычислений. Что ж, это все интересные вещи для изучения, - но речь в докладе пойдет о совершенно иной идее.

Software Transactional Memory (STM) - концепция транзакционно изменяемой модели данных - существует уже давно и имеет ряд реализаций для всех языков. С помощью STM вы выражаете свою модель данных, и запускаете ее на изменение в нескольких потоках, конкурентно, при этом вам не нужно беспокоиться о синхронизации потоков, о валидном состоянии данных, о блокировках. STM сделает все за вас. Звучит это очень хорошо, однако не все STM-библиотеки одинаково полезны. Традиционные императивные STM очень сложно устроены, подвержены нетривиальным многопоточным багам, и их трудно использовать. С другой стороны, в мире функционального программирования уже давно существует концепция комбинаторной STM, транзакции в которой являются компонуемыми кирпичиками, из которых вы строите транзакции более высокого уровня. Комбинаторный подход к STM позволяет выражать конкурентную модель данных более гибко, понятно и надежно. Параллельное программирование тоже может быть приятным!

В докладе я расскажу об особенностях комбинаторной STM, как ее использовать, и как ее можно реализовать в С++17.

Slides in pdf

21/04/18
Track C
12:45 - 13:45
Иван Пузыревский
Иван Пузыревский
Асинхронность в программировании

В области разработки высоконагруженных многопоточных или распределенных приложений можно все чаще услышать разговоры об асинхронном коде, в том числе спекуляции о необходимости (отсутствии необходимости) учитывать асинхронность в коде, о понятности (непонятности) асинхронного кода, о его эффективности (неэффективности). В данном докладе мы с вами попробуем более глубоко погрузиться в предметную область: разберем, что такое асинхронность; когда она возникает; как влияет на код, который мы пишем, и на язык программирования, который мы используем. Постараемся разобраться, при чем тут futures & promises, немного поговорим про корутины и акторы. Затронем JavaScript и операционные системы. Цель доклада — сделать более явными компромиссы, возникающие при том или ином подходе к разработке многопоточного или распределенного ПО.

Программа

Первый день конференции 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