C++ and other lectures
7.98K subscribers
35 photos
2 files
199 links
Учебный канал в Телеграм: тут будут анонсы и ссылки на лекции и стримы. Написать автору: @Tilir
Download Telegram
Официальный пост для развёрнутых отзывов к книге "Оптимизирующие компиляторы, структура и алгоритмы".

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

https://www.litres.ru/book/konstantin-vladimirov/optimiziruuschie-kompilyatory-struktura-i-algoritmy-71185981/

И на курс к ней: https://www.youtube.com/playlist?list=PL3BR09unfgcjBG1H9xRUesaQX6nCsobs1

Отзывы не модерируются, комментарии к этому посту могут быть сколь угодно агрессивными и нелицеприятными (в обоих смыслах этого слова). Я буду тереть только откровенный спам и флуд либо оффтопик.

Не постите сюда конкретные баги, пост с errata будет следующим. Этот пост -- чисто поделиться впечатлениями.

#official #compilers
Официальный пост для errata к книге "Оптимизирующие компиляторы, структура и алгоритмы".

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

https://www.litres.ru/book/konstantin-vladimirov/optimiziruuschie-kompilyatory-struktura-i-algoritmy-71185981/

И на курс к ней: https://www.youtube.com/playlist?list=PL3BR09unfgcjBG1H9xRUesaQX6nCsobs1

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

#official #compilers
Всем привет. Немного апдейтов по текущим моментам.

В пятницу 28-го февраля выступаю в Новосибирске на студенческом дне SnowOne, рассказываю про странные ограничения статических компиляторов.

https://snowone.ru/talks/aa356d242b8844af918d2da3a0d69629/

В субботу 1 марта в Новосибирске встреча с читателями в 16-00 в магазине "Книжный бункер", всех жду.

Кроме того приближается конференция C++ Russia где мне дали завершающий персональный слот для доклада про модули в C++. Получится так, что конференцию откроет Полухин и закрою я. Тоже очень приятно и программа тоже уже доступна https://cppconf.ru/talks/c04f2494ed2440619fcb6e9d7029f903

И разумеется sysconf: там слот не такой топовый но тоже отличный https://sysconf.pro/talks/d56e0032e52e4221a8e1fa3398e89477

Поступают вопросы почему меня нет в списке участников круглого стола по преподаванию компиляторов. Очень просто: потому что для C++Russia я считаю эту тему неподходящей, не относящейся к C++. Я с удовольствием поучаствовал бы в таком круглом столе на sysconf или любой другой конференции общего плана.

Поступают также вопросы не выдали ли мне что-то вроде промокода на билеты на C++Russia или sysconf с отличной скидкой. Конечно выдали. Детали в лс.

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

Про встречу с читателями 15 марта в Минске напишу позже. Она будет, но там неожиданные приключения с местом проведения, вопрос решается.

Всех буду рад везде увидеть.

#official #conference
Вернулся из Новосибирска.

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

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

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

Небольшие путевые заметки, коротко.

1. Очень хороший уровень аудитории, вопросы интересные и жизненные. И на студенческом дне SnowOne и на встрече с читателями мне очень понравились люди. В них видно и достаточное стремление к знанию и неплохая базовая подготовка.

2. Новосибирск оказался прекрасным городом. Конференция была в академгородке, он на меня впечатления не произвёл. А вот встреча с читателями была уже в самом городе и я потом использовал все возможности чтобы максимально по нему погулять. Даже перешёл в полночь Обь по мосту (в хорошей компании разумеется). Масштаб Новосибирска это даже не Нижний (чего я ожидал), это что-то вроде Москвы: широкие проспекты, соразмерные основательные здания, выстроенные по канонам классицизма, обилие интересных мест. Умилили ностальгические ларьки а-ля девяностые, в том числе в переходах. Мне теперь хочется как-нибудь приехать на недельку-другую, может быть лучше летом.

3. Настоящая зима это замечательно. Возврат к Московской слякоти от честных -12 и похрустывающего снежка, как-то печален. Я вообще люблю Москву, но мы здесь стали забывать какой бывает зима. Ничего, я думаю в марте ещё вспомним, он только начался.

