CppCon 2018

В этом году мне посчастливилось в третий раз оказаться на конференции CppCon. Как и в прошлые годы, на конференции можно найти интересные доклады из практически любой области применения C++. Если сравнивать с конференциями прошлый лет, то в 2018 году вышло на уровне 2016, просто конференция 2017 была особенно прекрасной по содержанию 🙂
Внезапно самыми интересными для меня в этом году оказались не доклады Гуру С++, которые на этом деле собаку съели, а выступления не замеченных мной ранее докладчиков.
  1. Текущая ситуация, когда сообщество информационной безопасности стоит особняком от сообщества разработчиков, мне кажется в корне не верной и доклад Software Vulnerabilities in C and C++ как раз был направлен на устранение данного безобразия. Это просто замечательное начинание, так как конференции типа BlackHat и PHdays скучны для разработчиков, а сами безопасники к нам не ходят. В результате образуется нелепый вакуум, хотя в теории оба сообщества должны тесно работать друг с другом.
  2. Идея доклада Better C++ using Machine Learning on Large Projects вроде и лежит на поверхности, но решились реализовать такое только в Ubisoft Montreal. Суть идеи проста: у нас есть история коммитов и история ошибок. А что будет если их объединить и натренировать сеть? Может даже получиться не только предсказать будет ли в коммите дефект (с довольно хорошей вероятность 75%), но и автоматом предложить код с исправлением?
  3. Как неожиданно выяснилось, прямой конкурент Maya и 3D MAX пишет команда из 25 человек и очень успешно занимается этим последний 21 год. Вызовы и их решение в докладе Patterns and Techniques Used in the Houdini 3D Graphics Application.
  4. Довольно хороший рассказ про организацию сборочного пайплайна (правда у нас лучше вышел) в докладе Big Infrastructure at a Small Scale.
  5. Многопоточность – боль для очень и очень многих включая меня. What do you mean “thread-safe”? обобщает вопросы связанные с безопасностью разработки многопоточного кода на концептуальном уровне. В вроцессе много думал и планирую пересмотреть.
Остальное интересное и не очень:
  1. Начиналось все со Страуструпа и Concepts: The Future of Generic Programming. Скучно, как и все виденные мной предыдущие его выступления, но не пойти на Самого тоже никак.
  2. Очень-очень хороший доклад от Kate Gregory Simplicity: not just for beginners. Хорош он в первую очередь тем, что призывает и доступно объясняет что же такое простой код, к которому все разработчики должны стремиться.
  3. Доклад Саттера как-то смутно отложился в голове, вроде всё здорово и увлекательно, но… то-ли “но к чему это”, то-ли “а зачем столько лишних слов” не давали мне покоя на докладе Thoughts on a More Powerful and Simpler C++. Самое главное что я из него вынес и собираюсь как можно скорее опробовать флаг -Wlifetime, пиару которого была посвящена половина этого доклада. Да, вторая половина про метаклассы, которые постепенно начинают принимать очертания и лет через 10 мы их получим, если повезет.
  4. Закрывал конференцию доклад про нашумевшую уязвимость Spectre: Secrets, Side-Channels, Sandboxes, and Security с живой демкой и кучей ассемблерного кода. Было невероятно интересно и познавательно.
  5. Часто задавался вопросом “как же работает отладчик”, но ленился найти на него ответ и тут всё взяли да рассказали на How C++ Debuggers Work. Про отладчики было вообще много, как потому что  Backtrace активно пиарятся, так и потому, что писать нормально поставить процесс разработки на C++ выходит сильно не у всех.
К сожалению я упустил целую кучу потенциально интересных докладов, которые теперь жду на YouToube:
  1. Git, CMake, Conan – How to ship and reuse our C++ projects и Debug C++ Without Running я пропустил из-за энергичного и очень посредственного доклада Александреску Expect the Expected.
Ну а самым разорчаровывающим докладом где, как мне кажется, никто не понял зачем докладчик вообще вышел на сцену был Interfaces matter: High Performance and Heap Allocated Containers. В итоге вместо часа доклад уложился в 30 минут и вопросов не было от слова совсем, так как единственные вопрос “а к чему тут это все было?” как-то не удобно задавать…
Удивительным изменением в этом году было количество рускоговорящих на конференции, по моим прикидкам около 10, может быть 15% от общего числа посетителей. В итоге мы весело и познавательно посидели небольшой компанией в человек 20 в баре перед отъездом, жаль только из Касперского на конференции я никого из знакомых не увидел.

CppCon 2017

oznor

Дни на CppCon 2017 пролетели очень быстро и незаметно. Конференция действительно потрясающая и на неё однозначно стоит ехать, если есть такая возможность, любому кто любит C++ и хочет писать качественный код. Желающих выступить на конференции так много, что практически всё время параллельно идут около 5 сессий. К сожалению, это приводит к тому, что иногда приходится жертвовать интересным выступлением в пользу еще более интересного. Именно так я пропустил выступление Гора Нишанова, посвященное корутинам, которое теперь придется смотреть на Ютубе. Вообще, казалось бы, можно все то же самое посмотреть на Ютубе или 9-ом канале… но это не то, не создается того ощущения погружения в тему, как от личного присутствия, живого общения и разбора материалов в течении 5 дней. Теперь еще несколько месяцев ковыряться, думать и систематизировать услышанное.

