ch
Feedback
C++ and other lectures

C++ and other lectures

前往频道在 Telegram

Учебный канал в Телеграм: тут будут анонсы и ссылки на лекции и стримы. Написать автору: @Tilir Boosty автора: https://boosty.to/cpp_lects_rus

显示更多
9 633
订阅者
-224 小时
+87
+4830
吸引订阅者
六月 '26
六月 '26
+112
在1个频道中
五月 '26
+204
在3个频道中
Get PRO
四月 '26
+126
在0个频道中
Get PRO
三月 '26
+119
在0个频道中
Get PRO
二月 '26
+148
在0个频道中
Get PRO
一月 '26
+266
在2个频道中
Get PRO
十二月 '25
+228
在1个频道中
Get PRO
十一月 '25
+234
在0个频道中
Get PRO
十月 '25
+283
在2个频道中
Get PRO
九月 '25
+207
在1个频道中
Get PRO
八月 '25
+257
在2个频道中
Get PRO
七月 '25
+304
在0个频道中
Get PRO
六月 '25
+225
在3个频道中
Get PRO
五月 '25
+362
在4个频道中
Get PRO
四月 '25
+172
在2个频道中
Get PRO
三月 '25
+212
在2个频道中
Get PRO
二月 '25
+270
在0个频道中
Get PRO
一月 '25
+540
在3个频道中
Get PRO
十二月 '24
+986
在2个频道中
Get PRO
十一月 '24
+219
在1个频道中
Get PRO
十月 '24
+383
在2个频道中
Get PRO
九月 '24
+230
在1个频道中
Get PRO
八月 '24
+472
在4个频道中
Get PRO
七月 '24
+178
在1个频道中
Get PRO
六月 '24
+176
在0个频道中
Get PRO
五月 '24
+251
在1个频道中
Get PRO
四月 '24
+567
在2个频道中
Get PRO
三月 '24
+269
在1个频道中
Get PRO
二月 '24
+291
在0个频道中
Get PRO
一月 '24
+244
在1个频道中
Get PRO
十二月 '23
+255
在2个频道中
Get PRO
十一月 '23
+191
在0个频道中
Get PRO
十月 '23
+168
在0个频道中
Get PRO
九月 '23
+190
在0个频道中
Get PRO
八月 '23
+114
在0个频道中
Get PRO
七月 '23
+134
在0个频道中
Get PRO
六月 '23
+221
在0个频道中
Get PRO
五月 '23
+136
在0个频道中
Get PRO
四月 '23
+192
在0个频道中
Get PRO
三月 '23
+138
在0个频道中
Get PRO
二月 '23
+82
在0个频道中
Get PRO
一月 '23
+103
在0个频道中
Get PRO
十二月 '22
+118
在0个频道中
Get PRO
十一月 '22
+73
在0个频道中
Get PRO
十月 '22
+104
在0个频道中
Get PRO
九月 '22
+93
在0个频道中
Get PRO
八月 '22
+686
在0个频道中
日期
订阅者增长
提及
频道
26 六月0
25 六月+2
24 六月+8
23 六月+4
22 六月+3
21 六月+2
20 六月+4
19 六月+2
18 六月+4
17 六月+3
16 六月+7
15 六月+4
14 六月+2
13 六月+7
12 六月+5
11 六月+3
10 六月+4
09 六月+3
08 六月+4
07 六月+4
06 六月+3
05 六月+4
04 六月+12
03 六月+5
02 六月+10
01 六月+3
频道帖子
Есть возможность в начале июля (где-то с 1 по 5 включительно) устроить встречу с читателями в Сочи или в Сириусе. Я как раз там буду. Просьба местных обозначиться в чате или у меня в лс и сказать (1) есть ли заинтересованность, (2) когда и где лучше устроить встречу с читателями и (3) можете ли вы помочь с организацией.

