C++ and other lectures
8.46K subscribers
39 photos
2 files
209 links
Учебный канал в Телеграм: тут будут анонсы и ссылки на лекции и стримы. Написать автору: @Tilir
Download Telegram
Выложил вставной семинар по стандарту C.

https://youtu.be/WAA04Wt48dE

Мы начнём с попытки изобрести очень простой язык программирования и увидим на его примере основные особенности поведения высокоуровневых программ. Далее мы подробно разберём разные формы поведения программ на языке C, познакомимся и потренируемся со стандартом языка.

У нас будет один вставной момент где я учу детей разбивать программы на модули и писать тесты. Это связано с тем что они сейчас делают проекты, можете это пропустить если смотрите эту лекцию в отрыве от основного курса.

В конце я приготовил небольшое рассуждение про важность стандартизации.

P. S. Многие могут заметить параллели с моим видео в продвинутом курсе по стандарту C++. Да, они есть, но исторически именно семинар в курсе по C был первым, а его вариант нацеленный на C++ я записал просто потому что первый курс ещё не был готов для записи.

#c_graduate
👍67🔥2810🤡1
Ещё одно дополнительное занятие, на этот раз по основам сборки. Это собственно не семинар. Я попросил на вечер лекционную аудиторию и это больше мой любимый лекционный формат.

https://youtu.be/KPlVqXsXKVA

Мы начнём с разминки в виде анализа зависимостей между файлами. Очень быстро пройдя первый наивный способ собирать скриптом, мы за час напишем три версии makefiles возрастающей сложности. Ну а в конце нас ждёт немного cmake.

Я немного подумал и не стал ничего вырезать, хотя там есть пара моментов которые я обычно вырезаю т.к. они не предусмотрены сценарием занятия (внезапные проблемы, глитчи, отладка в реальном времени). Тут вы сможете почувствовать себя на настоящей не слишком отредактированной лекции.

#c_graduate
🔥138👍3410🎉1🫡1
Подводим итоги конкурса нейросетей.

30 апреля 2023 года я объявил конкурс нейросетей на лучшую картинку по запросу.

https://t.me/cpp_lects_rus/99

Убедительную победу в конкурсе нейросетей одержала человек Даша https://t.me/dariaemacs чью картинку я в итоге и использовал в новой пачке слайдов к лекциям. Впрочем, в том посте были и довольно милые варианты.

У Даши тоже есть блог по программированию и подписчиков там почти как у меня https://youtube.com/@DariaEmacs

А рисование - это её хобби, работы можно посмотреть тут https://www.livemaster.ru/dariaemacs/category/205?v=0&sortitems=0&cid=0 (мне показались отличными).

#llm #questions
😁38🔥35👍1513🍌1
Наконец-то выложили в открытый доступ мой доклад на прошлогодней C++Russia. Не прошло и года. Подписчики моего телеграм-канала уже видели его по ссылке в посте https://t.me/cpp_lects_rus/112, но, кажется, пришло время пересмотреть и накидать лайков ))

https://www.youtube.com/watch?v=lc3UkIZ4zOY&t=110s

К слову, я также выступаю на C++Russia в этом году: 2 июня в 16-30 https://cppconf.ru/en/schedule/days/#day-2

Мой доклад будет продолжением прошлого: мы погрузимся в философию языка (как естественного так и языка C++). С нами будут Бертран Рассел и самое большое и самое недооценённое изменение в C++23.

#conference
🔥106😎11👍84🦄3
Выложил первую часть последнего логического семинара, посвящённого в целом научным вычислениям.

https://youtu.be/FXzlzyQQ90c

На этом занятии мы разберёмся с матрицами, линейным программированием, захватим библиотеки BLAS и LAPACK и познакомимся с солверами на примере COIN-OR Linear Programming Solver. Я прямо предчувствую как меня будут критиковать за некоторый советский (а некоторые скажут: антисоветский) окрас второй части семинара. Ничего не поделать. Я как обычно постарался минимизировать политические присадки, но тут они полезны для усвояемости материала. Да и речь идёт о делах давно минувших дней.

#c_graduate
🔥57👍205🍓2😱1🤡1
В тему последнего семинара по C, но расширяя её на C++, мой уважаемый подписчик @A_A_Arg задаёт вопросы, в равной степени интересные и для меня тоже так что хочется их вынести на общее обсуждение.

(1) Каковы шансы, что std::linalg  попадет в состав стандартной библиотеки C++26, и хорошо ли это?

