Начало основного контента

  • Смотреть запись

    Тип доклада: Доклад

    Concurrency Patterns

    Rainer will present in theory and praxis proven patterns such as thread-safe storage, strategized locking, thread-safe interface, or guarded suspension to deal with the enemies of thread-safe programming: shared state and mutation. To synchronize and schedule member function invocations in a concurrent architecture, the classics such as active object, or monitor object provide valuable services.

  • Смотреть запись

    Тип доклада: Доклад

    C++ трюки из userver

    Антон расскажет о новых C++ трюках и приемах. Вас ожидают: LazyPrvalue; обнаружение ODR violation из C++ кода; FixedArray; самая чудная bimapВ чате конференции С++ Russia уже обсуждался последний трюк с чудной bimap. В докладе подробно рассматриваются как предыстория вопроса, так и итоговые результаты с бенчмарками. Готовый к использованию код из доклада уже можно найти на https://userver.tech/.

  • Смотреть запись

    Тип доклада: Доклад

    Автоматизация программирования в СССР. Трансляторы (60–70-е годы)

    Продолжение доклада об автоматизации программирования в СССР. На этот раз речь пойдет о советских трансляторах, созданных в 60–70-е годы. Изложение концентрируется на простых и актуальных даже сегодня алгоритмах. Центральная тема доклада — задача распределения регистров. Что общего между разработками советской компиляторной школы и LLVM с SSA, а также с планированием команд для современных процессоров?

  • Смотреть запись

    Тип доклада: Доклад

    Roren — С++ фреймворк для описания пайплайнов распределенных вычислений

    Огромное количество С++ кода в Яндексе можно описать словами «распределенные вычисления». Доклад посвящен активно разрабатываемому сейчас С++ фреймворку, вдохновленному библиотеками std::ranges и Apache Beam. Этот фреймворк позволяет достаточно компактно и просто описывать такие процессы и запускать их в MapReduce-режиме для обработки таблиц данных или в real-time режиме для обработки бесконечных потоков (очередей) данных.

  • Смотреть запись

    Тип доклада: Доклад

    С++ в мемах

    Антон расскажет через мемы о С++ как продукте: кто его придумывает, как его используют и какие стереотипы о нем существуют. Доклад будет полезен новичкам в С++, потому что он поможет осознать некоторые неочевидные вещи (например, UB и предложения в стандарт), а бывалые найдут в нём множество понятных им шуток и мемов. Но главная цель — чтобы всем было весело.

  • Смотреть запись

    Тип доклада: Доклад

    Как перейти от ученичества к работе

    Как перестать быть учеником и начать работать. Несколько советов начинающим программистам от бывшего джуна.

  • Смотреть запись

    Тип доклада: Доклад

    Как правильно писать компараторы

    В докладе рассматриваются различные ошибки при написании функций сравнения (компараторов) в API типа std::sort: их последствия и средства их обнаружения, предоставляемые современными тулчейнами.

  • Смотреть запись

    Тип доклада: Доклад

    Вперед в прошлое, или Разрабатываем фреймворк под Windows 95 в 2023 году

    Раньше знали, как разрабатывать быстрый софт. Нужно лишь обратиться к знаниям древних!

  • Смотреть запись

    Тип доклада: Доклад

    Компилятор LCC и оптимизация слияния кода

    Эльбрус как архитектура сильно отличается от мейнстримовых архитектур процессоров. Как следствие, она требует от компилятора проведения некоторых особенных оптимизаций. Виктор кратко расскажет про особенности Эльбруса и про его особые оптимизации, реализованные в компиляторе LCC. Более подробно он остановится на оптимизации слияния кода: что это такое, зачем нужно и как работает. 

  • Смотреть запись

    Тип доклада: Обсуждение

    Открытие офлайн-части конференции C++ Russia 2023

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

  • Смотреть запись

    Тип доклада: Доклад

    Безопасный компилятор: надежная оптимизация и улучшение защищенности кода

    Дмитрий рассмотрит примеры кода с различными видами неопределенного поведения, а также неочевидные эффекты от его оптимизации современными версиями GCC и Clang. Он также покажет разработанный ими безопасный компилятор на основе GCC, цель которого — предотвращать некорректные оптимизации кода, содержащего неопределенное поведение. Кроме того, спикер расскажет и про другие методы улучшения безопасности кода, применяемые как в безопасном компиляторе, так и в стандартном GCC, а также их влияние на производительность.

  • Смотреть запись

    Тип доклада: Доклад

    Имплементируем класс tuple в 100 строк кода

    Хотите узнать, как написать класс tuple в 100 строк?

    Вы узнаете, как этого добиться с использованием множественного наследования, index sequence и fold expressions.

  • Смотреть запись

    Тип доклада: Доклад

    Как сделать фронтенд компилятора в домашних условиях

    Владислав и Сергей расскажут, как написать небольшой фронтенд-прототип для компилятора/статического анализатора. В качестве примера используется язык программирования Solidity. Разработка велась на C++20 под Windows, Linux и macOS.

  • Смотреть запись

    Тип доклада: Обсуждение

    Тренды от HR

    Куда идет российский рынок труда? В каких компаниях есть вакансии? Как начинать карьеру? Попробуем ответить на эти вопросы и не только в Главной студии C++ Russia.

  • Смотреть запись

    Тип доклада: Доклад

    Что-то у меня тормозит: заглядываем внутрь С++ контейнеров

    Вернемся к азам и рассмотрим, какие асимптотики имеют различные операции с контейнерами С++ и почему именно так. В конце доклада обсудим общие рекомендации — какой контейнер и когда использовать.

  • Смотреть запись

    Тип доклада: Доклад

    Колоночное хранилище в памяти: void* и шаблоны

    Вместе с Александром разберем устройство колоночного хранилища в памяти и поговорим о том, почему std::vector не дружит с кэшами. Ответим на вопрос, почему void* и шаблоны являются хорошей абстракцией для нашей задачи. Рассмотрим варианты, как можно сдружить API колонок и векторные инструкции. В этом сезоне затронем многие особенности построения колоночного хранилища и посмотрим на него со стороны бенчмарков.

  • Смотреть запись

    Тип доклада: Доклад

    Идея по улучшению многопоточного кода

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

  • Смотреть запись

    Тип доклада: Доклад

    С Conan за кроссплатформенностью

    Доклад о применении менеджера пакетов Conan в разработке computer vision продуктов. Семен расскажет об эволюции их процесса разработки ПО и о том, как пришли к Conan. Он также уделит внимание подводным камням Conan при кроссплатформенной разработке.

  • Смотреть запись

    Тип доклада: Доклад

    Кастомизируем ASIO

    ASIO позволяет использовать std::future из коробки для работы с асинхронными событиями. А что если хочется использовать свою реализацию future? Илья расскажет и покажет, как это сделать. Заодно он поговорит про кастомизацию уровнем ниже, на примере io_uring.

  • Смотреть запись

    Тип доклада: Доклад

    Модель асинхронности в C++: теория и практика

    В стандарте C++26 планируется к принятию новая модель асинхронных вычислений — std::execution, также известная как Senders/Receivers. Эрнест расскажет о том, какие проблемы и каким образом она призвана решить, а также о том, как новый подход можно испытать на практике в C++17 при помощи библиотеки libunifex.

  • Смотреть запись

    Тип доклада: Доклад от партнера

    Прокачиваем LLDB, или LLDB formatters

    Приходилось ли вам разворачивать 100500 вложенных конструкций внутри std::variant после каждого F10? А что, если отлаживаться нужно на Linux, и у вас нет Visual Studio? Как решить некоторые из этих проблем с помощью открытого API отладчика LLDB? Олег предлагает обсудить это в рамках своего TechTalk.

  • Смотреть запись

    Тип доклада: Доклад

    Практика программирования тензорных ядер

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

  • Смотреть запись

    Тип доклада: Доклад

    YsonStruct: дешевая сериализация иерархических JSON-структур

    Яндекс представляет библиотеку, позволяющую реализовать сериализуемые в JSON структуры на C++. В своем выступлении Иван расскажет про высокоуровневый дизайн библиотеки; технические трудности в реализации (поведение виртуальных методов, линковка шаблонных классов и т. д.); опыт внедрения библиотеки в большую кодовую базу; попытки сделать хороший интерфейс.

  • Смотреть запись

    Тип доклада: Обсуждение

    Техническое интервью: Архитектурная секция

    Посмотрим, как обычно проходит интервью, какие знания и навыки нужны кандидату, и заодно разберем ошибки, которые могут допустить обе стороны.

  • Смотреть запись

    Тип доклада: Доклад

    Семантические процессы в C++

    Доклад посвящен описанию взаимодействующих семантических процессов в языке C++, как с точки зрения внутренностей компилятора, так и с точки зрения стандарта языка.

  • Смотреть запись

    Тип доклада: Доклад

    C++ Experiments: The Battle Continues: Cpp2 vs Carbon

    Несмотря на работу комитета над новыми стандартами языка, похоже, некоторые инварианты не могут быть пересмотрены, и активисты ведут работу в создании своих C++ совместимых языков по этим мотивам. Вы снова окунетесь в дизайн с тем, чтобы попытаться ответить на вопрос: зачем? Что такого нового предлагается и чего может не хватать в С++?

  • Смотреть запись

    Тип доклада: Доклад

    Dynamic Libraries for Bare Metal

    Все привыкли к динамически загружаемым библиотекам в больших ОС: это экономит размер исполняемого файла и позволяет обновлять только необходимые компоненты. Однако в bare metal-разработке это не так популярно и распространено. Антон расскажет про свой опыт в этой области и обсудит плюсы и минусы такого подхода.

  • Смотреть запись

    Тип доклада: Обсуждение

    Закрытие конференции C++ Russia 2023

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

  • Смотреть запись

    Тип доклада: Доклад

    Back to Basics: Lock-free

    Марсель расскажет про стандартные способы работы в многопоточной среде (мьютексы, compare and swap, hazard pointer) и алгоритм снятия снапшота двух атомарных «регистров».

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

  • Смотреть запись

    Тип доклада: Обсуждение

    Нужны ли профсоюзы в IT?

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

  • Смотреть запись

    Тип доклада: Доклад

    Sizecoding: взгляд изнутри

    Поговорим о том, что такое sizecoding и в чем его отличия от классического программирования. Разберем несколько алгоритмов конкретных демо-эффектов и их реализацию. Изучим программные трюки, позволяющие уместиться в заданный объем исполняемого кода.

  • Смотреть запись

    Тип доклада: Доклад

    Опыт использования Bazel

    Евгений поделится опытом использования Bazel на примере двух проектов. В первом проекте он пользовался им как C++/Python-разработчик. Во втором проекте, в Лаборатории Касперского, спикер участвует в команде, которая переводит кодовую базу с CMake на Bazel. Он расскажет о killer features этой системы сборки — ее преимуществах и недостатках.

  • Смотреть запись

    Тип доклада: Доклад

    nocc — распределенный компилятор для гигантских проектов на C++

    Александр расскажет про распределенный компилятор nocc. Это как distcc, только быстрее. И как ccache, только удаленный.

  • Смотреть запись

    Тип доклада: Доклад

    Эффективное использование GPU на примере разработки игр

    В докладе описываются общие моменты анализа и эффективного использования современного графического процессора на примере компьютерных игр. Профилирование и оптимизация для GPU. Разбор методик из геймдева для повышения производительности.

  • Смотреть запись

    Тип доклада: Доклад

    Designing Robust APIs: How to Write C++ Code that's Safe, Extensible, Efficient & Easy to Use

    Современное С++ сообщество уделяет удивительно мало внимания тому, как писать хороший код. Даже само понятие «хорошего кода» скорее предмет холиваров, а не обоснованных дискуссий. Александр намерен это исправить. Он рассмотрит проблемы, с которыми сталкиваются инженеры, переносящие сложные концепты в С++ код, и приемы, которые помогут вам этот процесс упростить и упорядочить.

  • Смотреть запись

    Тип доклада: Доклад

    С++ и безопасность: правда ли все так плохо?

    Не так давно Агентство национальной безопасности (NSA) опубликовало гайд, в котором объявило языки С/C++ «опасными» и требующими перехода на «безопасные» C#, Go, Java, Ruby, и Swift. Сергей подробно проанализирует этот документ и расскажет, так ли плохо обстоят дела с безопасностью в С++ на самом деле, и что современная индустрия предлагает для решения этого вопроса.

  • Смотреть запись

    Тип доклада: Доклад

    B-tree индексы в базах данных на примере SQLite и PostgreSQL

    Владимир поговорит о работе обычных™ индексов в базах данных и расскажет: как индекс ускоряет поиск; нужно ли индексировать условия where; нужно ли индексировать условия в order by; нужно ли индексировать foreign keys; что делать, если критериев поиска несколько; в каком порядке указывать колонки в индексе; когда индекс замедляет работу и как снизить влияние индекса на приложение.

  • Смотреть запись

    Тип доклада: Доклад

    GPU Driven Rendering Pipeline, или Как пишется графика в современных видеоиграх

    Рассказ о том, как используется Graphics API в современных движках, а также как pipeline переходит с CPU на GPU.

  • Смотреть запись

    Тип доклада: Доклад

    Практическое применение dev-контейнеров

    Dev-контейнер — это инструмент, позволяющий создать и использовать среду, в которой находятся все необходимые для проекта тулчейны. Эту настроенную среду удобно использовать как при разработке в команде, так и при ревью проекта третьими лицами.

  • Смотреть запись

    Тип доклада: Доклад

    Учим Кукушку Летать, или ConcurrentHashMap with Seqlocks

    Учим алгоритм многопоточного ассоциативного хэш-массива работать в сотни раз быстрее с помощью SeqLock, попутно решая трудности перевода на С++.

  • Смотреть запись

    Тип доклада: Доклад

    Advanced Linux Kernel Bypass Techniques in 2023

    Recent kernel version feature io_uring helps developers communicate with the host Operating System at lower latencies, avoiding interrupts caused by direct system calls. This asynchronous interface brings substantial performance improvements to databases and networking applications but is still rarely seen in real products. Still, even that is not State-of-the-Art. We will talk about SPDK, DPDK, and the kind of performance you can expect from high-end SSDs and 200 GBit Infiniband.

  • Смотреть запись

    Тип доклада: Доклад

    Исходный код: скрытое знание и как его показать?

    Доклад посвящен проблеме глубокого анализа семантики программ, представленных в исходных текстах, и наглядного (удобного для восприятия) отображения знания о ее семантике. Предлагается ряд подходов и технологий, направленных на извлечение и визуализацию знаний о семантике программ, в том числе «скрытой семантики», а также общей архитектуре программных систем.

  • Смотреть запись

    Тип доклада: Доклад

    Злые фреймворки и генерируемый ими позиционно-независимый код

    В прошлом году Денис говорил о том, как выглядит ваш код на С++ в скомпилированных исполняемых файлах. В этом году он предлагает посмотреть на position-independent code (PIC) с хорошо знакомой ему стороны — такой код часто применяется во вредоносах. Вы узнаете, зачем имплантам PIC, и услышите про «ненормативные» техники, которые редко встречаются в легитимном ПО.

  • Смотреть запись

    Тип доклада: Доклад

    Про flat_map

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

     

  • Смотреть запись

    Тип доклада: Доклад

    Про алгоритмы в поисковых движках

    Андрей расскажет про ключевые и уникальные для поиска алгоритмы и структуры данных. Он также пробежится по верхам и ключевикам других неуникальных, но особо интересных и важных алгоритмов и техник, которые могут встречаться хоть где-то, кроме поиска. Примерный спектр этих, неуникальных алгоритмов: от банальных SIMD-оптимизаций всяких парсеров через ловкие особые спецалгоритмы сжатия к совсем верхнеуровневым штукам, типа интеграций CatBoost и прочих FAISS.

  • Смотреть запись

    Тип доклада: Доклад

    Техники оптимизации производительности

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

  • Смотреть запись

    Тип доклада: Доклад

    Санитайзеры и стандарт не спасут

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

  • Смотреть запись

    Тип доклада: Доклад

    Loop unrolling в деталях

    Иван рассмотрит классический вариант loop unrolling'а: как и когда он применяется и его подводные камни. Он также сравнит подходы Clang и GCC к раскрутке циклов и научит вас помогать компиляторам справляться с вашим кодом.

  • Смотреть запись

    Тип доклада: Доклад

    Машина состояний: непридуманная история

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

  • Смотреть запись

    Тип доклада: Доклад

    Производство ПО глазами разработчика и менеджера

    Многие из нас занимаются разработкой ПО, находясь в неком проектном процессе. Александр расскажет и о вариантах таких проектов, и о роли разработчика в этих процессах. Он затронет проблему технического долга: откуда берется и почему не исчезает. В рамках доклада обсудим, на что разработчик может влиять в производственном процессе, а до чего обычно не дотягивается. Обязательно рассмотрим особенности C++ разработки в проектной деятельности.

  • Смотреть запись

    Тип доклада: Доклад

    Максимально быстрый и максимально удобный С++ msgpack-кодек

    Александр расскажет про реализацию msgpack-кодека на C++, которая использует массу возможностей С++, позволяя паковать и распаковывать абсолютно абстрактные типы, в том числе в compile time, без динамической аллокации памяти, zero-copy (или once-copy?) и максимально branchless.

  • Смотреть запись

    Тип доклада: Доклад

    Back Deep to Basics: Наследование и виртуальность в C++ (Часть 1)

    Наследование, виртуальные функции, v-таблицы, виртуальное наследование — вещи до боли знакомые каждому C++ разработчику. Эти вещи напрямую влияют на производительность, объем наших бинарных файлов, а иногда на безопасность нашего кода. Так давайте вернемся к началам и разберемся в деталях этой машинерии. Рассмотрим, что есть нового в этой области и как оно работает под капотом.

  • Не записывалось

    Тип доклада: BOF-сессия

    Вопросы преподавания языка в вузе

    С чего начинать программирование? С какого языка? Как безболезненно перейти к изучению С++? Что необходимо преподавать, без чего не обойтись?

  • Смотреть запись

    Тип доклада: Доклад

    Тот самый стендап от Павла Филонова 

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

  • Не записывалось

    Тип доклада: Доклад

    Lightning Talks

    Давно хотели попробовать себя в роли спикера? Вам не терпится поделиться с миром идеями или кейсами из рабочей практики? Посмотрели выступления C++ Russia и чувствуете, что можете добавить к докладам что-то свое? Тогда подавайте заявку заранее или записывайтесь на выступление прямо на площадке!

  • Не записывалось

    Тип доклада: BOF-сессия

    Актуальные проблемы GPGPU-разработки

    Поговорим о современных платформах для GPGPU: CUDA, OpenCL, SYCL, oneAPI и других. Обсудим производителей и тенденции развития видеокарт. Разберемся, какие задачи стоит решать с помощью GPGPU, а какие нет. Поделимся историями из жизни и покажем, что GPGPU разработки не стоит бояться.