2
Выложил лекцию по llvm-snippy. Настало время рассказать о моём лучшем проекте на моём канале. Английская версия: https://youtu.be/gomtQMGOFF8 Русская версия и качество не хуже: https://rutube.ru/video/18e1a8bfca1d9e2979d8b8a631e68207 Документация: https://llvm-snippy.github.io/llvm-snippy
5 799
3
🔔 Встреча с Константином Владимировым — автором блога @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
5 195
4
Встреча во Владивостоке пройдет 12 июля на кампусе ДВФУ. Посетить может кто угодно не только студенты. Регистрация открыта ))
4 309
5
Всем привет. Выложил главы 2.1 и 2.2 моей книги про C++ https://boosty.to/cpp_lects_rus/posts/26f430cd-22b9-4d79-9a00-97a0ade
Всем привет. Выложил главы 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
6 592
6
Немного подзамочного контента для моих уважаемых подписчиков. Ни для кого не секрет, что мой магистерский курс этого года (https://www.youtube.com/playlist?list=PL3BR09unfgcjSJXcCn7Y6VBdGfyqeix5w) я записывал на английском языке. Меньше людей знает, что исходно он читался на русском языке, на английский я (нейронкой) до лекции переводил только слайды. Далее я брал другую нейронку, распознавал свой голос с записи лекции на русском, грузил вместе со слайдами в третью нейронку и просил сделать мне подстрочник на английском и с этого подстрочника на английском уже и читал. И, конечно, я просил нейросеть убрать из этого подстрочника все шутейки, хиханьки, хаханьки, общение с аудиторией и всё остальное. В процессе ещё и правил все ошибки, которые находили на лекциях. Поэтому мой магистерский на английском немного высушен. Чисто для моей аудитории, готовой, прямо скажем, на многое, выкладываю ссылки на магистерский курс этого года на русском. Предупреждаю: это очень фанатский контент. Не надо даже пробовать его потреблять, если вы привыкли к той лакированной подаче, которую я считаю нормой для своего ютуба. Это вторая часть выкладки. Лекции 1-14: https://t.me/cpp_lects_rus/333 Лекция 15. Аллокаторы, часть 1 (https://rutube.ru/video/private/8c6f32ba064b144da5c03bebaac9b773/?p=ajeysAX7NOIy8gglZHfyjw) Лекция 16. Аллокаторы, часть 2 (https://rutube.ru/video/private/22a826a6de7a4ce7ea6ede57b906a2c3/?p=PqktK6w53hLjBnmVfo9V0Q) Лекция 17. Умные указатели (https://rutube.ru/video/private/54cf93fa747a2b356a173d121fd03b64/?p=U0Dp_flMer7_sHaEqyMnXA) Лекция 18. Полиморфизм (https://rutube.ru/video/private/f5774eaf850ca497fbe0c5430256d682/?p=UZqoD2tp_cYklNnG3OGgow) Лекция 19. Потоки, часть 1: (https://rutube.ru/video/private/57f909c6b26a9f7fb0b0bac94cc71cdf/?p=5Hd_jmCQjKa08xh5DhZdIw) Лекция 20. Потоки, часть 2: (https://rutube.ru/video/private/55e4b99445855bbd4879f1df33fc710c/?p=BSdemL8n3llX_j6wUnBzig) Лекция 21. Очереди: (https://rutube.ru/video/private/20eddfe5812e76d4054ccd86381be8a6/?p=VoJTbqASCV69p0rXdCL47w) Лекция 22. Атомики, часть 1: (https://rutube.ru/video/private/41f6dde73447b120aa54ce94d595e8b5/?p=rR1519UXAawao77r9n1W_w) Лекция 23. Атомики, часть 2: (https://rutube.ru/video/private/6d5b6477154c4ec918dd6369ceb2b9ce/?p=g2lUeBIgdD0rDGs7XpfJMw) Лекция 24. Атомики, часть 3: (https://rutube.ru/video/private/421dc4d54461d76fda428a96ff9b89dc/?p=QH3ntOxNYMb2FIj21aSYsQ) Лекция 25. Корутины, часть 1: (https://rutube.ru/video/private/6d2e0d9e83b30426c2b411332690d115/?p=yF1dmq_x6690j4Jzoj_BVA) Лекция 26. Корутины, часть 2: (https://rutube.ru/video/private/2e272db2eddb9cc16edb03990b2241f0/?p=dLA_fMI8UJbdNPDSy_zdAw) Лекция 27. SYCL и GPGPU: (https://rutube.ru/video/private/4e491bb7e3ee717d8ad5fb0e95d1b012/?p=IXTd2TzHtGdTRKrAS4Sr8A) Лекция 28. Execution: (https://rutube.ru/video/b777c6378138149ab7e2a057baae6cfd) Да, все ссылки на rutube, я стримил туда. #cpp_postgraduate
6 745
7
Выложил лекцию по проблеме рекламации памяти, прочитанную в институте 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 Список литературы и вопросы.
7 242
8
Выложил лекцию по 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
8 790
9
В этом июле где то в 10-х числах у меня есть шанс побывать на Дальнем Востоке. Просьба местных обозначиться в чате и сказать есть ли заинтеремованность, когда и где лучше устроить встречу с читателями и можете ли вы помочь с организацией.
8 723
10
Выложил лекцию по 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
10 423
11
Не могу не поделиться самым веселым, на мой взгляд, примером из доклада великолепного Константина Владимирова. Он делал анонс доклада в своем 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)> ); ``` Пруф. Вцелом доклад Константина был просто прекрасным, и я, наверное, понатырю сюда еще примеров из его доклада через пару месяцев. А когда он выйдет в открытый доступ - обязательно дам ссылку. Я был просто в восторге от дурки, которую он показывал.
8 155
12
Отличный реакт и канал интересный. К слову. У моего доклада маловато оценок "супер" и пока что их можно ставить. Если у вас есть билет, зайти и кликнуть "оценить". Это намёк ))
6 500
13
Выложил вторую лекцию по корутинам на английском языке. https://youtu.be/huitkyM1UQE Во второй лекции мы переходим от базовой механики co_await и promise_type к более сложным и практическим аспектам программирования с использованием корутин в C++20/23. Сначала мы обсудим симметричные корутины, различные варианты await_suspend и то, как корутины могут напрямую передавать управление друг другу. Затем, на примере корутинной реализации конечных автоматов, разберём, как с помощью awaiters можно строить довольно сложные модели выполнения. Важной частью лекции является обсуждение взаимодействия корутин с потоками на примере многопоточной подписки на события. Мы разберём, почему встроенные (stackless) корутины могут продолжать выполнение на другом потоке, как устроен фрейм корутины и почему это создаёт сложности для оптимизаций в компиляторах. Также мы рассмотрим корутины как основу для композиции асинхронных вычислений и увидим, как корутины позволяют писать существенно более читаемый асинхронный код по сравнению с callback-based подходами. В завершение разберём внутреннее устройство корутин в компиляторах: фреймы корутин, порождаемые конечные автоматы и даже генерируемый ассемблер. 00:00 Введение. Вспоминаем пройденное. 04:38 Обобщаем awaitable transformations: что, кроме перегрузки co_await, нам доступно? 13:09 Изобретаем симметричные корутины в C++: await_suspend и его механика. 18:42 Case study: конечные автоматы на корутинах. 31:00 Монадические свойства co_await. 37:55 Сочетание корутин с потоками. Многопоточная подписка на события и её сюрпризы. 48:00 Корутинный интерфейс для std::future. 52:05 Корутины как механизм композиции асинхронных задач. 56:18 Внутреннее устройство корутин и их реализация в компиляторах. 01:02:04 Обзор литературы и завершение. #cpp_postgraduate
7 292
14
Всем привет. Кто идёт на C++ Russia из моих уважаемых подписчиков, обратите пожалуйста внимание на изменения в программе, внесённые в последний момент. https://cppconf.ru/schedule/table/#day-2 Теперь мой доклад открывает конференцию в субботу утром, а Антон Полухин закрывает в воскресенье вечером (ранее было наоборот). Поэтому, если вы хотите попасть на мой доклад, вам надо будет встать утром в субботу и не опоздать к получению бейджа. Я в вас верю )) #official
8 597
15
Минутка 3d-моделей. Ребята из Iridi прислали исходники Крыса Кейта (Кита?) с обложки моей книги. Выложил на boosty в бесплатный доступ чисто чтобы хранить поближе к собственно книжке. https://boosty.to/cpp_lects_rus/posts/7f9999a9-4249-4538-9ddb-40b9338fe40f #boosty #cppbook
10 509
16
Выложил первую лекцию по корутинам на английском языке. https://youtu.be/wmrW6AkRo3c В этой лекции мы начинаем с базового вопроса: что вообще такое корутина и чем она отличается от обычной функции или thread routine, а также обсуждаем исторический контекст и классификацию сопрограмм: стековые и встроенные (stackless), асимметричные и симметричные и т.д. Основная часть лекции посвящена внутреннему устройству корутин в C++20/23. Разбираем три ко-оператора, интерфейс promise_type, coroutine_handle, awaiters и их контракт. На протяжении лекции мы будем постепенно строить собственные корутинные абстракции -- несколько наивные, но полезные в образовательных целях. Когда основы станут ясны, мы обсудим более сложные вещи, например то, как через awaiters можно реализовать более сложные механизмы -- подписку на событие и пробуждение нескольких корутин на едином объекте синхронизации. Также мы кратко обсудим оператор co_await и возможности для его перегрузки. 00:00 Introduction. Программы, подпрограммы и thread routines. 10:11 Сопрограммы и их классификация. Stackful- и stackless-сопрограммы в C++. 15:41 Генераторы в Python и C++23. 22:10 Внутреннее устройство и строительные блоки сопрограмм. Ко-операторы. 27:25 Интерфейс promise_type и Hello World. 36:50 Напишем свой простой генератор. 45:00 Range-based-использование и когенерация. 50:40 Детали работы ко-операторов. Awaiters. 56:23 Case study: подписка на результат. 01:05:42 Оператор co_await, завершение и список литературы. #cpp_postgraduate
9 587
17
Стрим на Boosty скоро подрубаю. После завершения тут размещу ссылку на запись. Подключайтесь: https://boosty.to/cpp_lects_rus/streams/video_stream #official #boosty
0
18
Выложил третью лекцию по атомикам на английском языке. https://youtu.be/h4k3z69aIMY В третьей части лекции мы переходим к рассмотрению проблемы рекламации памяти и построению lock-free структур данных. Начинаем мы с рекламации памяти, разбирая в процессе, почему наивные решения на указателях и CAS ломаются, и где именно возникает необходимость аккуратно управлять временем жизни объектов. Далее рассматриваем новые подходы, которые введены в стандарт C++26: RCU и hazard pointers. Обсуждаем, как они работают, какие гарантии дают и какие накладные расходы вносят. После этого мы приступаем к рассмотрению lock-free структур данных. Сначала разбираем простой пример unbounded стека с использованием hazard pointers. Затем bounded MPMC стек, где появляются уже другие сложности: проблема публикации и проблема ABA. Разбираем, как они возникают и как с ними бороться. В завершение рассматриваем lock-free MPMC очередь, обсуждаем влияние моделей памяти на производительность и смотрим на результаты бенчмарков. 00:00 Введение. Проблема рекламации памяти. 07:03 Идея атомарного shared_ptr и её ограничения. 11:05 Решения в C++26: RCU. 23:01 Решения в C++26: Hazard pointers. 31:20 Lock-free unbounded stack с использованием hazard pointers. 35:45 Lock-free bounded MPMC stack: проблема публикации. 42:42 Проблема ABA и способы её решения. 54:40 Lock-free bounded MPMC queue, бенчмаркинг и литература. #cpp_postgraduate
9 710
19
Очередной отчётный стрим на бусти проведу 3 мая в 19 часов по Москве. В программе: * Новые интересные факты про моего несосто
Очередной отчётный стрим на бусти проведу 3 мая в 19 часов по Москве. В программе: * Новые интересные факты про моего несостоявшегося менеджера Игоря. * Как меня разводили на смарт-контрактах. * Зачем был опрос про столы. * Когда новые главы книги, почему задержка. * А также любые ваши вопросы, которые можно накидать уже сейчас: https://www.donationalerts.com/r/cpp_lects_rus P. S. Ваша поддержка моей просветительской деятельности меня очень мотивирует: https://boosty.to/cpp_lects_rus Минимальная подписка для участия в стриме всего-то 128 рублей. Мне кажется для всех кто на этом канале вообще не деньги )) #official #boosty
6 913
20
У вас в офисе какая длина у вашего рабочего стола? Предполагаем что у стола три параметра: длина, высота и глубина. Если работаете из дома или из коворкинга, тоже сойдёт.
0