Доклады

Лучшие докладчики со всей страны за два дня. Если вам тоже есть, о чём рассказать отправляйте заявку. Как обычно, продолжительность доклада не должна превышать 50 минут (с учетом вопросов).

Мы рады докладам о C++(11/14/17), STL, Boost, Qt, любых других библиотеках, тестировании и сборке крупных проектов на С++, асинхронности и конкурентности, etc.

21/04/18
Track C
12:45 - 13:45
Александр Гранин
Александр Гранин
Software Transactional Memory

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

20/04/18
Track B
17:00 - 18:00
Алексей Салмин
Алексей Салмин
Memory Management Tips & Tricks

В 2017 году вопрос выбора аллокатора в C++ не теряет актуальности. В стандарт добавили новый способ выбрать локальный аллокатор для контейнеров (std::pmr), глобальные tcmalloc и jemalloc продолжают развиваться, как и интерфейсы ядра, на которые они опираются. Данный доклад посвящен “нижнему этажу” этой конструкции: особенностям работы mmap и madvise в ядре Linux и влиянию этих особенностей на производительность аллокаторов.

20/04/18
Track A
12:45 - 13:45
Arno Schödl
Arno Schödl
From Iterators To Ranges — The Upcoming Evolution Of the Standard Library

Pairs of iterators are ubiquitous throughout the C++ library. It is generally accepted that combining such a pair into a single entity usually termed Range delivers more concise and readable code. Defining the precise semantics of such Range concept proves surprisingly tricky, however. Theoretical considerations conflict with practical ones. Some design goals are mutually incompatible altogether.

20/04/18
Track B
16:00 - 17:00
Фёдор Короткий
Фёдор Короткий
Память – идеальная абстракция
int* ptr = new int;
*ptr = 42;
delete ptr;

Что на самом деле происходит, когда выполняются эти 3 строчки кода? Мы заглянем внутрь аллокатора памяти, операционной системы и современного железа чтобы дать исчерпывающий ответ на этот вопрос.

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

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

  • с какими проблемами мы столкнулись в работе над курсами (например, через 3 месяца работы мы выбросили все материалы и начали заново)
  • как мы формируем программу курсов и почему именно так (например, почему слово "указатель" не прозвучало в двух наших первых курсах ни разу)
  • что мы узнали нового, работая над курсами и общаясь со слушателями
  • байки, курьёзы и интересные факты
20/04/18
Track B
12:45 - 13:45
Иван Пономарёв
Иван Пономарёв
Crash репорты Android NDK

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

В первой части доклада будут кратко рассмотрены уже имеющиеся наработки: как работает встроенный отладчик Android, какие решения уже существуют. Вторая часть посвящена рассказу о том, как это работает «под капотом»: как получить состояние процессора на момент ошибки, как раскрутить стек вызовов, как узнать номера строк в исходном коде. Будет дан обзор таких библиотек для раскрутки стека, как libcorkscrew, libunwind, libunwindstack.

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

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

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

20/04/18
Track A
13:45 - 14:45
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++.

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

Этот доклад будет идти по следам докладов о повседневном C++ от Михаила Матросова, развивая ещё одно правило: изолировать код в стиле C. Рассмотрим, чем хороши библиотеки на C (такие как SQLite, OpenGL, OpenSSL, libclang) и почему без них нельзя жить. Потом разберёмся чем плохи объектно-ориентированные библиотеки категории “C++ wrapper for X” Такие как curlcpp. Затем посмотрим, как можно на процедурном подмножестве C++ сделать хороший “C++ wrapper for X”

20/04/18
Track C
13:45 - 14:45
Сергей Васильев
Сергей Васильев
Статический анализ: ищем ошибки... и уязвимости?

Новости об очередной найденной уязвимости регулярно всплывают то тут, то там. Сопутствующие потери $, как правило, колоссальны. Поэтому вместо исправления уязвимостей, следует не допускать их появления.

Один из способов борьбы с ошибками в коде – использование статического анализа. Но насколько он подходит для поиска уязвимостей? И так ли велика разница между простыми ошибками и уязвимостями с точки зрения кода?

Эти вопросы мы и обсудим в ходе доклада, а заодно поговорим о том, каким образом использовать статический анализ так, чтобы извлечь из него максимум пользы.

Platinum спонсор

Gold спонсоры

Silver спонсоры

Community спонсоры