Всем привет!


До C++ Russia осталось меньше месяца — самое время показать вам, о чём там расскажут-то.


Как обычно, спектр тем будет широкий — от прикладных («решаем нетривиальные задачи средствами современного CMake») до довольно академических («как лямбды в C++ и других языках соотносятся с исходной идеей лямбд»). Как обычно, состав спикеров интересный, и о некоторых технологиях поведают их непосредственные авторы: обсудим Compiler Explorer с Мэттом Годболтом, а про GWP-ASan расскажет Константин Серебряный.


А подробнее о блоках программы и каждом докладе — под катом.


Чтобы было проще ориентироваться, доклады в программе поделены на следующие блоки:


General computer science
Практичный С++
Тулинг
Производительность
Возможности новых стандартов
Воркшоп


General computer science


«Everything you know about colour is wrong», Guy Davidson


Доклад Гая — это отличное введение в теорию цвета для программистов. Тема полезна в первую очередь тем, кто занимается геймдевом, но мы уверены, что она будет интересна и широкому кругу разработчиков. По нескольким причинам: в первую очередь, потому что Гай — отличный докладчик, и кроме того, тема является хорошей иллюстрацией практичного решения задач на C++. С учётом того, что это доклад от ведущего разработчика Creative Assembly, доклад обещает быть очень интересным.




«Архитектура компиляции С++: Проблемы и решения», Евгений Зуев


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




«Lambda? You keep using that letter», Kevlin Henney


Ещё одна тема, близкая к академической. Кевлин — отличный докладчик, расскажет о том, что же такое лямбды в программировании вообще и в C++ в частности и как это связано с самыми разными концепциями и парадигмами программирования.




«ITM: My least favorite anti-pattern», Conor Hoekstra


И немного поговорим про дизайн наших программ. Конор обобщает несколько известных правил хорошего тона и сводит их к одному: не используйте Initialize Then Modify. Доклад будет полезен для самого широкого круга C++ программистов.




Практичный С++


«Windows, macOS and the Web: Lessons from cross-platform development at think-cell», Sebastian Theophil


Доклад Себастьяна посвящен очень интересной и сложной теме: кросс-платформенности. Это может казаться странным, что в XXI веке мы всё ещё обсуждаем такие вопросы. Ведь есть куча фреймоврков, да что там, есть куча языков, которые обещают «write once, run everywhere», но если вы пробовали поддерживать много устройств или добавлять поддержку новой платформы, вы знаете, как больно это может быть. Себастьян делится богатым опытом добавления новой платформы. В целом это доклад не о том, как правильно писать на Qt, чтобы не было больно, а о движении вперёд в решении проблем с кроссплатформенностью.




«Проблемы embedded или как мы от SQLite ушли», Михаил Беляев


Ещё один очень практичный доклад от Михаила Беляева о работе в условиях ограниченных ресурсов. Самое интересное в этом докладе — описание того, как и почему менялся продукт изнутри. Отказ от достаточно стандартного подхода по использованию SQLite, который принёс свои плоды. Как и почему было сделано такое решение? Справляется ли сделанная локально замена с работой? Доклад полезен разработчикам, которые интересуются embedded-системами или другими системами с ограниченными ресурсами. Будет интересено всем, пишет на C++ и знает о трейдоффах, которые приходится делать.




«Конструкторы и деструкторы: Несколько вещей, которые вы, возможно, захотите узнать», Павел Новиков


Доклады Павла Новикова неизменно пользуются популярностью на конференции. У него хорошо получается разбирать очень глубокие и важные темы. Он уже делал отличный доклад про инициализацию, в этот раз его доклад посвящен конструкторам и деструкторам. Опять тема, которую должен знать каждый, и опять отличный разбор тёмных уголков C++.




«Variable Length Array: Так ли страшен черт, как его малюют?», Евгений Ерохин


Доклад Евгения Ерохина тоже посвящен теме, с которой вы, возможно, сталкиваетесь каждый день. Многие до сих пор считают, что VLA — это обман, и на самом деле все не так, а компиляторы скрывают. Евгений расскажет, что же такое на самом деле VLA, замедляют ли они ваши программы и является ли их использование вредным.




«Trying to build an open source browser in 2020», Patricia Aas


Инфраструктура C++ проектов, инструменты, которые доступны C++ разработчику, — это тема, которая сильно волнует программный комитет конференции, потому что это очень больная тема сообщества. В первую очередь из-за разнообразия, количества этих инструментов. Несколько докладов будет посвящены этому вопросу. Например, доклад Патрисии. Как видно из названия, доклад о разработке браузера на C++, но в первую очередь он об инструментах, которые помогут в этом нелегком (очень) деле. Это рассказ о создании сложного продукта с нуля.




Тулинг