Очень порадовал и удивил тот факт, что со всех сторон на конференции была слышна русская речь. Встретил много бывших коллег из Лаборатории Касперского, познакомился с народом из JetBrains. На конференции была великолепная подборка книг по C++, парой из которых я обзавелся: Advanced Metaprogramming in Classic C++ и C++ Templates the Complete Guide. Со второй книгой вообще вышло занятно: после того, как её порекомендовал Саттер на своем выступлении, за ней выстроилась довольно большая очередь, брали по несколько экземпляров

Назвать одно самое-самое выступление в этот раз я не могу, так как на мой взгляд их два:

Еще 5 докладов, уже без вау-эффекта, но невероятно интересные и полезные:

  • Faster Delivery of Large C/C++ Projects with Conan Package Manager and Efficient Continuous Integration. Если вы работаете не в продуктовой команде, а в SDK, то это то, что нужно обязательно смотреть! Если ничего нового для себя не открыли, то у вас просто невероятно продвинутая команда.
  • C++17 ParallelSTL: A Standardization Experience Report for CPU and GPU on SYCL. Тут вроде всё из названия понятно, презентация обзорная, скорее конспект для дальнейшего самостоятельного изучения.
  • C++ as a “Live at Head” Language. Презентация наделала много шуму, в принципе, оправданно… но только если вы работаете в компании размера Гугл. Я даже для Автодеска полезность Abseil с трудом могу оценить как положительную, но сама идея интересная, стоит послушать как минимум для того, чтобы осознать масштаб проблем, с которыми приходится сталкиваться другим.
  • A Tour of Deep Learning With C++. Для того, кто занимается машинным обучением, эта презентация, скорее всего, покажется банальностью уровня “давайте я вам расскажу зачем нужны умные указатели”. А вот мне, далекому от этой области человеку, было невероятно интересно. Новая, интересная предметная область вкупе с любимым языком – что может быть лучше?!
  • Postmodern immutable data structures. Сюда я даже думал не идти изначально, но был сильно-сильно неправ. Невероятно интересная презентация про иммутабельные структуры данных в мире C++.

Довольно хорошие доклады, не пожалел что сходил:

  • Boost Your Program’s Health by Adding Fibers to Your Coroutine. Так как я имею довольно поверхностное представление о fiber-ах и сoroutine-ах, мне было интересно и полезно.
  • Tools and Techniques To Stay Up-to-date With Modern C++. Мысли о том, как стоит учиться программировать на C++, полезные источники с информацией и т.п. Внезапно оказалось интересно.
  • Curiously Recurring Bug Patterns in C++ at Facebook. Самые злобные грабли C++ по версии Facebook. Сделать конспект и раздавать новичкам
  • Unbolting the Compiler’s Lid: What Has My Compiler Done for Me Lately? Доклад от автора широкоизвестного в узких кругах Compiler Explorer. Немного про чудеса оптимизации компилятора, в особенности Clang, и немного про архитектуру самого сайта.

Посмотрел на Ютуб, понравилось:

  • A modern formatting library for C++. Библиотеки форматирования текста, надо признать, довольно больная тема для C++. Рассказ о fmt из первых рук.
  • Deconstructing the OS: The devil’s In the side effects. А тут уже автор bootOS, рассказывает о том, что лежит в основе разработки.
  • Using Modern CMake Patterns to Enforce a Good Modular Design. Многие разработчики не любят или боятся CMake. Да, синтаксис CMake-скриптов ужасен, но плюсы несомненны, и если его “правильно готовить”, то инструмент начинает восприниматься сильно иначе.
  • Fuzz or lose…. Стыдно сказать, но до этого выступления я не задумывался о фаззинге как таковом. Тем кто в таком же положении, очень рекомендую глянуть.
  • 10 Core Guidelines You Need to Start Using Now. Название тут говорит само за себя. Человек, который хотя бы краем глаза заглядывал в C++ Core Guidelines, из этого выступление много нового не подчерпнет, но в целом полезно.
  • Undefined Behavior in 2017 и вторая часть выступления посвящены проделкам оптимизатора на -O2. Интересно и познавательно, хотя докладчик несколько тараторит.

Внезапно не понравились доклады от Бьёрна Страуструпа и Энтони Уильямса: очень тягомотно и, как мне кажется, довольно бесполезно. При том, какие у них отличные книги, я ожидал большего. Если уж говорить про разочарования от конференции, я бы добавил еще два: ни Майерс, ни Александреску на конференции снова не появились, а так хотелось послушать их вживую.

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

P.S. Линки на доклады добавлю по мере их появления.

CppCon 2016

Наконец-то сбылась мечта и я побывал на CppCon. Очень надеюсь что теперь это будет на регулярной основе

Крайне рекомендую к просмотру следующие выступления:

  • High Performance Code 201: Hybrid Data Structures;
  • Rich Code For Tiny Machines: A Simple Commodore 64 Game In C++17;
  • Using weakly ordered C++ atomics correctly;
  • Lifetime Safety… By Default: Making Code Leak-Free by Construction.

Просто рекомендую. Время зря потерянным однозначно не будет:

  • C++ Coroutines: Under the covers;
  • The Guideline Support Library: One Year Later;
  • Deploying C++ modules to 100s of millions of lines of code;
  • Keynote: Developing Blockchain Software.