C++ and other lectures
8.48K subscribers
39 photos
2 files
210 links
Учебный канал в Телеграм: тут будут анонсы и ссылки на лекции и стримы. Написать автору: @Tilir
Download Telegram
В отпуске дошли руки написать обзор на книгу Андрея Карпова "Вредные советы для C++ программистов". Тем более мне недавно подарили физический экземпляр, как раз появился повод.

https://telegra.ph/Vrednyj-obzor-vrednyh-sovetov-06-23

Я бы конечно хотел видеть больше самых разных книг по программированию, выходящих в России. Здесь автор явно постарался и с оформлением и с изданием и с продвижением своей книги. Ну и я в обзоре постарался не жестить сверх минимально необходимого. Have fun.

В обзор также приложена фотка моего рабочего стола в Туле с этой книгой и моим конспектом. Можно поизучать что у меня там под стеклом.

P. S. Если у вас тоже есть книга по программированию, вы хотите мне её подарить и бесплатно получить честный отзыв, стучитесь ))

#books
👍12618🔥7❤‍🔥6🤔3
Всем привет. Напоминаю, что на ближайших выходных я приезжаю в Казань провести там встречу с читателями. Встреча будет в классическом формате и в основном в режиме живого диалога. Можно будет затронуть как обычно широкий круг вопросов.

Дата и время: суббота, 5 июля в 14 часов. Место: магазин "Книга плюс" (ТРЦ Южный, Проспект Победы, 91).

Территориально локация не очень удобная: это как если бы в Москве встреча была где-то на МКАДе. Зато локация вроде бы большая, хорошая. Транспортная доступность, в общем, тоже не худшая из всего, что бывало в других городах. И, как обычно, неизвестно когда я вообще ещё окажусь в Казани. Книжки можно приносить свои, можно будет купить на месте гарантированно актуальный тираж.

Магазин прислал свою ссылку на регистрацию: https://forms.gle/18MF1qctrqwG6cwe6

Пожалуйста зарегистрируйтесь по ней. По моей ссылке из прошлого поста зарегистрировалось существенно меньше людей, чем проголосовали вот тут https://t.me/cpp_lects_rus/283. Там было 80 голосов, а по моей ссылке я пока вижу только 20 регистраций. Мне интересно где все проголосовавшие? Вероятно будут на встрече, не могут же люди просто так тыкать в рандомные города ))

Также я буду в Казани в воскресенье. Я пока планирую просто гулять, но если у вас есть возможность организовать что-то полезное, скажем встречу ещё где-то ещё с кем-то или какое-то выступление, то ещё не поздно мне написать в лс обсудить детали.

P. S. пост временный, снесу по проведении мероприятия.

#author_event
👍30👌43
Выложили мой доклад, посвящённый компиляторным технологиям в верификации, сделанный на конференции Sysconf этого года. Мы продолжаем развивать проект llvm-snippy и я продолжаю про него рассказывать, освещая новые возможности инструмента. На этот раз я несколько сместил акценты: я рассматриваю не только железо, а весь спектр моделей RISC-V разного уровня -- от функциональных симуляторов до потактовых моделей. На самом деле на работе мы тестируем с помощью snippy даже отладчики и валгринд.

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

00:00 Intro
01:28 Начало: моделирование RISC-V
06:45 Идея и проблемы генератора потока инструкций
11:48 Компиляторы спешат на помощь: LLVM и llvm-snippy
15:06 Базовые возможности llvm-snippy
20:24 Сложность операций с памятью
25:12 Поток управления и вызовы функций
33:30 Использование в опен-сорс и учебных проектах и призыв к действию
36:45 Вопросы и завершение

Вообще в этом году Sysconf была, пожалуй, пока что самой сильной по составу конференцией из тех, где я был. Там было много отличных докладов и про компиляторы и про отладчики и про операционные системы. Когда всё выложат надо будет сделать обзор лучших. Конференция проходит первый год и у них на канале всего 66 подписчиков. Если вы интересуетесь такими темами, вы знаете что делать ))

