C++ Russia: что будем обсуждать уже через месяц
Всем привет!
До C++ Russia осталось меньше месяца — самое время показать вам, о чём там расскажут-то.
Как обычно, спектр тем будет широкий — от прикладных («решаем нетривиальные задачи средствами современного CMake») до довольно академических («как лямбды в C++ и других языках соотносятся с исходной идеей лямбд»). Как обычно, состав спикеров интересный, и о некоторых технологиях поведают их непосредственные авторы: обсудим Compiler Explorer с Мэттом Годболтом, а про GWP-ASan расскажет Константин Серебряный.
А подробнее о блоках программы и каждом докладе — под катом.
Чтобы было проще ориентироваться, доклады в программе поделены на следующие блоки:
— General computer science
— Практичный С++
— Тулинг
— Производительность
— Возможности новых стандартов
— Воркшоп
General computer science
«Everything you know about colour is wrong», Guy Davidson
«Архитектура компиляции С++: Проблемы и решения», Евгений Зуев
Евгений Зуев за свою карьеру написал несколько компиляторов 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
«Проблемы 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 и что дальше», Константин Серебряный
Программный комитет рекомендует этот доклад всем.
«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. Производительность, за которую вы уже заплатили», Ашот Варданян
Недавно Ашот Варданян участвовал в нашей YouTube-передаче Pure Virtual Cast, и там речь тоже заходила о SIMD-инструкциях, так что для начала можно посмотреть этот выпуск. Но, конечно, диалог и доклад со слайдами — разные форматы, и одно не заменяет другое, так что в идеале стоит увидеть всё.
«Первые шаги в SIMD. Реализация STL-алгоритмов с помощью AVX2 vector extensions», Денис Ярошевский
Доклад Дениса менее обзорный, посвящен реализации известных всем алгоритмов с помощью SIMD. Это может помочь вам ускорить ваш код в несколько раз, но придётся хорошо постараться, чтобы заставить это счастье работать.
Оба доклада подойдут программистам, которые только хотят начать изучать SIMD и разобраться, когда, зачем и как стоит подыгрывать компилятору.
Возможности новых стандартов
«С++: До и после концептов», Александр Ганюхин
Доклад будет интересен всем, кто пишет на 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++ пересекался с разными парадигмами программирования.
Загляните на сайт конференции — там есть более подробные описания докладов, расписание по дням и, конечно же, билеты.