Викторина «С++. Правда или вымысел»

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

Random coffee

Провели одно из самых востребованных мероприятий на онлайн-конференциях Яндекса.

Бот случайным образом подбирал пары собеседников среди участников мероприятия.

Программа

(по московскому времени, GMT+3)

12:00

Открытие конференции

12:10

Анатомия асинхронных движков

Тезисы: В последние годы практически во всех язызках программирования набирают популярность асинхронные движки с корутинами. ДА давайте посмотрим, как эти движки устроены и что в них такого хорошего для I/O- bound приложений! Посмотрим, как люди жили до современных корутин, рассмотрим базовые компоненты асинхронного движка, и окунеёмся в дивныйм мир движковых оптимизаций и хитростей:

  • использование стека как «„кучи“»;
  • мьютексы, которые не блокируют потоки;
  • таймеры и поколения;
  • отмены.

Смотреть на YouTube

Антон Полухин Яндекс Go
13:00

Асинхронность в С++20

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

Смотреть на YouTube

Григорий Демченко WhatsApp
13:50

Зачем C++ в Такси

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

Смотреть на YouTube

Александр Голубев Яндекс Go
14:40

Перерыв

15:10

Статический анализ кода++

В одной из статей Мартин Фаулер писал, что софт более высокого качества обходится дешевле в создании (а не только в поддержке, как можно было бы подумать). Отчасти поэтому сообщество C++ тепло встретило C++ Core Guidelines, представленные в 2015 году. Хотя в них не всегда четко прослеживается грань между абстрактными советами в стиле «хорошо писать хорошо» и более конкретными предложениями, которые можно реализовать в статических анализаторах, наподобие «в таких ситуациях надо проверять вот это». Что же умеют современные статические анализаторы? Какие типичные боли C++ и стилистические неточности они отлавливают? Как разработчики предпочитают взаимодействовать с подобными инструментами? В докладе поговорим об этих вопросах и даже обсудим геймификацию в анализаторах кода.

Смотреть на YouTube

Анастасия Казакова JetBrains
16:00

C++ zero-cost abstractions на примере хеш-таблиц в ClickHouse

Хеш-таблицы — это королевы структур данных. Нигде не сломано так много копий, как на оптимизации хеш-таблиц.
В своем докладе я расскажу еще об одной хеш-таблице, которая используется в ClickHouse.
Я покажу, как zero-cost abstractions в современном С++ оправдывают себя и как с помощью небольших трюков можно получить разнообразные структуры данных из общей кодовой базы.
На основе общих строительных блоков мы получим быстроочищаемую хеш-таблицу, несколько видов LRU-кешей, lookup-таблицы без хешей, хеш-таблицы для строк и т. п.
Я расскажу, как получить максимальную производительность на конкретных сценариях и как не ошибиться при ее тестировании.
В моем докладе — самая мякотка низкоуровневых оптимизаций — в общем, то, что мы любим.

Смотреть на YouTube

Максим Кита Яндекс
16:50

Как перекладывать байты

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

Смотреть на YouTube

Алексей Миловидов Яндекс
17:40

Итоги викторины «С++. Правда или вымысел»

18:00

Workshop «Metaprogramming. Making a Convenient API.»

Have you ever thought about user interface problems? Have you faced an API that you would have designed differently? Have you analyzed why one API is better than another? That’s exactly what library developers do every day. For the products we develop (oneTBB, oneDPL), API usability is our top priority. As we say within the team, never stop at a complex implementation if you see value for the user.

I’m going to tell you about one long brainstorming session we had in the past when trying to build a good API for oneTBB: we talked about templates, parameter sets, type deduction, type traits, metaprogramming, deduction guides, and more. Then, I will lead you from our initial prototype to what is currently shipped with our product (and a bit beyond). If you are not very familiar with the features I’ve listed above, don’t worry. All you need is a basic understanding of templates and I will do my best to explain the rest.

I look forward to an interesting discussion.

Смотреть на YouTube

Руслан Арутюнян Intel
12:10

Уязвимости аллокаторов памяти

Для языков С/С++ хорошо известны техники атак на переполнение буфера в стеке с последующей передачей управления через ROP. Это распространенная, но далеко не единственная проблема, связанная с переполнением выделенной памяти.
Отдельный класс уязвимостей связан с переполнением памяти, выделенной в куче, и перехватом потока исполнения через модификацию памяти с помощью алгоритмов работы аллокаторов.
В докладе будут рассмотрены как простейшие примеры уязвимостей, которые относятся еще к dlmalloс, так и более современные техники.