«Ищем баги в продакшене всем миром: GWP-ASan и что дальше», Константин Серебряный


К сожалению, мы все допускаем ошибки, иногда эти ошибки стоят очень дорого, и нужно инвестировать время в раннее обнаружение ошибок. На прошлых конференциях мы обсуждали фаззинг, санитайзеры и на этой продолжим эту богатую тему. Константин Серебряный, один из авторов как Asan, так и GWP-ASan, расскажет о GWP-ASan, области его применения и основных свойствах.


Программный комитет рекомендует этот доклад всем.




«Hacking modern CMake», Александр Воронков


Ещё один доклад об инструменте — это доклад Александра Воронкова. Хорошо это или плохо, но CMake сейчас — стандарт де-факто для сборки C++ проектов. Несмотря на всю сложность и иногда излишнюю многословность, это очень мощный инструмент. Александр расскажет об интересных проблемах сборки и том, как CMake помогает решить их. Доклад для тех, что уже может собрать hello world с помощью CMake и хочет оптимизировать процесс сборки или принять правильный подход к написанию CMakeFile.txt.




«Аннотирование ELF-файлов compile-time информацией для последующего анализа», Михаил Кашкаров


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


Будет полезно мейнтейнерам больших кодовых баз из множества C/C++ проектов для отслеживания критических измений между релизами. Подход дает дополнительные возможности для нелокальных оптимизаций на основе результатов компиляции, которые в данный момент проблематично собирать в общем случае, особенно для больших сборок.




«Interview and Q&A: Reluctantly a Verb», Matt Godbolt


И, наконец, заканчивая разговор об инструментах: мы приглашаем вас пообщаться с Мэттом Годболтом — создателем одного из самых популярных инструментов последних лет Compiler Explorer. Это сервис и тулза, которая приобрела широкую популярность среди С++ (и не только!) программистов за последние годы, причем популярность растет, и сервис реально удобный. И он развивается. Всем интересно узнать о том, как он начинался, развивался и что у него под капотом. Также Мэтт расскажет о некоторых оптимизациях C++ компиляторов, которые можно наглядно наблюдать с помощью Compiler Explorer. То есть это пример практического применения этой тулзы/сервиса.




Производительность


«SIMD. Производительность, за которую вы уже заплатили», Ашот Варданян


Этот доклад — рассказ о том, что же такое SIMD, почему есть смысл использовать этот набор инструкций, когда можно его использовать, а когда делать это просто вредно. Доклад для тех, кто не очень доверяет своим компиляторам и хочет выжать максимум из процессора на этапе выполнения.


Недавно Ашот Варданян участвовал в нашей YouTube-передаче Pure Virtual Cast, и там речь тоже заходила о SIMD-инструкциях, так что для начала можно посмотреть этот выпуск. Но, конечно, диалог и доклад со слайдами — разные форматы, и одно не заменяет другое, так что в идеале стоит увидеть всё.




«Первые шаги в SIMD. Реализация STL-алгоритмов с помощью AVX2 vector extensions», Денис Ярошевский


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


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




Возможности новых стандартов


«С++: До и после концептов», Александр Ганюхин


На конференции мы всегда стараемся представить не только глубоко практичные доклады, но и доклады о будущем C++. Сейчас актуальны новые инструменты из свежепринятого C++ 20, и на этот раз мы выбрали доклад Александра Ганюхина о концептах в C++, так как это нововведение в языке одно из самых основополагающих.


Доклад будет интересен всем, кто пишет на C++ и не боится иногда ввернуть метапрограммирование там, где это нужно.




«Unique_pseudofunction — N overloads for the price of one», Filipp Gelman


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




«Interview and Q&A: ABI, change, and the future», Titus Winters


Сохранение ABI считается незыблемым правилом в C++. ABI-совместимость стандартной библиотеки гарантируются C++ разработчикам стабильно из релиза в релиз. Но в сообществе все чаще возникают споры о необходимости таких ограничений. Идеи по улучшению производительности в стандартной библиотеке зарубаются зачастую именно по соображениям совместимости ABI. Буквально недавно о необходимости разобраться в приоритетах развития языка стал активно говорить Google. Их предложение ABI — Now or Never (P1863) обозначило проблему и призывает коммитет по стандартизации языка определиться с приоритетами.


Титус — автор этого предложения. В формате интервью обсудим с ним вопросы стабильности C++ ABI, как будет развиваться экосистема C++ и почему вас это должно волновать.




Воркшоп


«Метапрограммирование в действии», Вадим Винник


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


Бонус: а не дожидаясь конференции, можно будет увидеть Вадима на бесплатном онлайн-фестивале TechTrain, где мы обсудим с ним, как C++ пересекался с разными парадигмами программирования.




Загляните на сайт конференции — там есть более подробные описания докладов, расписание по дням и, конечно же, билеты.