Топ-10 докладов конференции C++ Russia 2018: полные видеозаписи, слайды, комментарии
В этой статье вас ждёт десять лучших докладов от Андрея Александреску, Дэвида Вандервурда, Джона Калба и многих других.
Фичи компилятора C++, асинхронность, многопоточность, параллелизм, модель памяти, алгоритмы и STL, метапрограммирование и рефлекшен, огромное множество тем.
Всё это — записи с конференции C++ Russia, самой большой в истории. Восемь сотен участников, немаленький зал, спикеры с мировым именем. Прошёл год, но большинство докладов ничуть не утратило своей актуальности. Впрочем, и неудивительно — именно такие доклады и попадают в топ по оценке участников.
Формат таков:
- Обязательное видео на YouTube
- Слайды, если есть
- Подробное описание доклада на русском языке
- Краткая биография докладчика
Плюс у вас есть комментарии Хабра, чтобы обсудить увиденное. Реклама на ютубе отключена, никто не будет мешать. Есть всё, чтобы начать смотреть прямо сейчас.
Алексей Салмин
В 2017 году вопрос выбора аллокатора в C++ не теряет актуальности. В стандарт добавили новый способ выбрать локальный аллокатор для контейнеров (std::pmr
), глобальные tcmalloc
и jemalloc
продолжают развиваться, как и интерфейсы ядра, на которые они опираются. Этот доклад посвящен «нижнему этажу» конструкции: особенностям работы mmap
и madvise
в ядре Linux и влиянию этих особенностей на производительность аллокаторов.
О докладчике
Алексей Салмин закончил ММФ НГУ, занимался символьными вычислениями и статическим анализом, работал в Intel в Новосибирске. С 2016 года работает в московском офисе Яндекса, разрабатывает backend realtime-поиска.
Rainer Grimm
Слайды
Стандартизация C++11 дала нам модель памяти и многопоточность. В библиотеке есть такие стандартные штуки вроде атомиков, тредов, тасков, локов, условных переменных. Модель памяти дает гарантии на многопоточное использование этих базовых блоков.
Прошло семь лет, появились практики безопасного применения многопоточности и модели памяти. В этом докладе мы подробно узнаем об этих практиках: об общих правилах многопоточности и специальных правилах как для библиотечных примитивов, так и для модели памяти. Рассматриваемые вопросы затрагивают темы более широкие, чем только язык C++.
О докладчике
Rainer Grimm проработал архитектором, тимлидом и инструктором более 20 лет. В свободное время он любит писать статьи о C++, Python и Haskell и выступать на конференциях. Он ведет блог «Modern C++». Сейчас он докладчик по темам современного C++ и Python. O’Reilly и Leanpub издают несколько его книг: «C++11 für Programmierer», «C++», «C++ — Standardbiliothek», «The C++ Standard Library».
Ivan Čukić
Слайды
В C++ всегда присутствовало мощное подмножество языка для метапрограммирования, позволяющее разработчикам выполнять магические приёмы вроде статической интроспекции для обеспечения полиморфного выполнения без наследования. Проблема в том, что синтаксис этот весьма извращенный и излишне многословный — всё это превращает метапрограммирование в довольно устрашающую задачу.
Последние улучшения в стандарте, объединённые с новыми фичами C++20, делают метапрограммирование более простым, а сами метапрограммы — более читаемыми и понятными.
В этом докладе мы посмотрим на современные техники метапрограммирования, фокусируясь на магической метафункции void_t
.
Кстати, на C++ Russia 2019 в Москве Иван выступит с докладом «Move-only C++ design», а также проведет тренинг «Applied functional programming in C++»: далека ли STL от функционального программирования, что такое функциональные объекты, std: invoke и монады, монады, монады. И ещё немного монад. Тренинг Ивана — не для начального уровня, он подойдет мидлам, которые хотят открыть пошире двери восприятия.
О докладчике
Иван работает в департаменте PhD Computer Science факультета математики в Белградском университете, специализируясь на дизайне языков программирования. Давний контрибьютор в KDE, работающий над Plasma и низкоуровневыми фреймворками для анализа и управления действиями пользователя. Мейнтейнер KActivities, Contour и Lancelot.
Simon Brand
Слайды
Параллельное программирование можно использовать для извлечения пользы из многоядерных и гетерогенных архитектур, существенно увеличивая производительность софта. Современный C++ прошёл долгий путь по упрощению процесса параллельного программирования благодаря введению как высокоуровневых, так и низкоуровневых абстракций. C++17 продвинулся ещё дальше и дал нам новые высокоуровневые параллельные алгоритмы, и от C++20 ожидается ещё больше. В этом докладе мы поучаствуем в обзоре существующих утилит для организации параллелизма и заглянем в будущее, где GPU и гетерогенные системы получат поддержку новыми фичами стандартной библиотеки, посмотрим на новые стандарты вроде SYCL.
О докладчике
Саймон — разработчик GPGPU-тулчейна с упором на C++. Нездорово любит шаблонное метапрограммирование и самые тёмные стороны языка. Его легко можно встретить в комментариях на StackOverflow, C++ канале в Slack или на митапах сообщества C++ Edinburgh, где он является одним из организаторов. Любит обсуждать вопросы формализмов в языке, хаки на шаблонах, пиво, виски, экспериментальное кино и творчество Carly Rae Jepsen.
Фёдор Короткий
Слайды
int* ptr = new int;
*ptr = 42;
delete ptr;
Что на самом деле происходит, когда выполняются эти 3 строчки кода? Мы заглянем внутрь аллокатора памяти, операционной системы и современного железа, чтобы дать исчерпывающий ответ на этот вопрос.
О докладчике
Фёдор — выпускник Физтеха, занимался High Frequency Trading на московской бирже. Работает в Яндексе, разрабатывает систему хранения и обработки данных YT. Преподаёт С++ на первом курсе школы анализа данных.
Jonathan Boccara
Слайды
Все мы знаем, что неплохо бы знать алгоритмы STL. Используя их при построении архитектуры, можно сделать её более выразительной и надежной. Иногда — весьма значительно и эффектно.
А вы уже пришли к осознанию ваших алгоритмов?
В этом докладе вы увидите все 105 алгоритмов, включая те, что добавились в 11 и 17 стандартах. Но это не просто перечисление — суть доклада в том, чтобы показать наличие в этих алгоритмах системы, групп и паттернов, в которые они организуются, и как они относятся друг к другу.
Эта большая картина — лучший способ запомнить их все и осмыслить как полный набор инструментов и способов сделать код более выразительным и более надежным.
О докладчике
Jonathan Boccara обожает C++ и в особенности — вопросы написания понятного выразительного кода. В частности, поэтому он ведёт блог «Fluent C++». А ещё он работает senior developer в компании Murex, где ворочает огромными кодовыми базами на С++, предназначенными для использования в финансах. У них в компании есть интересная практика каждый день делать короткие доклады в формате «dailies», которые он и ведёт.
Иван Пузыревский
В области разработки высоконагруженных многопоточных или распределенных приложений можно все чаще услышать разговоры об асинхронном коде, в том числе спекуляции о необходимости (отсутствии необходимости) учитывать асинхронность в коде, о понятности (непонятности) асинхронного кода, о его эффективности (неэффективности). В данном докладе мы с вами попробуем более глубоко погрузиться в предметную область: разберем, что такое асинхронность; когда она возникает; как влияет на код, который мы пишем, и на язык программирования, который мы используем. Постараемся разобраться, при чем тут futures & promises, немного поговорим про корутины и акторы. Затронем JavaScript и операционные системы. Цель доклада — сделать более явными компромиссы, возникающие при том или ином подходе к разработке многопоточного или распределенного ПО.
О докладчике
Иван начал работать в Яндексе в 2009 году в отделе лингвистических технологий в Поиске. Сейчас занимается разработкой систем распределённого хранения и обработки данных. Выпускник кафедры математической логики и теории алгоритмов механико-математического факультета МГУ. Преподаватель ШАД.
Jon Kalb
Слайды
Это доклад, частично основанный на книге «C++ Today: The Beast is Back» издательства O’Reilly. В этом докладе мы немного поспекулируем, почему инженеры, желающие писать производительный код, выбирают именно C++. Джон представит историческую перспективу фокусировки на C++, расскажет, чем живёт сообщество C++ прямо сейчас и куда направляется язык и его аудитория. В последнее время эффективным кодом заинтересовались все, от производителей мобилок до больших датацентров, поэтому C++ с его опенсорсными библиотеками снова стал горячей темой. Этот доклад четко объясняет, почему большинство инженеров выбирают для всего этого именно C++. Имеется общая зарисовка C++ в масштабе истории с объяснениями точек роста и падения популярности.
О докладчике
Джон кодит на C++ более 20 лет. За это время он успел поучаствовать в C++ проектах компаний Amazon, Apple, Dow Chemical, Intuit, Lotus, Microsoft, Netscape, Sun, Yahoo! и ещё в парочке компаний, о которых никто всё равно не слышал. Он — председатель Boost Steering Committee, а также занимается программой C++ трека в Silicon Valley Code Camp и является одним из управляющих C++ Now (aka BoostCon). В 2014 году он получил Microsoft Most Valuable Professional.
Daveed Vandevoorde
Слайды
Однажды комитет стандартизации C++ организовал подгруппу «SG-7», занимающуюся изучением возможностей реализовать рефлекшн. Недавно эта группа занялась ещё и метапрограммированием и сделала несколько важных решений относительно того, как будет выглядеть возможное решение. В этом докладе мы посмотрим в прошлое, которое довело нас до жизни такой, и порассуждаем над возможностями нативной поддержки «рефлективного метапрограммирования» в языке C++.
О докладчике
Дэвид — бельгийский учёный, живущий рядом с Принстоном в США. Он является вице-президентом по инженерии в Edison Design Group, где контрибьютит, в основном, в их собственный фронтенд для C++ компилятора. Он активно участвует в комитете по стандартизации C++, где занимается эволюцией ядра языка.
Andrei Alexandrescu
Написание кода, устойчивого к ошибкам — боль, боль на любом языке. Исключения хоть и являются политкорректным способом сигнализировать об ошибках в C++, но во множестве приложений приходится использовать коды возврата — по причинам, связанным с простотой понимания, простотой локальной обработки, эффективностью сгенерированного кода и так далее.
В этом докладе мы посмотрим, как теорию и практику можно объединить для решения проблем с обработкой ошибок. Обобщенный тип Expected
можно использовать как локально (в стиле кодов возврата), так и централизованно (в стиле исключений), объединяя преимущества обоих подходов.
О докладчике
Румынский разработчик Андрей Александреску является экспертом по широкому набору вопросов, включая архитектуру и реализацию программных систем, дизайн языков программирования, архитектуру библиотек, все аспекты языков C++ и D, машинное обучение и анализ естественных языков. Его креативный подход к решению проблем, широчайшие знания и харизматичность делают Андрея одним из самых популярных докладчиков в мире.
Книги и статьи Андрея повлияли на всю индустрию. Он — автор таких книг-бестселлеров, как «Modern C++ Design», «C++ Coding Standards» (вместе с Herb Sutter), «The D Programming Language», а также статей вроде «Simplify Your Exception-Safe Code — Forever» (написанной вместе с Petru Marginean) и «Mojo: Move of Joint Objects». Полный список его работ можно посмотреть здесь.
Следующая конференция C++ Russia пройдёт 19–20 апреля в Москве, то есть — совсем скоро. Новая программа, новые докладчики, а еще целый день тренингов. Программу можно посмотреть на официальном сайте, там же можно приобрести билеты.