(2) Что сейчас считается лучшим пакетом на C++ для линейной алгебры (например, в отношении скорости и встроенных возможностей распараллеливания)?

Если на канале есть специалисты, поделитесь пожалуйста со всеми.

#questions
🤔228🔥5👍1🥱1
Выложил вторую часть восьмого семинара

https://youtu.be/Yp-rN_AZVSI

В основном она посвящена решению уравнений.

Мы начнём с того, что рассмотрим разнообразные сложности и ловушки плавающих чисел. Далее мы займёмся нахождением корней уравнений: сначала рассмотрим методы в которых надо сохранять брекетинг корня, потом уйдём от них в неизвестность. Ну и в конце нас ждёт применение метода Ньютона для вычисления функций, разгадка магического инверсного корня, правила работы с комплексными числами и немного красоты в виде всяких фракталов.
🔥90👍1413💔1
Выложил дополнение к восьмому семинару, не обязательное, но мне кажется милым и интересным.

https://youtu.be/Y_2uSYwQdtU

Мы поговорим про использование библиотеки SDL для создания простых визуализаций и даже игр. Я пробую рассмотреть все базовые возможности и для практики посередине будет задание.

#c_graduate
74👍33🤩9🔥4
Небольшой опрос.

Какие изменения в C++23 вам кажутся самыми существенными (рассматриваем только core language, не библиотеку)? Я понимаю, что вопрос расплывчатый, выберите критерий "существенности" самостоятельно. Можно выбрать несколько.
Final Results
20%
Explicit object parameter (deducing this)
11%
if consteval
24%
import std
4%
Метки и goto в constexpr функциях
13%
Многомерные индексаторы
10%
Статические операторы [] и ()
4%
Чисто бюрократические уточнения в стандарт относительно некоторых семантических процессов
0%
Свой вариант в комментарии
52%
Просто посмотреть результаты
🤔19👍4🤩2🤡21👎1
Выложил последний семинар курса по языку C. Собственно языка C тут уже не будет, мы поговорим скорее о программировании в целом и про его пределы.

https://youtu.be/k9qO7Jthk60

На этом семинаре мы начнём с обычного ассемблера и будем его упрощать. Сначала на этом пути мы получим RAM-модель, далее машину Минского ну и в конце машину Тьюринга. Где-то там, на том краю, где программирование уже смыкается с математикой, мы рассмотрим фундаментальные проблемы вычислимости и познакомимся с быстро растущими функциями.

В конце видео я скажу пару слов в напутствие. Ну а ниже напишу чуть больше. Пожалуйста дальше читайте только после просмотра ))

—-

Проект записи и выкладки первого курса очень долго меня особенно пугал. Семинары были бессистемными, основывались больше на личном общении и проходили в аудиториях куда сложно было хоть как-то воткнуть камеру. Не очень понятно было как же записать моё трёхчасовое хождение между студентами, перемежаемое какими-то объяснениями в основном у доски. Оформился этот проект в прошлом году когда после пяти лет ведения этих семинаров я придумал их формат, сочетающий некоторые разъяснения (которыми я компенсирую недостатки лекционного материала) и много самостоятельной работы.

Я бы не вытянул этот проект, если бы не помощь в первую очередь Марка Гончарова, Юлия Тарасова, а также Владислава Белова, Станислава Сидельникова и Сергея Циммермана, которые всё это время были за кадром (Марк впрочем в кадре ненадолго появился) но делали куда больше чем многим кажется. Хочется казать им большое спасибо, в том числе за преподавание на открытых в этом году дополнительных курсах лаборатории RISC-V. Очень надеюсь, что эти курсы получат своё продолжение и будут в свою очередь записаны через несколько лет, но уже без меня.

—-

Немного о дальнейших творческих планах я напишу уже летом. Они есть и скоро всех моих уважаемых подписчиков ждёт нечто крайне интересное.

—-

P. S.

Марка на следующий год для преподавания на РТ не утвердили. Формальное основание: набор студентов сокращается, в этом году группы и так были маленькие, много преподавателей не надо. Так что курс остаётся как чистый онлайн, а на первом курсе в наступающем году на ФРКТ будет всё как обычно, но уже без возможности учиться по этой семинарской программе (у каждого семинариста программа индивидуальная). В общем я его очень вовремя записал. Такие дела.

#c_graduate
👍137🔥4733👏5😢5👌1
Выступил на конференции МТС с вечным докладом на тему открытой и расширяемой архитектуры RISC-V.

https://www.youtube.com/watch?v=qoNjayusCX4

