пятница, 14 апреля 2023 г.

[life] История с ежедневным прослушиванием "Плейлист Дня" на Яндекс.Музыке завершилась самым унылым образом

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

Добрался я где-то до 936. Было это на прошлой неделе. А на этой неделе попробовал глянуть на очередное значение и ничего уже не увидел.

В общем, на 1000 так и не удалось посмотреть.

среда, 12 апреля 2023 г.

[prog.c++] На RSDN засветили одну из задачек с собеседования в Тинькофф

Вот в этой теме: Как удаляется vptr?

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

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

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

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

Без этого понимания сложно будет объяснить какой именно из print-ов будет вызван и почему.

Добавлю, что меня собеседовал один человек и вопросов о том "утечет ли vptr" или "что будет с виртуальным указателем" (чтобы не подразумевалось на RSDN под этим термином) не было. И интервьюер, и само собеседование мне лично показались более чем адекватными. Так что негатив, который в обсуждении на RSDN был высказан, я не понимаю и не разделяю.

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

понедельник, 10 апреля 2023 г.

[prog.c++] В склерозник: ссылки на статьи об Undefined Behavior в C++ и C

Ради интереса немного освежил тему UB в C++ (и C заодно) и решил зафиксировать в блоге несколько ссылок, которые показались интересными/полезными. Дабы было проще затем найти.

Если хочется плотно погрузиться в данную тему, то вот этого, думаю, будет достаточно с лихвой: Ружье достаточной огневой мощи, чтобы на нем повеситься. Путеводитель C++ программиста по неопределенному поведению.

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

Falsehoods programmers believe about undefined behavior. Статья специально для тех, кто думает, что раз у меня сейчас все работает, то все нормально ;)

What Every C Programmer Should Know About Undefined Behavior #1/3 с продолжениями: часть два, часть три. Как по мне, так обязательно к прочтению.

Why undefined behavior may call a never-called function. Разбор нашумевшего несколько лет назад примера, когда clang очень уж хитро поступил с вызовом функции по нулевому указателю.

Undefined behavior can result in time travel (among other things, but time travel is the funkiest). Рассказ о том, до чего может дойти компилятор в эксплуатации UB.

Security flaws caused by compiler optimizations. Несколько простых примеров того, как оптимизатор может выбросить куски кода, важные с точки зрения безопасности/секретности.

Towards Optimization-Safe Systems: Analyzing the Impact of Undefined Behavior. PDF-ка от исследователей от MIT (краткое резюме о результатах этого исследования на русском можно прочитать на opennet.ru).

Если кто-то из читатей знает статьи/посты на тему UB, которые заслуживают включения в данный список, то делитесь ссылками в комментариях.