Смотреть на YouTube

Павел Филонов Kaspersky
13:00

Использование стандартной библиотеки С++ в приложениях с низкой задержкой

Видеоигры, обработка аудиосигналов в режиме реального времени и другие подобные приложения низкой задержки требуют того, чтобы код был не только корректным, но также и исчислял требуемый результат надёжно в детерминированный срок выполнения. В этом докладе мы рассмотрим, в какой степени можно использовать стандартную библиотеку С++ для создания приложений с подобными «real-time» ограничениями. Какие инструменты из стандартной библиотеки можно использовать с уверенностью, что они не будут блокировать поток, ждать освобождения мьютекса, не будут выделять или освобождать память и не будут совершать другие подобные действия с недетерминированной задержкой? Каких средств из набора стандартной библиотеки следует избегать и почему? По пути мы обсудим некоторые малоизвестные и неожиданные аспекты этих привычных нам стандартных инструментов.

Смотреть на YouTube

Тимур Думлер Cradle
13:50

Паттерны отказоустойчивой архитектуры

Перебои и ошибки в работе распределённых систем (будь то Web или IOT) совершенно обычная ситуация. Проблемы в работе с сетью, перебои в работе зависимостей и банальный человеческий фактор — та цена, которую мы платим за общую стабильность системы, лёгкую масштабируемость и гибкость в разработке.

На примере эволюции одного вымышленного (ну, почти вымышленного) сервиса по доставке напитков мы рассмотрим проблемы, с которыми он сталкивался, и решения, которые помогли с ними справиться.

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

Смотреть на YouTube

Александр Кривощёков Яндекс
14:40

Перерыв

15:10

За полгода — С++ Погода

Расскажу, как мы переписали с наскоку весь runtime с большого неуклюжего монолита на Node.js на микросервисы C++.

Много о хорошем:
  • какой RPS мы теперь держим;
  • как мы избавились от кешей и отвечаем самыми актуальными данными;
  • как нам помогают новые стандарты C++;
  • сколько железа сэкономили (в это дефицитное время) и каким образом.

И немного о том, с какими сложностями мы столкнулись.

Уровень доклада: начальный

Доклад будет полезен начинающим разработчикам, которые хотят узнать, что такое писать сервисы на C++. Также может быть полезен разработчикам постарше, ведь в своём докладе я расскажу, как мы сэкономили железо, переиспользовав источники данных.

Смотреть на YouTube

Дмитрий Старков Яндекс
16:00

Оптимизируем на примере dot-product

Возьмём простую задачу — скалярное произведение двух vector< float > — и попробуем выжать все соки для этой задачи. Обсудим вопросы использования возможностей процессора, настроек компилятора (и даже попробуем превзойти его), некоторые сопутствующие вопросы. А также обсудим правильную постановку задачи, приоритеты, выбор архитектуры (да, даже на примере столь простой задачи вопрос правильного выбора абстракций может встать).

Смотреть на YouTube

Ильнур Хузиев Яндекс
16:50

Branchless computing in C++

Introduction to processor architecture (pipelining, memory latency)
Execution of branches by hardware (branch prediction, speculative execution)
Demonstration of the performance cost of branching
Branch optimization
Converting code to branchless execution

Доклад будет на английском языке.

Смотреть на YouTube

Фёдор Пикус Mentor Graphics Corp (Siemens business)

Спикеры

Антон Полухин

Яндекс Go, Руководитель группы разработки общих компонент

Представитель России в международной рабочей группе по стандартизации C++ (WG21 ISO). Автор многих принятых предложений к стандарту языка C++.