Я бы сказал этот -- один из лучших которые у меня получились в этом жанре.

Сама конференция к слову произвела на меня отличное впечатление, это без преувеличений было пока что самое эпичное из мероприятий куда меня в этом году звали. С другой стороны я пока не сходил на C++ Russia и на Сбер GigaConf (и туда и туда я тоже приглашён) так что пока что сезон не закрыт.

UPD: слайды https://sourceforge.net/projects/cpp-lects-rus/files/conference-talks/mts-riscv-2024-nopwd.pdf/download

#conference #riscv
👍100🔥3212👏2👌2
Выступил весной на конференции Heizenbug с докладом про генератор llvm-snippy, который мы недавно заопенсорсили. Сейчас видео стало доступно публично.

https://www.youtube.com/watch?v=ceAK85rAkfY&t=146s

Timeline
00:00 -- Разминка и вводная информация про RISC-V (иначе никто бы ничего не понял)
05:53 -- Постановка задачи
11:00 -- Недостатки существующих генераторов и как мы их адресуем компиляторными технологиями
18:10 -- Архитектура llvm-snippy
23:30 -- Генерация доступов к памяти
27:17 -- Условные переходы и вызовы функций
35:27 -- Система пассов. Сниппи как последний в мире генератор, потому что других теперь не надо.
38:24 -- Вопросы

Слайды к докладу: https://github.com/tilir/snippy/releases/download/1.0/snippy-heizenbug.pdf

Собственно генератор: https://github.com/syntacore/snippy

Документация к генератору является частью первого релиза: https://github.com/syntacore/snippy/releases/tag/snippy-1.0

---

В целом это был очень интересный опыт. Конференция была отчётливо "не моя". Я редко выступаю перед пустыми залами. Обычно на мои выступления идут, что бы я ни рассказывал. На Гейзенбаге, наконец-то, это был тот самый случай когда меня вообще никто не знал, и, логично, что почти никто не пришёл. Зал был человек на 150, по факту же в нём сидело где-то 25 человек из них человек двадцать это джаваскриптеры со стеклянными глазами. Остальные ушли в другие залы. Осудим ли мы их за это? ))

С одной стороны можно сказать, что вообще идти туда было ошибкой. С другой стороны, а где найти в России не слишком душную конференцию по дизайну и верификации аппаратуры? Если у вас такая есть, позовите меня туда. Я понадеялся что на Гейзенбаге будут интересные доклады по тестированию разного уровня и что для того уровня, о котором рассказываю я, тоже найдутся те, кто его поймёт и воспримет. Если судить по оценкам, то можно сказать так: всем, кто его посмотрел, доклад очень понравился. Просто мало кто посмотрел.

Сам доклад тоже для меня не типичный. Я редко рассказываю о том, что делаю на работе. А тут я рассказывал о проекте, который моя команда делала и внедряла около года и для которого я сам был и остаюсь чем-то вроде архитектора и руководителя в одном лице. То есть для меня эта тема очень живая и очень интересная.

Посмотрим будет ли интересно моей уважаемой аудитории здесь ))

#conference
❤‍🔥77👍4212🔥8🤷‍♂1😁1
Опубликовали нашу с Ильёй Андреевым https://t.me/BruceGliff очередную статью. Её тематика хорошо продолжает тему прошлого поста (может мне для snippy и системной верификации завести тег?). Генератор llvm-snippy принципиально однопоточный, он никак не учитывает возможных эффектов многопоточного true sharing. А что если развить идею и из нескольких сниппетов, каждый из которых исполняется на отдельном ядре, сделать поверх некий граф возможных общих обращений в память, смоделировать мьютексы, смоделировать CAS-циклы и т.п. Возможно ли тогда по этому графу понять корректность многопоточного кода с учётом возможных переупорядочений операций и с учётом слабой модели памяти?

Нечто подобное делают давно известные литмус-тесты, но они маленькие и короткие. Можно ли как-то решить проблему комбинаторного взрыва при росте числа верифицируемых операций? Собственно об этом статья.

http://sitito.cs.msu.ru/index.php/SITITO/article/view/1068

Фактически, как вы догадываетесь, мы сделали LLVM-based инструмент, теория для которого изложена в этой статье. Сам инструмент пока в опен-сорсе не появился и в ближайшее время вряд ли мне удастся согласовать его появление, т.к. такого рода программы продаются и стоят дорого (см. например breker от brekersystems.com). Но в статье мы постарались достаточно подробно описать основные алгоритмы.

PDF надеюсь скоро доедет до сайта.

