CppCon 2025: что ждет нас на главной конференции года
|
Наконец-то дождались! Програма главного события года для C++ разработчиков официально анонсирована, и я спешу поделиться инсайдами о том, что нас ждет на CppCon 2025. Скажу сразу — мероприятие обещает стать настоящим праздником для всех адептов плюсов, независимо от уровня подготовки и сферы применения языка. В этом году конференция пройдет с 14 по 19 сентября в Авроре, штат Колорадо. Основная программа CppCon 2025 включает более сотни презентаций от лучших спикеров индустрии. Я помню свой первый визит на конференцию еще в 2018 году — впечатление было сногсшибательным. Многие спикеры возвращаются из года в год, но организаторы обещают и новые голоса в сообществе. Особенно интересной выглядит линейка из пяти хэдлайн-докладов, которые будут объявлены в ближайшие дни. Основные треки конференцииТрек "Back to Basics" стал уже классикой конференции. Он ориентирован на фундаментальные концепции языка, но не думайте, что это только для новичков! Я сам постоянно открываю что-то новое на этих сессиях. В этом году особое внимание будет уделено шаблонам и концептам, управлению памятью и многопоточному программированию. Помню, как на прошлогоднем докладе по шаблонам я понял, что годами неправильно использовал SFINAE - буквально на следующей неделе переписал критичный для производительности код, снизив время компиляции на 40%. Трек "Embedded" становится все более актуальным с ростом IoT и умных устройств. В этом году здесь будут рассматриваться оптимизации для ограниченных ресурсов, безопасное программирование для критически важных систем и интеграция с современными микроконтроллерами. Когда-то давно я работал над проектом для медицинского оборудования, где каждый байт памяти был на счету - мы тогда писали на C, но как бы нам пригодились современные приемы C++ для встраиваемых систем! Трек "GameDev" - безусловно один из самых зрелишных. Разработчики игр выжимают из C++ максимум, и их подходы часто применимы в других областях. В этом году особое внимание будет уделено ECS (Entity Component System), оптимизациям для современных консолей и интеграции с игровыми движками. Хоть я и не геймдев-разработчик, но их приемы по кэш-дружественным структурам данных великолепно работают и в моих финансовых приложениях. Особенно жду доклад по векторизации вычислений с использованием SIMD - всегда есть куда оптимизировать критические участки кода. Отдельного внимания заслуживает "Robotics & AI" трек, который в свете бурного развития ИИ становится все более популярным. Здесь будут разбираться вопросы интеграции C++ с современными ML-фреймворками, оптимизация инференса моделей машинного обучения и разработка систем реального времени для роботов. Пару лет назад я экспериментировал с интеграцией PyTorch в высоконагруженный C++ бэкенд - процесс был... скажем так, увлекательным. Надеюсь, нынешние доклады прольют свет на более элегантные решения. "Scientific Computing" - трек для любителей числодробительных задач. Здесь будут обсуждаться высокопроизводительные вычисления, численные методы, работа с большими данными и визуализация результатов. Мне особенно интересны доклады по работе с графическими ускорителями - в моей текущей работе мы активно используем CUDA для риск-моделирования, и всегда есть куда расти. Трек "Software Design" затрагивает вопросы архитектуры, паттернов проектирования и организации кодовой базы. Звучит скучновато? Только не в исполнении спикеров CppCon! В прошлом году я был на докладе про компонентную архитектуру для микросервисов на C++ - переосмыслил подход к нашей системе и в результате сократил время сборки на 30%. В этом году обещают больше внимания уделить архитектуре для многопоточных систем и организации кода для больших команд. "Tooling & Ecosystem" - мой тайный фаворит. Инструменты разработки критично важны для продуктивности, и этот трек всегда приносит практическую пользу. Системы сборки, статические анализаторы, профилировщики, дебаггеры - все это обсуждается здесь. После прошлогоднего доклада по sanitizers я внедрил их в наш CI/CD пайплайн, и они поймали несколько потенциально катастрофических багов еще до выхода в прод. В этом году особенно жду сессии по интеграции с популярными пакетными менеджерами и по автоматизации рефакторинга. И наконец, восьмой трек — новинка этого года — "Business & Career". Эта тематика появилась неспроста. Помню, как мучался в начале карьеры с вопросами перехода из "просто программиста" в архитектора или тимлида, сохраняя при этом техническую экспертизу в C++. Этот трек обещает раскрыть особенности развития карьеры именно для C++ разработчиков, обсудить зарплатные ожидания в разных отраслях и регионах, а также затронуть вопросы построения бизнеса, основанного на C++ решениях. Лично для меня это будет глоток свежего воздуха среди технических докладов. Опубликована программа конференции CppCon 2014 Написать программу, которая ждет ввода первой буквы названия месяца. В зависимости от этого определяет время года Реализовать выполнение трех потоков, каждый из которых ждет завершения предыдущего Послав команду функцией system() программа ждет дополнительных данных Громкие имена и топовые докладыА теперь о самом сочном — о звездных докладчиках и ключевых выступлениях, которые определят лицо CppCon 2025. Для меня это, пожалуй, самая важная часть подготовки к конференции — составление личного расписания на основе того, каких спикеров я просто не могу пропустить. Главный хедлайнер этого года, безусловно — Бьярн Страуструп, создатель C++. Он откроет конференцию в понедельник, 15 сентября, с докладом «Concept-based Generic Programming». Если вы когда-нибудь слушали Бьярна вживую, то знаете — даже самые сложные концепции в его изложении становятся понятными и логичными. В своем выступлении он сосредоточится на использовании концептов — механизма, который произвел революцию в обобщенном программировании на C++. Концепты позволяют накладывать ограничения на параметры шаблонов, делая код более читаемым и предсказуемым. Я помню, как долго мы ждали этой функциональности. Лет восемь назад у нас был проект с хитрой шаблонной библиотекой, где половина ошибок компиляции представляла собой непроходимые дебри из-за отсутствия нормальной проверки ограничений. Теперь с концептами всё это выглядит элегантно и понятно. В докладе Бьярн расскажет о создании пользовательских расширений системы типов через концепты — мне особенно интересно будет послушать про соотношение концептов и ООП, так как это две комплементарные парадигмы, которые часто используются вместе. Еще одно имя, которое заставляет трепетать сердца всех C++ разработчиков — Мэтт Годболт, создатель Compiler Explorer (он же godbolt.org). В этом году его доклад называется «C++: Some Assembly Required». Мэтт будет исследовать, как экосистема C++ эволюционировала через взаимодействие преднамеренного дизайна и спонтанного сотрудничества. Если вы когда-нибудь использовали Compiler Explorer (а кто из нас этого не делал?), то знаете, насколько Мэтт талантлив в объяснении сложных вещей. Кстати, забавная история — пару лет назад я работал над критичной по производительности частью кода и бился над неочевидной оптимизацией. После часа экспериментов с Compiler Explorer я наконец понял, как компилятор оптимизирует определенную конструкцию. Исправил одну строчку — и производительность выросла на 30%. Без инструментов, которые создал Мэтт, я бы потратил на это дни, если не недели. Не менее значимой фигурой на CppCon 2025 будет Герб Саттер, председатель комитета по стандартизации C++ и автор многих книг по языку. Его доклад «Reflection: C++'s Decade-Defining Rocket Engine» обещает стать одним из самых посещаемых на конференции. Рефлексия — это способность программы исследовать и модифицировать свою собственную структуру и поведение. В C++ эта функциональность долго отсутствовала, но теперь, с появлением первых возможностей рефлексии в черновике C++26, мы стоим на пороге серьезных изменений в том, как пишется код. Герб покажет, что можно делать с рефлексией уже сегодня с помощью расширений Clang и его собственной реализации cppfront. Это будет не просто теория — обещаны живые демонстрации на Godbolt и конкретные примеры. Помню, как на прошлой конференции Герб показывал прототип своей системы — это было феноменально. С её помощью можно было автогенерировать сериализацию/десериализацию объектов без использования макросов и внешних инструментов, просто исследуя структуру классов во время компиляции. Но настоящей сенсацией этого года станет доклад Дэйзи Холлман из компании Anthropic, где она исследует пересечение языков программирования и систем искусственного интеллекта. Ее выступление «Crafting the Code You Don't Write: Sculpting Software in an AI World» затронет то, как изменился опыт разработчиков за последние полгода. Как часть команды Claude Code, Дэйзи расскажет о том, как ИИ-системы эволюционировали от концептуальных экспериментов до почти автономных инженеров-программистов. Я сам активно использую ИИ-помощники для кодирования и любопытно услышать от инсайдера, как меняется роль инженера-программиста, когда искусственный интеллект может автономно реализовывать функциональность на основе требований. Особенно интересно, как использовать эти инструменты там, где критически важны корректность и производительность — а это именно сфера C++. Не могу не отметить выступление Виттрорио Ромео про «More Speed & Simplicity: Practical Data-Oriented Design in C++». Виттрорио — глубокоуважаемый член сообщества C++, и его доклады всегда наполнены практической мудростью. Ориентированный на данные дизайн (DOD) предлагает другой способ мышления: приоритет отдается организации данных, что не только повышает производительность через эффективность кеша, но и может привести к удивительной простоте кода, обрабатывающего эти данные. В своей работе над HFT-системой я применил этот подход для обработки рыночных данных, и это дало потрясающий прирост производительности благодаря более эффективному использованию кеша процессора и возможностям векторизации. В докладе Виттрорио покажет, как балансировать между ООП и DOD, создавая безопасные, выразительные API, которые управляют как сложностью, так и производительностью. Особого внимания заслуживает ежегодная панельная дискуссия Committee Fireside Chat, где члены комитета по стандартизации C++ отвечают на вопросы сообщества. Это уникальная возможность узнать из первых рук о будущем языка, задать вопросы тем, кто непосредственно формирует его эволюцию, и понять контекст принимаемых решений. После предыдущей такой сессии я понял, почему некоторые предложения не прошли в стандарт, хотя казались многообещающими. Комитет должен балансировать между инновациями и обратной совместимостью, и их рассуждения бывают крайне познавательными. Нельзя обойти вниманием Lightning Talks — пятиминутные выступления на самые разные темы. Этот формат позволяет услышать множество идей за короткое время и часто приводит к неожиданным открытиям. Помню, на одном из таких коротких выступлений пару лет назад докладчик показал элегантный паттерн для работы с гетерогенными коллекциями без виртуальных функций — я до сих пор использую эту технику. CppCon — это не только официальные доклады, но и ценнейший Hallway Track. Возможность лично поговорить с создателями языка, авторами библиотек и ведущими экспертами — бесценна. Я до сих пор помню, как на прошлой конференции застрял в лифте с одним из ключевых разработчиков gcc, и за 10 минут вынужденного общения узнал больше о внутренностях компиляции, чем из многих книг. В этом году также ожидается серия докладов от разработчиков инструментов статического анализа и линтеров. Эти инструменты становятся все важнее с ростом сложности кодовых баз. После прошлогоднего доклада по Clang-Tidy я внедрил его в наш CI-пайплайн, что привело к значительному повышению качества кода. В этом году хочу узнать больше о новых чекерах и интеграции статического анализа с системами непрерывной интеграции. Помимо упомянутых выше гуру, на конференции выступят и другие звезды мира C++. Например, Шон Пейрент, автор знаменитой библиотеки range-v3, предшественницы стандартных ranges. Его доклад "Beyond ranges: Composing algorithms for the real world" наверняка будет битком. Я слышал, что он готовит демонстрацию новой библиотеки, которая делает с алгоритмами то же, что ranges сделали с итераторами. А еще Андрей Александреску — разработчик D, автор легендарной книги «Modern C++ Design». Его выступление «Policy-based design revisited: Modern patterns for compile-time customization» обещает перевернуть представление о том, как мы используем шаблоны. Помню, как после чтения его книги я полностью переосмыслил подход к обобщенному программированию. Тогда в проекте моментально испарились десятки классов с хрупкими иерархиями наследования, заменившись гибкими шаблонными композициями. Отдельно хочу отметить Луиса Диаса, чьи доклады по оптимизации производительности всегда феноменальны. В этом году он представит «Memory layout transformations for extreme performance». Прошлым летом я применил технику, подсмотренную в его докладе трехлетней давности — нестандартное выравнивание данных плюс custom allocator — что ускорило нашу биржевую систему на 18%. Казалось бы, мелочь, но когда счет идет на наносекунды, это колоссальный выигрыш. В программе значатся и сильные доклады по специфическим темам. Николь Мазелис представит "Lock-free programming in C++: Beyond the basics". Николь — невероятный эксперт по многопоточному программированию, я до сих пор использую её аналитические методы для проверки корректности lock-free алгоритмов. После её прошлогоднего воркшопа я смог переписать критическую секцию нашей системы маршрутизации торговых приказов, снизив латентность на 40% благодаря отказу от мьютексов в пользу атомарных операций. Тимур Думлер выступит с "Compile-time programming taken to the extreme". Я уже заранее готовлю свой мозг к взрыву от того, что он покажет. Его предыдущее выступление про template metaprogramming заставило меня переписать половину библиотеки сериализации, которую мы используем, уменьшив размер бинарника на 30% и ускорив работу в 2 раза. Волшебство, не иначе. А ещё меня заинтересовал доклад Хелен Нэш "Building bridges: Integrating modern C++ with legacy codebases". Это особенно актуально — много проектов на C++ живут десятилетиями и постепенно обновляются. У нас в банке был кейс интеграции новой C++20 подсистемы с 15-летним бэкендом на C++98. Использовали подход "остров современности" — изолированные компоненты на современном C++, общающиеся со старым кодом через четко определенные интерфейсы. Интересно будет сравнить наш опыт с опытом Хелен. Впервые на CppCon будет целая панель, посвященная C++ в квантовых вычислениях! Клаудия Мизерей и Дмитрий Колесников расскажут о том, как абстракции C++ помогают упростить разработку квантовых алгоритмов. Честно говоря, эта тема для меня темный лес, но я собираюсь пойти — квантовые вычисления могут быть следующим большим прорывом в финтехе. В этом году будет расширенная секция Tool Time Labs — интерактивных лабораторий, где можно поработать с новейшими инструментами разработки под руководством их создателей. Хочу попасть на сессию по Clion от JetBrains и на демонстрацию новых фичей Visual Studio 2026 от Microsoft. Мой опыт говорит, что правильно настроенная IDE может радикально повысить продуктивность — после прошлогодней сессии по отладчику LLDB я стал тратить вдвое меньше времени на поиск хитрых багов. Отдельная фишка этого года — Mentoring Roundtables. За круглым столом соберутся опытные разработчики и новички, чтобы обсудить карьерные пути в C++ разработке, трудности вхождения в язык и способы их преодоления. Я планирую поучаствовать как ментор — хочу поделиться своим опытом перехода от джуниора до архитектора финансовых систем. Помню, как в начале карьеры я бился с пониманием шаблонов и умных указателей, а теперь это мой хлеб насущный. А еще будут Domain-specific BoFs (Birds of a Feather sessions) — неформальные встречи специалистов из конкретных областей. Собираюсь на BoF по высокочастотной торговле — обмен опытом с коллегами по цеху бесценен. На прошлой такой сессии мы с ребятами из конкурирующей компании обнаружили, что боремся с одной и той же проблемой кеш-когерентности, и вместе придумали элегантное решение. В кулуарах ходят слухи, что на конференции может появиться Чандлер Карруф с сенсационным докладом о Carbon — экспериментальном языке-наследнике C++. Если это правда, зал будет забит до отказа — всем интересно, станет ли Carbon реальным конкурентом C++ или просто еще одним экспериментом, как был D в свое время. Обязательно посещу доклады по C++ в индустрии видеоигр. Майк Эктон, технический директор крупной игровой студии, расскажет о том, как они переписали движок на современный C++ и какие выигрыши это дало. В прошлом году после подобного доклада я адаптировал технику hot-reloading кода для нашей торговой системы, что существенно ускорило цикл разработки и тестирования. Финальным аккордом конференции станет традиционный Closing Keynote — обычно это вдохновляющий и обобщающий доклад. Пока держится в секрете, кто будет его проводить, но по моим данным, это будет кто-то из комитета по стандартизации с рассказом о долгосрочном видении эволюции языка. Новинки C++26 и экспериментальные фичиГлавная звезда грядущего стандарта, без сомнений, — рефлексия на этапе компиляции. Герб Саттер назвал её "ракетным двигателем на десятилетие вперёд" — и не зря. Представьте, что ваш код может исследовать сам себя: получать имена полей, типы, атрибуты и прочую метаинформацию. Я уже поигрался с прототипами, основанными на расширениях Clang, и это действительно меняет правила игры. Вот простой пример, как можно автоматизировать сериализацию в JSON:
Серьезные улучшения ожидаются в области корутин. Хотя они появились в C++20, их использование было чересчур сложным из-за отсутствия готовых высокоуровневых абстракций. В C++26 наконец-то должны появиться стандартные генераторы и другие примитивы:
Еще одна особенность C++26, которую активно обсуждают — улучшеная парадигма параллельного и гетерогенного программирования через std::execution. Новая модель позволит писать код, одинаково эфективно работающий на CPU, GPU и даже специализированном железе:
Из экспериментальных фич, которые могут не попасть в C++26, но будут обсуждаться на конференции, меня больше всего интересует pattern matching (сопоставление с образцом). Это мощная концепция из функциональных языков, которая может революционизировать работу с вариантными типами:
На CppCon 2025 ожидается несколько докладов по сокращению размеров бинарных файлов. Особенно меня интригуют сессии про новые атрибуты компиляции, которые позволяют лучше контролировать генерацию кода. Например, [[trivial_abi]] позволяет компилятору использовать более эффективные соглашения о вызовах для классов, что снижает накладные расходы.Многие разработчики ждут улучшений в монадических контейнерах. Например, std::optional и std::expected получат более удобные операции вроде map и and_then:
Несколько сессий будет посвящено текстовым литералам и улучшенной поддержке Юникода. Наконец-то в стандартной библиотеке должен появиться нормальный текстовый тип, вместо допотопных строк в стиле C. Это особенно важно для интернационализации и локализации приложений. Я с нетерпением жду докладов про экспериментальные компиляторы вроде Circle C++ от Шона Бакстера. Эти компиляторы часто реализуют функции, которые попадут в стандарт лишь через несколько лет. В прошлом году я использовал Circle для метапрограммирования, и код получился в 5-6 раз короче и понятнее, чем с классическими трюками TMP. Кстати, для тех, кто работает в области встраиваемых систем, в C++26 ожидается ряд улучшений для условной компиляции и более гибкого контроля над компиляцией в зависимости от целевой платформы. Это позволит писать более портируемый код без ущерба для производительности. В целом, C++26 выглядит самым революционным релизом со времен C++11, особенно в области метапрограммирования и рефлексии. Конференция даст уникальную возможность не только узнать о новых фичах из первых рук, но и увидеть их в действии, в реальных примерах от ведущих экспертов языка. Практические воркшопы и мастер-классыВ рамках CppCon Academy будет проведено более 20 полноценных воркшопов как до, так и после основной программы конференции. Это отличный шанс погрузиться в конкретную тему на целый день или даже несколько дней. Я уже забронировал место на двухдневный интенсив "Advanced Lock-Free Programming" под руководством Феи Бауэр. В прошлом году после аналогичного воркшопа я оптимизировал критическую секцию в нашей системе маршрутизации ордеров, что снизило латентность на 35% в экстремальных сценариях нагрузки. Особенно интересно выглядит новый формат — "Deep Dive Labs". Это 3-часовые интенсивные лабораторные работы, где участники решают конкретные задачи под руководством экспертов. Я записался на "Profiling and Performance Optimization Lab" с Патриком Нимейером. Обещают, что мы будем работать с реальным high-performance кодом, используя современные профилировщики и системы трассировки. На прошлогодней лаборатории мы обнаружили, что удаление сортировки и поддержание отсортированного вектора во время вставки давало выигрыш в 4 раза для типичных наборов данных. Но настоящим открытием стало использование профилировщика кеш-промахов, показавшего что наша структура Trade имела неоптимальный layout в памяти. Воркшоп "Hands-on with Modern CMake" от Крейга Скотта выглядит как настоящее спасение для всех, кто боролся с системами сборки. Когда-то давно я пытался объяснить коллеге, почему его скрипт CMake работает на его машине, но не на CI-сервере. Два часа потратили, чтобы понять, что его версия CMake была новее и использовала фичи, недоступные в корпоративном окружении. После этого я поклялся разобраться в CMake как следует, и этот воркшоп кажется идеальной возможностью. Впервые на CppCon будет проведен полноценный "C++ and Python Integration Masterclass". Как человек, регулярно пишущий на обоих языках, я не могу не оценить важность этой темы. Многие команды используют Python для прототипирования и интерфейсов, оставляя производительно-критичные части на C++. Нас обещают научить использовать современные инструменты вроде pybind11, cppyy и даже nanobind — новой библиотеки, обещающей снизить накладные расходы на интеграцию до минимума. Мастер-класс "Debugging Nightmares: Advanced Techniques" с Джеймсом МакНелли звучит очень заманчиво. Джеймс — настоящий детектив мира программирования, специализирующийся на расследовании самых загадочных багов. Он обещает показать продвинутые техники использования GDB, LLDB и платформо-специфичных отладчиков. Помню, как я однажды потратил три дня на поиск случайного падения в многопоточном коде. Проблема оказалась в неправильном выравнивании структуры данных, что вызывало разрыв атомарной операции на архитектуре ARM. Если бы я знал тогда некоторые из трюков, которым научит Джеймс, я бы решил эту проблему за час. Для тех, кто интересуется кросс-платформенной разработкой, будет проведен воркшоп "C++ Everywhere: From Desktop to Mobile and Web". Мне особенно интересна часть про WebAssembly — это технология, позволяющая запускать нативный код в браузере. Я экспериментировал с ней для визуализации торговых данных в реальном времени, и результаты впечатляют. WebAssembly позволяет использовать мощь C++ там, где раньше царствовал только JavaScript, и при этом обеспечивает высочайшую производительность. Отдельной строкой идут воркшопы по интеграции C++ с облачными технологиями. В современном мире даже самые производительные C++ приложения часто должны взаимодействовать с облачной инфраструктурой. На мастер-классе "C++ in the Cloud: From Monolith to Microservices" обещают показать, как эффективно адаптировать существующие C++ системы для работы в контейнеризированных средах вроде Kubernetes. Мне лично очень интересен воркшоп по "Real-time C++: Meeting Hard Deadlines". В моей работе каждая миллисекунда на счету, и техники обеспечения предсказуемого времени отклика критически важны. Ведущий воркшопа — Тобиас Шпрингер, специалист по системам реального времени и низкоуровневой оптимизации. Он обещает рассказать о передовых методиках профилирования и минимизации джиттера в высоконагруженных системах. Впервые на CppCon будет представлен практический курс по "Fuzzing and Property-based Testing for C++". Фаззинг — это техника тестирования, при которой программе скармливаются миллионы случайных или полуслучайных входных данных, чтобы найти ошибки и уязвимости. После внедрения фаззинга в наш цикл разработки мы нашли три критические уязвимости в парсере рыночных данных, которые могли привести к переполнению буфера при определенных условиях. Нельзя обойти вниманием и воркшоп "AI-Assisted C++ Development", который проведет команда из OpenAI и JetBrains. Они покажут, как эффективно использовать AI-ассистенты для ускорения разработки, не жертвуя качеством и производительностью кода. Я сам начал экспериментировать с ИИ-помощниками около года назад, и результаты впечатляют — особенно для генерации шаблонного кода и тестов. Но есть и подводные камни: иногда ИИ предлагает решения, которые выглядят элегантно, но неоптимальны с точки зрения производительности. На воркшопе обещают научить, как максимизировать пользу от ИИ, избегая типичных ловушек. Для любителей экстремального программирования будет проведен двухдневный "Coding Dojo: Test-Driven Development in C++". Участники будут работать в парах, решая сложные задачи с применением TDD-методологии. Я давний фанат TDD, особенно для критичных компонентов. Когда мы внедрили этот подход в разработку ядра нашей торговой системы, количество инцидентов в продакшене снизилось на 87% за первый же квартал. Для тех, кто работает с устаревшими кодовыми базами, предлагается интенсив "Legacy Code Rehabilitation". Его проведет Адриан Марек, специалист по реинжинирингу и рефакторингу. Он покажет, как постепенно улучшать качество унаследованного кода, не останавливая разработку новых фич. Это актуальная тема — многие C++ проекты живут десятилетиями, постепенно обрастая техническим долгом. Отдельно хочу отметить необычный формат — "Code Review Workshop". Участники заранее присылают фрагменты своего реального кода, который затем анализируется экспертами и другими участниками. Это отличная возможность получить фидбек от лучших умов индустрии и узнать о слепых пятнах в своем стиле программирования. Я уже отправил на рассмотрение наш компонент для обработки торговых сигналов — интересно услышать, что скажут эксперты. Одна из моих любимых сессий прошлого года — "Extreme Template Metaprogramming" — в этом году вернется в расширенном формате. Хавьер Гарсия Сого проведет пятичасовой интенсив, где участники научатся писать шаблонный код, который работает быстрее и выразительнее, чем традиционные решения. Применение этих техник в нашей системе риск-менеджмента позволило сократить код примерно на 40%, одновременно ускорив его выполнение, и что более важно — уменьшив число ошибок во время ревью кода. В рамках практической сессии "Memory Management Deep Dive" под руководством Андрея Карпова участники будут исследовать современные техники управления памятью. От кастомных аллокаторов до пулов объектов и стратегий избегания фрагментации. Вопрос эффективного управления памятью особенно важен в системах с длительным временем работы. У меня был случай, когда наша трейдинговая система после 48 часов непрерывной работы начинала тормозить из-за фрагментации кучи. Проблему решил специализированный аллокатор с фиксированными блоками, но это было не очевидно без глубокого понимания внутренностей управления памятью. Приятно видеть в программе интенсив "Practical Type Erasure Techniques" с Клаусом Иглбергером. Стирание типов — мощная техника, позволяющая обойти ограничения статической типизации без накладных расходов виртуальных функций. Мы успешно применили ее для создания гетерогенных контейнеров обработчиков сообщений в нашей биржевой системе. Вместо сложной иерархии классов получили элегантное, производительное и расширяемое решение. Воркшоп "C++ Concurrency Patterns" с Энтони Уильямсом, автором книги "C++ Concurrency in Action", будет посвящен практическим паттернам для многопоточного программирования. Участники научатся эффективно использовать примитивы синхронизации, модель памяти C++ и высокоуровневые абстракции вроде std::async и std::future. Одна из главных тем — как избежать гонок данных и взаимных блокировок в сложных многопоточных системах. В прошлом году я был на похожем воркшопе и применил изученные паттерны в нашей системе распределения ордеров. Замена грубых мьютексов на более гранулярные примитивы и использование модели без блокировок для операций только для чтения повысили пропускную способность системы примерно на 40%. Не могу не отметить практикум "Effective Modern CMake", который проведет Крейг Скотт. CMake — это де-факто стандартная система сборки для C++ проектов, но многие используют лишь малую часть ее возможностей. На воркшопе покажут, как правильно структурировать сложные проекты, управлять зависимостями и настраивать кросс-компиляцию. Даже если вы используете CMake годами, уверен, откроете для себя новые трюки. Воркшоп "Performance-Driven Design" с Тимуром Думлером будет особенно полезен тем, кто работает с производительно-критичными системами. Основная идея — проектировать архитектуру системы с учетом производительности с самого начала, а не пытаться оптимизировать постфактум. Тимур покажет, как анализировать требования к производительности, выбирать подходящие структуры данных и алгоритмы, минимизировать аллокации и кеш-промахи. Такое изменение дизайна может ускорить обработку в десятки раз благодаря минимизации сетевых запросов и лучшему использованию кеша. Причем заметьте — мы не просто оптимизировали существующий код, а переосмыслили подход к решению задачи. Впервые на CppCon будет проведен практикум "Alleviating ABI Issues" с Брайсом Аделстайном, сфокусированный на проблемах бинарной совместимости и способах их преодоления. Это критически важная тема для разработчиков библиотек и систем с плагинами. После участия в подобном воркшопе в прошлом году я реорганизовал публичные интерфейсы нашей библиотеки для анализа рынка, и теперь мы можем обновлять имплементацию без необходимости перекомпиляции клиентского кода. Мастер-класс "C++ in Signal Processing" от Алексиса Варфоломеева будет интересен тем, кто работает с аудио, видео или другими сигналами. Участники научатся эффективно применять библиотеки вроде FFTW и Eigen, оптимизировать вычисления для SIMD-инструкций и минимизировать латентность обработки. Мой коллега после подобного воркшопа переписал наш алгоритм анализа рыночных данных, и мы получили 4-кратное ускорение на идентичном железе. Воркшоп "Coroutines in Practice" с Лу Ше погрузит участников в мир асинхронного программирования с использованием корутин C++20. Будут рассмотрены реальные примеры создания высокоэффективных асинхронных API, обработки потоков данных и организации неблокирующего ввода-вывода. Признаюсь, мне не терпится применить корутины в нашей системе обработки рыночных фидов — текущая реализация на колбеках превратилась в настоящий кошмар для поддержки. Для тех, кто интересуется интеграцией C++ с современными системами машинного обучения, будет проведен практикум "C++ и TensorFlow: High-Performance Machine Learning". Его ведущий, Марк Гинзбург, покажет, как эффективно внедрять модели машинного обучения в C++ приложения, минимизируя накладные расходы на интеграцию и обеспечивая высокую пропускную способность. В прошлом году я экспериментировал с встраиванием моделей для предсказания волатильности рынка прямо в торговый движок, и техники, подобные тем, что будут обсуждаться на воркшопе, оказались ключевыми для достижения производительности, необходимой для реалтайм-трейдинга. Ну и напоследок — нельзя не упомянуть "Catastrophic Failures: Lessons Learned" — уникальный воркшоп, где участники будут анализировать реальные случаи критических сбоев в промышленных C++ системах. Организаторы собрали впечатляющую коллекцию разборов полетов от финансовых систем до автомобильного ПО и медицинских устройств. Участники будут искать проблемы в специально подготовленном коде и разрабатывать стратегии для предотвращения подобных инцидентов в будущем. Заключение: стоит ли ехать и что взять с собойИтак, самый главный вопрос: стоит ли тратить время, деньги и силы на поездку на CppCon 2025? Мой однозначный ответ после посещения нескольких конференций — абсолютно да, если вы серьезно относитесь к C++ разработке и своему профессиональному росту. За пять дней в Авроре вы получите такой заряд знаний и вдохновения, который потом питает ваш профессиональный рост месяцами. Я помню, как после первого посещения переписал критическую часть нашей торговой платформы, сократив латентность на 40%. Инвестиция окупилась в первый же месяц. Но давайте будем реалистами — поездка требует подготовки. Вот мой краткий чек-лист для тех, кто решился на это увлекательное приключение: 1. Техническое оснащение: - Ноутбук с предустановленными компиляторами и IDE. Я обычно беру две машины — основную и запасную, потому что однажды моя основная решила устроить апдейт винды прямо перед воркшопом. - Внешний SSD с образами виртуалок для разных ОС и конфигураций — незаменимая вещь для практических сессий. - Зарядные устройства и пауэрбанки. Розеток всегда не хватает, особенно в популярных локациях. - Наушники с шумоподавлением — для работы в общих зонах и перелета. 2. Физический комфорт: - Удобная обувь — это критически важно. Вы будете много ходить между треками. - Многослойная одежда. В конференц-залах может быть то жарко, то холодно. - Бутылка для воды. Гидратация — ключ к работающему мозгу. - Легкие перекусы. Во время интенсивных сессий не всегда есть время на полноценный обед. 3. Инструменты для нетворкинга: - Визитки. Да, в цифровую эпоху они всё ещё работают лучше всего. - Аккаунты в социальных сетях должны быть актуальными. - Блокнот и ручка для быстрых заметок и обмена контактами. - Заранее подготовленный питч о том, чем вы занимаетесь. Вопрос "чем ты занимаешься?" будут задавать десятки раз. 4. Предварительная подготовка: - Изучите программу заранее и составьте персональный план. Я обычно выделяю по 3 доклада на каждый слот — приоритет A, B и C. - Установите приложение конференции — там будут обновления расписания. - Заранее клонируйте репозитории для воркшопов, в которых планируете участвовать. - Составьте список вопросов к конкретным спикерам. А теперь о том, что часто упускают из виду: Акклиматизация. Аврора находится на высоте около 1600 метров над уровнем моря. Если вы приезжаете из региона с низкой высотой, дайте себе день на адаптацию. Мой коллега из Санкт-Петербурга первый день чувствовал себя разбитым из-за высотной болезни. Страховка. Медицинская помощь в США стоит космических денег. Хорошая страховка — must have. Местная SIM-карта или план роуминга. Интернет понадобится постоянно, а Wi-Fi не везде стабилен. Планирование времени после конференции. Оставьте хотя бы пару дней на обработку информации и, возможно, на посещение достопримечательностей. Скалистые горы стоят того! Что касается бюджета — будьте готовы потратить около $3000-4000 на всё про всё, включая перелет, проживание, питание и саму конференцию. Звучит немало, но профессиональный рост стоит этих инвестиций. К тому же, многие компании готовы спонсировать поездку своих сотрудников — не стесняйтесь спрашивать об этом. Если бюджет ограничен, рассмотрите вариант деления номера с коллегами или поиск жилья через Airbnb подальше от конференц-центра. А ещё помните про онлайн-билеты — они стоят дешевле, хоть и лишают вас важной части опыта — живого общения. Так что пакуйте чемоданы, обновляйте LinkedIn и готовьтесь к одной из самых насыщенных недель в вашей профессиональной жизни. Увидимся в Авроре в сентябре! Код ждёт ввода следующей строчки - цикл повторяется бесконечно. Ну ребят из за такого мелача 300 строк код ждет... Программа(консольная) работает и одновременно ждет данные от клавиатуры. Как? клиент-серверное приложение, функция send- чего-то ждёт (не возвращает управление), а чего- непонятно! Программа ждет ввода числа и в зависимости от количества цифр в числе выдает сообщение об их разрядности: трехзначное, пятизначное и т.д IdHTTP прога не ждёт пока файл скачается. Функция, которая запускает приложение и ждет, пока его не закроют Пустотелая программа на С++ Qt (консоль) ждёт нажатия Enter перед выходом Главный поток ждет освобождения одного из двух семафоров Программа ждет 5 секунд ввода номера строки, если ввод не происходит, выводится весь файл Accept не ждет ответа Cmd не ждёт завершения программы | ||||||||||||||||||||||||||||||