Хочется поблагодарить организаторов SnowOne за такую прекрасную возможность повидать Сибирь и за подаренные мне валенки. Также хочется поблагодарить дирекцию магазина Книжный Бункер. Очень милые и приятные люди, сделали всё чтобы моя встреча с читателями прошла идеально. Впереди Минск, детали распишу позднее.

#conference
И снова время пятничного зачила. Наливайте пивка, открывайте последний драфт стандарта C++23 (N4950) и поехали.

Рассмотрим вот такой пример, обозначим его [1].

class X {
template <typename U> struct Hidden {};
};

template <typename T>
using Wrapper = typename X::template Hidden<T>;

int main() {
Wrapper<float> w;
}


https://godbolt.org/z/sMnec5nx4

В нём clang и gcc почему-то не выдают ошибок, хотя имя является скрытым. Тут хочется воскликнуть — ну наверное по стандарту открытость using зависит от него а не от того что он алиасит. Не торопитесь, читайте дальше.

Уберём шаблоны и получим пример [2].

class X {
struct Hidden {};
};

using Wrapper = typename X::Hidden;

int main() {
Wrapper w;
}


https://godbolt.org/z/q9TYMeaYo

Вроде он мало чем отличается, тоже using, но тут оба компилятора отказываются компилировать.

Теперь пойдём от [1] в другом направлении: заменим using на struct и получим пример [3].

class X {
template <typename U> struct Hidden {};
};

template <typename T>
struct Wrapper : X::template Hidden<T> {};

int main() {
Wrapper<int> w;
}


https://godbolt.org/z/Gs1s3z8qn

Оба компилятора отказываются компилировать. То есть using всё-таки важен? Ситуация становится интересней.

И теперь сделаем последний шаг: запишем пример [3], но не будем инстанцировать шаблон (т.е. уберём функцию main) и получим пример [4].

https://godbolt.org/z/9EM1avbxe

И внезапно тут мнения компиляторов расходятся. Clang выдаёт ошибку, тогда как gcc отлично компилирует.

Вопросы:
1. Обоснуйте с точки зрения стандарта чем отличается [1] от [2]
2. Обоснуйте с точки зрения стандарта чем отличается [1] от [3]
3. Обоснуйте с точки зрения стандарта какой из компиляторов прав в [4]?

Ответы кидайте в комментарии к посту. Ссылки на нормативные документы обязательны.

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

#questions
Для всех любителей открытой и расширяемой архитектуры RISC-V.

В пятницу 14 марта пройдёт очередной RISC-V & YADRO митап, посвящённый экосистеме ПО для RISC-V. Участие бесплатное, но надо зарегистрироваться по ссылке. Количество мест в оффлайн ограничено, там бесплатно покормят и можно будет пообщаться. Нормальный такой пятничный вечерочек.

Я там буду сидеть экспертом на каком-то обсуждении в конце. Ну а уже в субботу я буду в Минске, о чём тоже будет пост вскоре.

#official #riscv #conference
Продолжаем тему встреч с читателями -- и на этот раз пришло время приключений.

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

Четвёртую встречу мне очень хотелось провести в Минске. Во-первых, я там никогда не был. Во-вторых, именно оттуда приходило много запросов. Я наметил поездку на 15–16 марта. И тут началось.

1. Книжные магазины

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

2. Университет

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

Проректор оказался приятным человеком и очень хотел помочь, но на уровне ректората встречу запретили. Причина: университет не может пустить так много посторонних, даже если заранее собрать паспортные данные.

Отступление. В принципе, оформление пропусков в кампус -- несложная процедура, я это знаю как преподаватель МФТИ. Тем более, что схема была абсолютно win-win: суббота, занятий нет, аудитории пустые. Студенты БГУИР -- моя целевая аудитория, и им бы наверняка было интересно. Но логика "как бы чего не вышло" оказалась сильнее. Можно было сделать что-то интересное, но не сделаем ничего.

3. Книжная ярмарка

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

Что дальше?

На этом этапе я почувствовал себя в Москве времён так называемого ковида, когда в университет и в офис меня не пускали. Что я делал? Я проводил семинары в коворкингах.

Так что я попробую найти подходящий коворкинг и позвать всех туда в субботу, 15-го марта или в воскресенье 16-го. Где именно и во сколько -- напишу на этой неделе.