P. S. установочная статья по llvm-snippy тоже в процессе подготовки.

#publications
🔥60👍225🤮3🤔1😢1
Всем привет. Выложили по ссылке моё выступление на C++ Russia. Через годик откроют, а пока как водится эксклюзив для моих уважаемых подписчиков.

https://www.youtube.com/watch?v=kJ6RvI9A1bU

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

Мой доклад в этом отношении возвысился этакой скалой традиционных ценностей. Он про язык и только про него. Это второй в серии моих семантических докладов. Рассказав год назад про синтаксис и семантику в целом, в этом году я ныряю в разрешение имён.

P. S. и к слову, меня включили в этом году в программу Zero Cost Conf, туда вход будет свободный.

#conference
👍12739🔥25👏2😍2🤝2🥰1👀1
Всем привет. Поступают вопросы что я намерен делать в связи с возможными блокировками. Что же, можно сказать, что я неплохо к ним подготовлен.

Во-первых, благодаря уважаемым добровольцам, я богато представлен на торрентах, например https://rutracker.org/forum/viewtopic.php?t=6188137 и мн. др.

Во-вторых, у меня есть мой собственный канал на rutube, даже верифицированный. Пока там только бакалаврский курс, но вообще дублировать туда всё подряд не так уж и сложно, подписывайтесь: https://rutube.ru/channel/10218561/

В-третьих, всё, что я недовыкладываю, то довыкладывают многочисленные уважаемые добровольцы, упомянутые мной выше и не только. Я сам иногда с интересом нахожу где меня в очередном месте довыложили.
Например магистерский курс на rutube, залитый внезапно не мной: https://rutube.ru/plst/214137/
А вот курс по языку C, тоже не мной залитый: https://rutube.ru/plst/371362/
И так далее, ищется это очень легко. Я никак не препятствую распространению своих видео кем угодно, даже приветствую.

С другой стороны, всем конечно удобнее ориентироваться на единый источник, которым является мой youtube-канал, чем собирать всё в интернете по крохам.

Поэтому я буду продолжать выкладки на свой youtube-канал. Но, пока ограничения/блокировки не будут сняты, я буду сопровождать каждое видео ссылкой в описании на какой-либо неблокируемый ресурс.

#official #torrent
248👍102🔥22🤝5👏3🥰2🫡2🤗1
Выложил с разрешения организаторов выступление на конференции Сбер 27 июня 2024 года. Доклад несложный и развлекательный, посвящён многогранности тех возможностей которые даёт LLVM. Мы начинаем с того, что это бэкенд компилятора. Далее оказывается, что LLVM как платформа может быть использован для многих интересных инструментов, имеющих к компилятору весьма мало отношения. Это и статический анализ (clang-tidy) и бенчмаркинг (llvm-exegesis) и генерация тестов (llvm-snippy). Мы поговорим как и за счёт чего всё это совмещается.

Для меня это был интересный опыт, т.к. я впервые пошёл не один, а взял с собой содокладчицу Анастасию Черникову @anastasiya_chernik0va. Настя училась у меня на 1 и 2 курсе и сейчас работает под моим руководством в качестве инженера-стажёра и как раз среди прочего занимается llvm-exegesis для RISC-V. Кроме того что Настя прекрасно пишет код, она также очень хочет больше выступать. Для неё это первое выступление, но, я думаю, вы её ещё много где увидите.

https://www.youtube.com/watch?v=5HKSeLSIya4

Патч с RISC-V бэкендом в exegesis: https://github.com/llvm/llvm-project/pull/89047

Альтернативная ссылка на VK Video, как и обещал, в описании.

#conference
🔥109👍40201👏1😁1🫡1
В связи с тем, что МФТИ-шные контесты по C для первого курса нестабильны, особенно летом, мой уважаемый подписчик Никита Мальцев https://t.me/hfhhdp перенёс coursework на Yandex contest:

https://contest.yandex.ru/contest/66459/enter

Я сегодня заслал несколько решений, работает как часы. Просьба протестировать, отписать ощущения и я тогда обновлю видео на канале альтернативной ссылкой в описании. Там пока не хватает ассемблера, но это наживное.

#c_graduate
88🔥44👍25🐳41
Выступил с ещё одним рассказом про генератор llvm-snippy, на этот раз на C++ Zero Cost Conf. В данном случае я чуть меньше рассказывал про его применение и чуть больше про внутренности, в частности про некоторые проблемы проектирования, которые мы вынуждены были решать.