Альтернативное видео: https://vkvideo.ru/video-228047553_456239026

#conference #snippy
🔥9015👍124💩2🐳1🦄1
Провёл встречу с читателями в Казани. Обсудили детали сосуществования ML-guided и profile-guuded оптимизаций, компиляторы для разработки аппаратуры, перспективы нейросетей и состояние преподавания информатики.

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

Сама Казань очень интересна, мне ещё предстоит её исследовать сегодня и завтра. Какие то путевые заметки тоже положу в комментарии.

Спасибо всем кто пришёл за то что пришли и за отличные вопросы, было супер.

#author_event
👍123🔥4110👌4👾1
Пятница, вечер. Время чилаута и развлекательного C++.

Представим у вас есть куча специализаций некоего шаблона функции foo.

template <typename T> int foo() { return 1; } 
template <> int foo<int>() { return 2; }
template <> int foo<float>() { return 4; }


И функция sumfoos которая подставляет по ним пачку типов и как-то её сворачивает. Ну скажем складывает.

template <typename ...T>
int sumfoos() { return (foo<T>() + ...); }


Вы хотели бы написать шаблон функции apply_sumfoos с вот такой сигнатурой

template <typename Tuple> auto apply_sumfoos();


Идея в том что он принимает кортеж, разворачивает его и для его содержимого вызывает sumfoos.

std::tuple<int, float, double> t;
assert(apply_sumfoos<decltype(t)>() == 7);


Можно предложить кривой и косой, уродливый как черт с рогами, но рабочий вариант с dummy-аргументом.

https://godbolt.org/z/zxY1qf9hT

Но это не наш метод. Я утверждаю что есть более красивые способы (и даже можно обойтись без сворачивания с index sequence).

Наливайте себе чаю с булочкой или пивка с орешками и подключайтесь. Попробуйте придумать как это решали бы вы, а потом смотрите в комментарии и ставьте лайки лучшим вариантам. Ну и если вашего там не будет — смело постите. Если никто не угадает мой вариант, скажу его завтра.

UPD: мой вариант вычислили за 20 минут. Горжусь своим каналом ))

UPD2: выношу из комментариев самые интересные варианты.

0. Просто уход от nullptr за счёт type_identity, но всё ещё dummy arg https://godbolt.org/z/P41eeTcfK via @PaRat07
1. Биндинг свёртки: https://godbolt.org/z/85EhzdWve совместно @savvatelegram и @xray_3d
2. Рефлексия: https://godbolt.org/z/Pdqd75nxq via @xray_3d
3. Вывод типов и deduction guides: https://godbolt.org/z/6zTT6M8zh via @redPergament
3a. Его разновидность через оператор приведения: https://godbolt.org/z/cTh1W3r3e от него же
4. Hana-style (я добавил к решению подписчика пару consteval потому что смог): https://godbolt.org/z/GxcqKnWMK via @n13625124998637487500
4a. Его очень красивая и лакончиная разновидность через decltype (я тоже добавил consteval от себя) https://godbolt.org/z/zjErr58zz via @alamat1
5. Виртуозный std::apply https://godbolt.org/z/Ydd5e86oP via @savvatelegram
5a. То же самое руками через index sequence https://godbolt.org/z/6feh3fvex via @vmishanin
6. Сохранение промежуточного адреса инстанцированной функции https://godbolt.org/z/racKGYnW1 опять @xray_3d
7. in_place_type подход https://godbolt.org/z/Gq9G9n773 via @alamat1

Ну и самый наивный вариант: https://godbolt.org/z/48jnhKz45 здесь в редакции @ePilnikoff но вообще до него многие дошли и он совпадает с моим решением.

Наивный вариант очень интересно улучшил @s_i_g_a до состояния https://godbolt.org/z/GePnj8qE1 чтобы функция принимала любой tuple-like тип вроде того же std::array. Понятно что так можно улучшить каждый из предложенных вариантов.

Итого мы с вами нашли десять нетривиальных и принципиально разных способов добиться цели. Очень круто.