Если же и этот вариант не сработает, придётся отменять поездку. Надеюсь, что этого не случится.

#author_event
Наконец-то выложили один доклад на C++Russia прошлого года, который я хотел бы всем порекомендовать.

Увы, на конференции в прошлом году было очень много шлака, не имеющего даже отношения к C++. И тем ценнее увидеть очень серьёзный и интересный доклад, в целом мирового уровня. Тем более от столь молодого спикера.

Итак, встречаем:

Сергей Добычин — constexpr-аллокатор для контейнеров стандартной библиотеки

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

2:55 Начало. Transient выделения памяти при компиляции. Невозможность non-transient в C++
8:45 Подробный разбор предложения P0639 по CE аллокатору
11:30 Проблемы с размером буфера
18:16 Двухэтапное определения размера буфера во время компиляции
20:40 Постановка задачи: как сделать чтобы CE аллокатор сам определял размер буфера? Общий вид решения.
23:13 Интересные детали реализации
27:45 Передача инициализирующего значения через типы (разбор P2781)
31:20 Завершение: QR код на полное решение в C++20 и примеры
34:08 Вопросы

Интересно в этом докладе также то, что я немного помог в его создании. До конференции Сергей обратился ко мне вот с таким кодом и спросил баг ли это в компиляторе.

https://godbolt.org/z/EcKhhGfzr

Я немного подумал и мы с ним вместе доминимизировали это до вот такого кейса.

https://godbolt.org/z/69PEPojzo

Тут проблема стала очевидной и стало очевидным, что она и впрямь в компиляторе.

После этого я зафайлил эту проблему в GCC и она до сих пор висит там и ждёт своего героя.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115233

Но пока не дождалась.

#talks
Продолжаем встречи с читателями. Если вы не знали, я могу не только приехать к вам в город но и (если концентрация читателей в компании велика) придти к вам в офис. И первыми кто меня позвали были ребята из VK. Приём был прекрасным, люди не просто заказали моих книг на всех, они ещё отпечатали глянцевые фотки меня для автографов на обратной стороне тем, кому книг не хватило. Получилось очень мило.

Встреча состояла из двух частей. Сначала общались вживую не под запись, а потом со мной записали подкаст. Изначально это планировалось как подкаст для сотрудников VK, но сейчас подкаст стал доступным по ссылке и конечно мне хочется поделиться им с моими читателями.

https://vk.com/audio-227738875_456239017_ed542bafbed1461fbe

Обсудили обычные вопросы: как я пришёл к программированию, что делают на работе разработчики компиляторов и всё остальное.

P. S. Кстати встреча в Минске в субботу 15-го в 12 часов. Кажется это уже сегодня и я уже еду в Минск. Всех буду ждать ))

#author_event
Провели встречу в Минске.

На встречу записалось 56 человек см. https://t.me/cpp_lects_rus/245

Пришло человек пятнадцать. Я прикреплю фотку в первом комментарии. Это худшая конверсия из записавшихся в пришедших по всем городам. Обычно что-то вроде 60-70%, а тут меньше трети.

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

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

Тем не менее, встреча прошла прекрасно и была исключительно ламповой, отличная дискуссия с разными интересными отклонениями, мне очень понравилось. Впрочем, если бы вас было больше, мне бы ещё больше понравилось. Но тем более спасибо тем, кто всё-таки пришёл.

На очереди Ростов, Нижний Новгород и Екатеринбург, следите за апдейтами. Кроме того меня приглашают выступить в "Школе 21" в Великом Новгороде, тоже внесу это в планы. Надеюсь там всё будет как в Питере и Новосибе. А не как в Минске ))

P. S. Завёл новый тег для встреч с читателями и информации по ним.

#author_event
Выступил на Sysconf и на C++Russia этого года.

https://cppconf.ru/schedule/table/
https://sysconf.pro/schedule/table/

Выступление на C++Russia получилось потрясающим: у меня был забитый до отказа зал и я уже получил на него массу отличных отзывов. На Sysconf тоже неплохо. Теперь ждём пока видео станут публично доступны, я здесь сообщу.

Немного пост-конференционных соображений.

1. Хотелось бы всем рассказать о прекрасной инициативе, о которой я узнал от Михаила Лукина (но как я понимаю там много людей участвует): Friendly Journal of Software Systems