https://youtu.be/A8FSh8eFj1w

Timeline
00:00 Вступление: открытая и расширяемая
04:55 Идея LLVM-based тестового генератора
09:20 Рантайм-полиморфизм в стиле LLVM
17:27 LLVM-snippy и его генплан
23:44 Появление generation requests и как всё запутывается
29:23 Изменяем проектирование через скрытый полиморфизм
36:18 Завершение и вопросы

В целом Zero Cost Conf мне показалась в этом году технически сильней и интересней, чем даже C++ Russia. К тому же они уже выложили некоторые другие доклады. Так что я тут сделаю также обзор того, что на мой взгляд было удачным и что нет. Но несколько позже.

UPD: мне обещали исходник видео для альтернативной выкладки на неблокируемые ресурсы, но пока он до меня не доехал. Как только будет, сделаю дополнение этого поста.

#conference
🔥67👍2511❤‍🔥31🫡1
Продолжаем тему Zero Cost Conference этого года (благо почти все видео уже выложены).

Прежде, чем я перейду к общему обзору, давайте немного поговорим про лучший доклад. Обычно, когда я выступаю на какой-то конференции, лучшим докладом там я считаю, конечно, свой. Так было на этой C++ Russia и много ещё где. Есть понятные исключения, когда я просто прихожу на огонёк поболтать про открытую и расширяемую и т.п. (кстати зовите), там, разумеется, я ни на что не претендую, я сейчас про содержательные доклады.

Итак я всегда иду с предположением что я лучший. Но, с другой стороны, мне всегда очень приятно ошибаться в этом предположении. И вот как раз на ZCC'24 был доклад, который я считаю несомненно лучшим, чем даже мой, причём лучшим с отрывом и с гандикапом. Он прекрасен и по композиции и по глубине и по раскрытию темы.

Встречайте, Сергей Слотин.

https://youtu.be/Lrjjqc1bRHo

Timeline (моя версия)
00:00 Начало и правила игры
06:00 Первый вопрос
11:30 Memory sharing
19:20 Пропускная способность
29:52 Ассоциативность
37:50 Виртуальная память
47:40 Завершение

В опросе, который проводился в процессе доклада, я по итогу занял 13-е место. Я бы удержался в десятке, но я ответил "about the same" на первый вопрос, так как именно в таком эксперименте мне никогда не удавалось пронаблюдать лесенку. После конференции обсудили с Сергеем его способ бенчмаркинга. Исходники для желающих перемерить:

https://github.com/sslotin/amh-code/tree/main/cpu-cache

Сергей, как выяснилось, также является автором вот этого превосходного материала, который я многие годы использовал при подготовке разного уровня лекций.

https://en.algorithmica.org/hpc/

Прекрасный материал, прекрасный доклад, очень рекомендую.

#talks
🔥92👍247
Ну и завершая тему Zero Cost Conference написал (довольно длинный) обзор всего остального что там было по обоим трекам и в Москве и в Ереване (ну кроме откровенно странных штук типа геогессинга).

https://telegra.ph/Obzor-dokladov-proshedshej-Zero-Cost-Conf2024-08-11

Было бы интересно увидеть в комментариях что из содержания докладов понравилось и запомнилось вам и насколько вы бы скорректировали мои отдельные оценки в плюс или в минус (разумеется только если вы действительно смотрели соответствующий доклад).

#conference #talks
40👍33🔥18🫡2
Настало время этого анонса.

Моя книга по оптимизирующим компиляторам, над которой я работал с прошлого лета, наконец-то доступна в предварительной продаже.

Финальный вариант книги ещё не свёрстан, так что на шрифт и верстку пока не смотрите, в печати всё будет гораздо лучше.

https://www.chitai-gorod.ru/product/optimiziruyushchie-kompilyatory-struktura-i-algoritmy-3059667

Начиная с осени, вероятно с середины октября, когда эта книга поступит в продажу уже в магазинах, я начну выкладку на свой канал (youtube и rutube) снятого этим летом видеокурса по этой книге. Надеюсь успеть его полностью выложить к новому году, если не решу доснять специальных выпусков. В итоге можно будет читать книгу и смотреть курс.

Большой пост с деталями, историей и мотивацией к написанию (а также с приглашением на встречу читателей) я выложу когда она выйдет в продажу и поступит в магазины.

P. S. Статистика по предпродажам сильно повлияет на тираж книги. Ну и в предпродаже её можно купить со значительной скидкой.

#publications
🔥325👍11730👏8❤‍🔥7🫡4😱2