#questions
🔥7185👍3🤔2🆒1💊1
Media is too big
VIEW IN TELEGRAM
Всем привет. Открыта регистрация на Zero Cost Conf этого года. Выступаем с Владиславом Беловым на вечнозелёную тему алиасинга.

Владислав работает в моей команде и он недавно подготовил довольно сложный патч в компилятор который наконец-то позволяет LLVM агрессивно оптимизировать код в котором соответствующие аннотации висят на локальных переменных, например. По пути мы оба, понятное дело, многое узнали.

https://cppzerocostconf.yandex.ru/2025

Пост временный, сотру как выложу видео (они обычно быстро выкладывают). А может и оставлю ради гифки. Гифка от организаторов уж очень хороша.

#conference
👍68🔥17😍62🐳1
Вечер пятницы и время чилаута в области C++. На этот раз мы снова сыграем в увлекательную игру "кто из компиляторов прав".

Я вытащил этот пример из переписки со студентом более чем годичной давности и проверил на свежих gcc и clang. Они всё ещё не согласны друг с другом.

https://godbolt.org/z/fe14q8aoz

Это упражнение на чтение стандарта, так что ссылки на стандарт обязательны.

Как обычно — наливайте себе пивка с орешками или чая с булочкой и сначала попробуйте решить сами, никуда не подглядывая. Потом пролайкайте самые вдумчивые из ответов.

#questions
👍246🔥2🐳2
На канале sysconf выложили первое сольное видео моей студентки и постоянной содокладчицы Анастасии Черниковой с детальным рассказом про llvm-exegesis и компиляторный бенчмаркинг.

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

00:00 Начало. RISC-V и LLVM
05:24 Компиляторный бенчмаркинг
09:14 Использование и возможности llvm-exegesis
18:03 История инструмента, его разнообразные применения и его путь в RISC-V
25:22 llvm-jit его устройство и использование: как отдельно так и внутри инструментов
29:56 Ответы на вопросы
35:00 Моё камео: ответ про соотношение llvm-mca и llvm-exegesis. Далее Настя продолжает отвечать сама.

Давайте поддержим Настю лайками и комментариями на youtube. У меня будет ещё несколько видео моих студентов с конференции sysconf, буду тут их анонсировать по мере выкладки.

P. S. И уже в эту субботу 2 августа мы с Владиком Беловым выступим на Zero Cost Conf, всех буду рад там увидеть.

#conference
👍9331🔥13💩3🐳3👎1😁1😱1🕊1🙉1
Сделали совместно с Владиславом Беловым очень важный доклад на C++ Zero Cost Conf про restrict и вообще алиасинг. Тема оказалась неожиданно глубокая и очень ёмкая для компиляторных оптимизаций. И конечно таящая в себе кучу подводных камней. Мне кажется получилось очень классно. Для Владика это первое публичное выступление, давайте накидаем на ютуб лайков и комментариев.

00:00 Начало. Компилятор хочет вам помочь
03:00 Strict aliasing в C++ и его реализация в компиляторах
08:00 Выберите свой язык: производительность или безопасность? Есть пять вариантов...
09:36 Там где нет механизмов, там вас ждут опасности
13:42 Появление Владислава. Язык C как язык "пятого типа" в связи с наличием restrict.
17:40 Пугающий restrict.
20:55 Рестрикт на пальцах.
27:25 Четыре простых вопроса для вашего размышления.
32:26 А почему этого нет в C++ кроме GNU extension? Я возвращаюсь на сцену и пугаю людей.
37:45 Развитие передовой мысли: обзор серьёзных попыток стандартизации restrict в C++.
41:30 Call for action и вопросы.

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

Предложение Владика в стандарт C: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3659.pdf

На этот раз немного ухудшился монтаж: много где я начинаю говорить, видно меня но не слайд о котором я говорю. Презентацию можно скачать отдельно: https://github.com/tilir/cpp-masters/releases/download/zerocost2023/aliasing.pdf

#conference
🔥78👍3210🍓3🙏1🤪1