Председатель российской рабочей группы по стандартизации С++ (https://stdcpp.ru/). Разрабатывает и поддерживает стандартную библиотеку GСC, библиотеки Boost. Aвтор Boost-библиотек TypeIndex, DLL, Stacktrace и активный maintainer Any, Conversion, LexicalCast, Variant.

Автор книг «Boost C++ Application Development Cookbook».

Фёдор Пикус

Mentor Graphics Corp (Siemens business), Chief Engineering Scientist in the Design to Silicon division

Fedor G. Pikus is a Chief Engineering Scientist in the Design-to-Silicon division of Mentor Graphics (a Siemens business). His earlier positions include Senior Software Engineer at Google and Chief Software Architect for Calibre PERC, LVS, and DFM at Mentor Graphics. He joined Mentor Graphics in 1998 when he made the switch from academic research in computational physics to the software industry. Fedor is a recognized expert in high-performance computing and C++, has presented his works at CPPCon, SD West, DesignCon, and in Software Development Journal, and is also an O’Reilly author. His responsibilities as Chief Scientist include planning the long-term technical direction of Calibre products, directing and training the engineers who work on these products, the design and architecture of the software, and conducting research on new design and software technologies. Fedor has over 25 patents and over 100 papers and conference presentations on physics, EDA, software design, and C++.

Алексей Миловидов

Яндекс, Руководитель группы разработки ClickHouse

Окончил МГУ им. М. В. Ломоносова. В Яндексе с 2008 года. Руководит группой разработки СУБД ClickHouse.

Тимур Думлер

Cradle, Head of Technology

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

Александр Кривощёков

Яндекс, Руководитель группы разработки каталога в Яндекс.Едe

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

До Яндекса занимался разработкой B2B-платформы финансового моделирования для управления и оценки инвестиций в недвижимость.

В свободное время разрабатывает (но часто времени хватает только пофантазировать) узконаправленные и фановые языки программирования.

Павел Филонов

Kaspersky, Research Developer Group Manager

Занимается развитием Data Science команды в Kaspersky, которая предоставляет для продуктов и сервисов компании функционал на основе машинного обучения.
В роли Data Scientist участвовал в разработке Kaspersky MLAD и MDR AI Analyst.
В роли разработчика C++ участвовал в создании MaxPatrol SIEM.
В течение многих лет преподает computer science дисциплины в МГТУ ГА.
Автор серии докладов про ML, С, управление DS-проектами и развитие команды. Член ПК конференции C Russia.

Александр Голубев

Яндекс Go, Руководитель сектора разработки инфраструктуры Яндекс Такси

23 года опыта разработки на С++, из них 16 — коммерческого. За это время успел плотно поработать с VoIP-телефонией, поучаствовать в создании DPI для магистральных каналов, спроектировать и реализовать облачное хранилище в 10Пб данных, поддерживал и развивал антивирусное SDK. Последние пять лет работает в Яндекс.Такси, где занимается инфраструктурными проектами.

Анастасия Казакова

JetBrains, Product Marketing Manager, C++ Tools
Marketing Lead, .NET Tools

Имеет опыт более 8 лет в коммерческой разработке на C и C++. В прошлом занималась встроенными системами и задачами управления сетевым трафиком, стажировалась в лаборатории Microsoft Research по направлению «Сетевой трафик» и участвовала в запуске сетей поколения 4G в компании Yota. Анастасия уверена в том, что разработка — процесс творческий, а рутинные задачи должны быть переданы «умным» инструментам. Поэтому сейчас она является частью команды JetBrains и работает менеджером по продуктовому маркетингу продуктов для разработки на C++ и .NET. Уже несколько лет занимается организацией встреч питерского сообщества разработчиков C++ (St. Petersburg C++ User Group).

Григорий Демченко

WhatsApp, Software Engineer

Разработчик WhatsApp, разрабатываю распределенные отказоустойчивые масштабируемые сервисы на С++.

Дмитрий Старков

Яндекс, Разработчик сервиса Яндекс.Погода

Окончил матмех Уральского федерального университета (УрФУ), там же преподавал на курсах по веб-разработке от Яндекса.
Пришёл в Яндекс четыре года назад, сейчас разрабатывает бэкенд сервиса Яндекс.Погода.

Ильнур Хузиев

Яндекс, Разработчик и TeamLead в Яндекс.Поиске

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

Максим Кита

Яндекс, Старший разработчик

Пишу простой понятный код.

Руслан Арутюнян

Intel, Старший разработчик

Руслан — инженер-программист, работающий в команде, специализирующейся на разработке библиотек для параллелизма.
Руслан был техническим лидером в разработке двух библиотек, применяющихся в области автономного вождения. Сейчас Руслан вносит вклад в различные продукты Intel, такие как oneTBB, oneDPL.
Также Руслан является членом рабочей группы по стандартизации С++ с фокусом на стандартную библиотеку C++ и параллелизм.

Команда организаторов

Антон
Полухин

Сергей
Федоров

Илья
Шишков

Александр
Голубев

Алексей
Миловидов

Анна
Бочарова

Tue May 16 2023 18:51:23 GMT+0300 (Moscow Standard Time)