C++ and other lectures
СтатистикаУчебный канал в Телеграм: тут будут анонсы и ссылки на лекции и стримы. Написать автору: @Tilir Boosty автора: https://boosty.to/cpp_lects_rus
- Последний пост
- 13 авг.
- Последнее чтение
- 00:26
- Постов за неделю
- 1
- Всего постов
- 50
- Тип
- открытый
- Язык
- русский
- Категория
- Технологии (по похожим)
- В каталоге с
- 12 авг.
- 1/24сутки в ленте
- 3 008
- 1/48двое суток
- 3 447
- 1/72трое суток
- 3 717
Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.
Посты
Выложили наш с Лизой доклад на ZCC. Спасибо организаторам за оперативность. https://youtu.be/ohYtMHBXLvM?is=lwvD3swa1fLQOPff 00:00 Начало и немного о мире стабильного ABI: немного C и ассемблера 10:35 Про ABI в C++ и генерализованную перегрузку сущностей 16:02 Появление Лизы и много компиляторной магии 35:20 Возвращение меня и история про static chain register 40:10 Ответы на вопросы. #conference
видео или голосовое, без подписи
Выступил на C++ ZCC. Видео выложу по мере появления. А пока мне тут скинули бинго по моим докладам на конференциях. Не знаю только при чем тут userver. #official
И снова пятничный зачилл. Подумайте вот о таком коде. Сначала не открывая годболт. Что скажете? struct T { const int &p; }; void foo() { T t{0}; } // ??? void bar() { T t(0); } // ??? Теперь откройте ссылку и сверьте ощущения. https://godbolt.org/z/6rfGzx991 Кто прав — gcc или clang? Или... оба? ))) Ссылки на стандарт обязательны. За нейронку — штрафные баллы )) Пример восхитителен не глубокими причинами в стандарте, а тем насколько всё тупо. В общем смешной кейс на пятничный вечер. #questions
К слову о разговорных жанрах. Выложили интервью со мной на C++ Russia. Вроде неплохо получилось. https://youtu.be/jeX96GPYSlI?is=kwLq3K1Qtvy64oE1 #conference
Всем привет. Отчётный стрим на boosty проведу в воскресенье, 26 июля в 20 по Москве. https://boosty.to/cpp_lects_rus Уровень доступа: студент и выше. Обсудим прогресс по книге, прошедшую конференцию C++ Russia, предстоящую Zero Cost Conf и многое другое. #boosty
Выложили моё видео на C++ Russia 2026, посвящённое выводу типов, его тонкой связи с перегрузкой и некоторым моим мечтам о языке. https://youtu.be/ebyXav1JAEQ?is=rAumvFRI4sFTRFPQ 00:00 Intro: немного болтовни 03:20 Начало. Напоминаю про семантические процессы 06:10 Мечта про инференс в стиле Хиндли-Милнера и как перегрузка ломает унификацию. 11:58 Почему мы любим перегрузку и как мы пишем множества перегрузки? 16:54 Сложность разрешения перегрузки: частичный порядок. 24:28 Перегрузка связана с выводом типов. Правила одношаговой унификации (дедукции) типов. 29:24 Немного про CTAD и пара безумных примеров. 35:28 Мечта про вывод по всем путям. Комбинаторные взырывы и non-deduced context. 38:35 Мечта про "Семантически неограниченный C++". 42:04 Раскрытие секрета почему у нас всё так, как оно есть. И дальше вопросы. Слайды: https://sourceforge.net/projects/cpp-lects-rus/files/conference-talks/deduction.pdf/download #conference
Сделал свой канал в Max публичным. Теперь буду туда всё дублировать: https://max.ru/channel_cpp_lects_rus И появились комментарии. #official
Выложил лекцию Анастасии Черниковой о практическом внедрении llvm-snippy в верификацию аппаратуры на примере открытого RISC-V ядра Ibex. https://youtu.be/fSsq5mm3I40 Эта лекция -- настоящее путешествие по применению llvm-snippy в живой DV-инфраструктуре. Она затрагивает вопросы: как встроиться в существующий маршрут с riscv-dv, как написать хороший враппер и как доработать загрузчик и обработчики прерываний. Всё изложение построено вокруг поэтапной доработки сценариев генерации ради достижения функционального покрытия. Лекцию можно смотреть и отдельно от первой части: весь необходимый контекст даётся по ходу. Но вместе они хорошо показывают две стороны llvm-snippy: внутреннее устройство инструмента и его практическое применение в реальной задаче верификации. Русскоязычный вариант: https://rutube.ru/video/27414410f66e3d36e4733c9390062304 #snippy
У llvm-snippy теперь есть DOI. Мы добавили в репозиторий citation metadata и заархивировали проект на Zenodo: https://doi.org/10.5281/zenodo.20969925 Если вы используете llvm-snippy в статьях, отчётах, диссертациях, прототипах, исследовательских проектах или просто в воспроизводимых экспериментах, пожалуйста, ссылайтесь на него. Это важно не только как формальная благодарность авторам. Для нас, как команды разработки, ссылки -- это способ понять, где и как инструмент реально используется. Так мы сможем находить ваши работы, смотреть на новые сценарии применения, оценивать результаты и, возможно, что-то забирать обратно в развитие проекта. Репозиторий: https://github.com/LLVM-Snippy/llvm-snippy Документация: https://llvm-snippy.github.io/llvm-snippy #snippy #official
Выложил лекцию по llvm-snippy. Настало время рассказать о моём лучшем проекте на моём канале. Английская версия: https://youtu.be/gomtQMGOFF8 Русская версия и качество не хуже: https://rutube.ru/video/18e1a8bfca1d9e2979d8b8a631e68207 Документация: https://llvm-snippy.github.io/llvm-snippy #snippy
🔔 Встреча с Константином Владимировым — автором блога @cpp_lects_rus Друзья, у нас отличные новости! 12 июля в 16:00 состоится встреча с Константином Владимировым — преподавателем МФТИ, автором книги «Оптимизирующие компиляторы. Структура и алгоритмы» и создателем популярного Telegram-канала «C++ and other lectures». Константин более 15 лет работает в области компиляторных технологий, возглавлял рабочую группу по разработке компилятора для Intel, а сейчас занимается компилятором для RISC-V в компании Syntacore. На его YouTube-канале — сотни лекций и докладов по C++, а сам блог @cpp_lects_rus собрал уже тысячи подписчиков. На встрече вы сможете задать вопросы, обсудить актуальные темы разработки и узнать много нового из первых рук. 🗓 Когда: 12 июля в 16:00 📍 Где: Кампус ДВФУ, Корпус D, 7 уровень, ауд. D738 Для участия обязательна предварительная регистрация: https://forms.yandex.ru/cloud/6a3511c79029026df82c8c4d ✅Организатор площадки: департамент математического и компьютерного моделирования ДВФУ ❓По оргвопросам можно обращаться к директору департамента математического и компьютерного моделирования ДВФУ Андрею Сущенко @AndreiSushchenko
Встреча во Владивостоке пройдет 12 июля на кампусе ДВФУ. Посетить может кто угодно не только студенты. Регистрация открыта ))
Всем привет. Выложил главы 2.1 и 2.2 моей книги про C++ https://boosty.to/cpp_lects_rus/posts/26f430cd-22b9-4d79-9a00-97a0ade31fb5 Также обновил посты с предыдущими главами. Подписчики и те, кто уже купил книгу, могут бесплатно скачать апдейт и я рекомендую это сделать, там есть изменения. https://boosty.to/cpp_lects_rus/posts/eeee2a76-c1be-46e5-a248-c8c1eb62fae8 https://boosty.to/cpp_lects_rus/posts/5029d95f-831c-4262-9002-19ce8ea5208a Спасибо всем моим подписчикам на boosty за поддержку которая вдохновляет меня работать над этой книгой и подписчикам уровня principal и выше за участие в ревью. Если вы ещё не подписались, рассмотрите возможность это сделать. Ну и конечно буду рад отзывам комментариям и предложениям и на boosty и здесь в комментариях к посту. #cppbook #boosty
Немного подзамочного контента для моих уважаемых подписчиков. Ни для кого не секрет, что мой магистерский курс этого года я записывал на английском языке. Меньше людей знает, что исходно он читался на русском языке, на английский я (нейронкой) до лекции переводил только слайды. Далее я брал другую нейронку, распознавал свой голос с записи лекции на русском, грузил вместе со слайдами в третью нейронку и просил сделать мне подстрочник на английском и с этого подстрочника на английском уже и читал. И, конечно, я просил нейросеть убрать из этого подстрочника все шутейки, хиханьки, хаханьки, общение с аудиторией и всё остальное. В процессе ещё и правил все ошибки, которые находили на лекциях. Поэтому мой магистерский на английском немного высушен. Чисто для моей аудитории, готовой, прямо скажем, на многое, выкладываю ссылки на магистерский курс этого года на русском. Предупреждаю: это очень фанатский контент. Не надо даже пробовать его потреблять, если вы привыкли к той лакированной подаче, которую я считаю нормой для своего ютуба. Это вторая часть выкладки. Have fun. Лекции 1-14: https://t.me/cpp_lects_rus/333 Лекция 15. Аллокаторы, часть 1 Лекция 16. Аллокаторы, часть 2 Лекция 17. Умные указатели Лекция 18. Полиморфизм Лекция 19. Потоки, часть 1 Лекция 20. Потоки, часть 2 Лекция 21. Очереди Лекция 22. Атомики, часть 1 Лекция 23. Атомики, часть 2 Лекция 24. Атомики, часть 3 Лекция 25. Корутины, часть 1 Лекция 26. Корутины, часть 2 Лекция 27. SYCL и GPGPU Лекция 28. Execution Да, все ссылки на rutube, я стримил туда. #cpp_postgraduate
Выложил лекцию по проблеме рекламации памяти, прочитанную в институте iSpring город Йошкар-Ола (на русском языке). Youtube: https://youtu.be/13b5hHwRvVk Rutube: https://rutube.ru/video/596ab835ce4cbb1ef4154bc43da58397/ Большое спасибо Алексею Малову (кстати у него есть канал https://youtube.com/@vividbw) и институту iSpring за приглашение, съёмку и монтаж видео. 00:00 Начало. Пример, который мы будем использовать всю лекцию. 03:56 Потоки и гонка за данные. 09:35 Mutex или простота хуже воровства. 12:12 RAII обёртки над mutex. 19:23 Мьютекс это очередь. Концепция read/write lock. 25:51 Сеттинг который мы будем использовать в лекции и первые замеры. 29:14 Убираем в целом блокировки. CAS-циклы. 34:45 Happens before, барьеры и модели памяти. 42:50 Проблема рекламации. 47:30 Атомарный разделяемый указатель и новые замеры. 52:05 C++26: решение проблемы рекламации в стиле RCU и ещё замеры. 01:01:35 C++26: решение проблемы рекламации через Hazard Pointers и ещё замеры. 01:07:55 Список литературы и вопросы.
Выложил лекцию по std::execution на английском языке. Это последняя, 28-я лекция англоязычного магистерского курса. https://youtu.be/ZMcUTZppCAw Финальная лекция магистерского курса по C++ посвящена std::execution -- новой модели исполнения, которая входит в C++26. Мы начнём с давно известных механизмов: параллельных алгоритмов стандартной библиотеки, ручного запуска потоков и std::async. На примере параллельного reduce посмотрим, почему этих средств быстро становится недостаточно, если хочется не просто запустить несколько потоков, но также аккуратно описывать и комбинировать вычисления. После этого перейдём к senders/receivers: разберём, что такое scheduler, sender, receiver и operation state, как работают адапторы и как вычисление может переходить между разными execution resources. Свяжем эту тему с миром GPGPU через bulk-вычисления, посмотрим на рекурсивное порождение асинхронных задач через execution scopes и обсудим разные варианты завершения вычислений. В конце поговорим о связи std::execution с корутинами, отмене задач через environment и ещё раз соберём общую картину: как C++26 предлагает описывать асинхронное и параллельное исполнение без ручного управления потоками. Timeline 00:00 Введение. Параллельные алгоритмы в стандартной библиотеке. 03:30 Пишем собственный параллельный reduce. 10:05 std::async и его особенности. Замеры производительности. 16:50 Единая абстракция исполнения. Основы std::execution в C++26. 26:59 Концепт sender и адапторы. 35:00 Монадическая природа вычислений и let_value. 40:16 Адаптор bulk: снова заходим в мир GPGPU. 46:05 Параллельный reduce с использованием std::execution. 49:40 Execution scopes: динамическое создание задач. Параллельная сортировка. 54:41 Каналы в sender. Поведение upon_error и upon_stopped. Сигнатуры завершения. 01:02:19 Проверка completion signatures: упражнение в метапрограммировании и рефлексии. 01:06:50 Связь сендеров с корутинами: execution::task. 01:14:40 Снова многопоточная подписка и отмена задач. 01:18:47 Основные концепции ещё раз, список литературы и завершение. #cpp_postgraduate
В этом июле где то в 10-х числах у меня есть шанс побывать на Дальнем Востоке (Владивосток, возможно Находка). Просьба местных обозначиться в чате или у меня в лс и сказать (1) есть ли заинтересованность, (2) когда и где лучше устроить встречу с читателями и (3) можете ли вы помочь с организацией. #author_event
Выложил лекцию по GPGPU и SYCL на английском языке. https://youtu.be/Ebj21eXDRDY В этой лекции мы обсудим, почему модель программирования для графики и гетерогенных вычислений исторически отличается от обычного C++. Начнём с классических шейдерных языков, stateful memory, binding tables и адресных пространств, а затем перейдём к OpenCL и проблемам separate-source compute API. После этого разберём основы SYCL как примера single-source подхода к гетерогенному программированию, познакомимся с устройствами и очередями, а также с моделью исполнения SIMT. На примерах сложения векторов и перемножения матриц посмотрим, как часть работы отправляется на устройство и как SYCL описывает зависимости между вычислениями. Основная часть лекции посвящена памяти и синхронизации. Мы постепенно оптимизируем перемножение матриц и разбираем, как на производительность влияют разные виды памяти, tiled execution, барьеры и specialization constants. Затем обсудим гистограмму как пример конкурентного доступа к данным и поговорим об атомиках в GPU API. В финале вернёмся к C++ и обсудим природу указателей, а также generic address space в SYCL. На протяжении всей лекции нас будет сопровождать большое количество замеров производительности. Timeline. 00:00 Введение. Гетерогенные вычисления и GPU как execution model. 03:50 Память в классических шейдерных языках на примере GLSL: stateful и stateless pointers. 10:35 Первые compute API с раздельными исходниками на примере OpenCL. Проблема небезопасности типов в API. 15:40 На пути к единому compute API: как расширять C++ для гетерогенного программирования? 19:34 Основы SYCL: очереди, command groups, iteration space и vector addition. 29:15 Перемножение матриц -- основная задача GPGPU. 35:28 Более интересное управление памятью: shared memory, device memory и снова аллокаторы. 40:25 Продолжаем умножать матрицы: приватная память, oneMKL и первые замеры. 45:15 Локальная память и барьеры. Инверсия параллелизма внутри рабочей группы. 52:52 Улучшаем перемножение матриц: tiled multiplication, specialization constants и ещё немного замеров. 59:52 Конкурентный доступ к данным: гистограмма, атомики и memory model в GPU API. 01:09:53 Обсуждение природы указателей, generic address space в SYCL, hierarchical parallelism и завершение лекции. #cpp_postgraduate
Не могу не поделиться самым веселым, на мой взгляд, примером из доклада великолепного Константина Владимирова. Он делал анонс доклада в своем tg канале. Пример вот такой: template <auto T = []{}> struct S {}; S a; S b; В чем тут цимес. У нас T - это лямбда. И если мы таким образом определяем переменные, то в тип S записываются разные лямбды, и у нас получаются два разных типа: static_assert( !std::is_same_v<decltype(a), decltype (b)> ); Если же мы явно укажем пустые треугольные скобки вот так: S<> a, b; static_assert( std::is_same_v<decltype(a), decltype (b)> ); То типы, внезапно, станут одинаковыми. Ну, мы один раз объявили тип, и две переменные этого типа. А теперь вопрос в зал. А что если мы определим эти две переменные точно так же, как во втором варианте, но только без явного указания треугольных скобок? S a, b; Давайте вы попробуете угадать? Ставя треугольные скобки мы исключаем вывод типов. Мы явно указываем, какой тип мы используем. Но если у нас есть вывод типов, у нас компиляторы начинают вести себя по-разному. clang падает с ошибкой ``` error: template arguments deduced as 'S<(lambda at <source>:4:20){}>' in declaration of 'a' and deduced as 'S<(lambda at <source>:4:20){}>' in declaration of 'b' 7 | S a, b; ``` А gcc считает, что это два разных типа. ``` static_assert( !std::is_same_v<decltype(a), decltype (b)> ); ``` Пруф. Вцелом доклад Константина был просто прекрасным, и я, наверное, понатырю сюда еще примеров из его доклада через пару месяцев. А когда он выйдет в открытый доступ - обязательно дам ссылку. Я был просто в восторге от дурки, которую он показывал.