https://systems-journal.github.io

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

Статьи туда уже в принципе можно потихоньку готовить и подавать.

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

2. В своём докладе я приводил примеры в godbolt с модулями и целыми проектами и обещал кому-то дать ссылку на моём канале, чтобы быстро начать эксперименты.

Предлагаю к размышлению вот этот кейс: https://godbolt.org/z/zsKn5hjWG

Он несколько отличается от представленного на конференции. Я тут разметил пару интересных мест, чтобы обратить внимание на некоторые проблемы с достижимостью, которые не успел включить в доклад.

3. На Sysconf я выступил с неким lightning talk не под запись. Его текстовый материал пойдёт в ближайший пятничный зачил.

#conference
Пятница, вечер, время почитать стандарт. Увертюра в четырёх актах.

1. Рассмотрим следующий пример. Тут компилятор считает запятую разделителем для макроса, а не для шаблона.

https://godbolt.org/z/s7s453v1o

Что делать? Очевидно поставить скобки:

2. https://godbolt.org/z/86Wj5nh4Y

Стало лучше, но всё ещё можно сломать. Как сломать? С помощью фигурных скобок и фантазии:

3. https://godbolt.org/z/v3qnf519v

Как починить?

После некоторой игры с компилятором я нашёл решение работающее на обоих основных компиляторах (я верю вы его тоже легко найдёте).

4. https://godbolt.org/z/1919eKvnr

Предлагается обосновать по стандарту почему это работает.

#questions
Небольшое развлечение с микроволновками на выходных.

Берём любую русскую пословицу, я например выбрал такую "курочка по зёрнышку клюёт, а весь двор в говне".

Просим нейронку перевести это на английский с несколькими ограничениями:

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

2. На выходе это должна быть именно пословица, то есть нечто в свою очередь идиоматическое со всякими курочками, рыбками, которых трудно вытащить из пруда и прочими оленями.

3. Должен быть элемент технарского юмора в области компьютерных наук.

Получившиеся поговорки можно попросить сделать картинкой с подписью и запостить в комментарии.

Призов, кроме зрительских симпатий, не обещаю ))

#llm
Всем привет. Небольшое, но важное объявление.

Yadro открывает регистрацию на летнюю программу Yadro Импульс. Среди направлений и C и C++ и даже немного компиляторы и тулчейны, всё как мы любим. Набирают сотни человек. Стажировка два месяца -- июль и август, неплохо оплачивается. Рассчитана, конечно, на студентов, там написаны ограничения на сайте.

Подробности и запись: https://edu.yadro.com/impulse

#official
Прочитал в ННГУ гостевую лекцию по инструментам разработки. Жаль меня так редко зовут в университеты и огромное спасибо кафедре высокопроизводительных вычислений и системного программирования и институту информационных технологий математики и механики (почему-то факультеты в ННГУ называют институтами) и лично Иосифу Борисовичу Меерову за приглашение и организацию.

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

Когда выложат запись обязательно дам ссылку на этом канале.

Завтра встреча с читателями и надеюсь придут все кто записался в таймпад.

Из университетов следующий iSpring в Йошкар-Оле 17 мая. Там тоже анонс должен появиться и скоро я тут напишу детали.

Ну и на следующей неделе встреча с читателями в Ростове На Дону, обязательно приходите, анонс был чуть выше ))

#official #author_event
Провёл встречу с читателями в Нижнем Новгороде.

Проговорили более двух с половиной часов. Записи не было, так что беседа шла с полностью открытыми интеллектуальными шлюзами. Обсудили не только такие неизбежные темы как мои творческие планы и ML в компиляторах, но и более сложные темы, например состояние гуманитарной науки и мультфильм my little pony. Подписал много книжек. Впервые на встрече был десятиклассник уже читающий мою книгу, что, конечно, вау.

Спасибо всем кто пришёл.

P. S. до встречи зашёл в кафе "Гуси" где меня узнала девушка бариста и сказала что тоже смотрит мои лекции. Это было ещё более вау. Я прямо почувствовал, что в Нижнем меня особенно любят. Очень это ценю.

Спасибо книжному магазину Дирижабль на Большой Покровке за организацию.

#author_event