group-telegram.com/cxx95/152
Last Update:
#jostik
Intro
Прошлой осенью на работе подарили брелок-"ремувку" с вышитыми логотипом компании и надписью "Born to win".
Посыл хороший - круто от рождения быть победителем в чем-то (например в беге или баскетболе).
Но этот предмет совсем не передает дух времени - ремувки это для путешествий, а сейчас они сильно затруднены, например маршрут Амстердам - Москва имеет две пересадки
Решил сделать что-то более актуальное - по приколу сделал патчи на липучке, эти услуги предлагают десятки контор
1. Вот они слева направо
2. За несколько лет наиграл 800+ часов в хойке, тут мод "Kaiserredux"
3. Образовываюсь во время долгих ребилдов всего репозитория
Обзор жостиков C++
Иногда прохожу собесы в другие HFT - чтобы узнать что спрашивают по
Потом наступает технический собес. Приятный техлид на том проводе предлагает перейти на "ты", и начать с короткого знакомства. Начинаем - я Евгений, мне 25, рост 192, <...>, люблю уравнения Максвелла, не люблю сырники. Какие планы на вечер? В планах провести собес.
- Напиши "single-producer single-consumer lock-free queue"
После этой простой задачи идет жесткое погружение в разные куски C++ - модель памяти, иерархия value category, особенности strict aliasing, чем хороши trivially-copyable в контейнерах и что там с лайфтаймами, и так далее.
Визави углубляется дальше, находятся вопросы которые заставляют реально думать...
- Для чего нужен std::hardware_destructive_interference_size?
- Расскажи какие ты знаешь протоколы когерентности кэшей в современных процессорах?
Наконец двухчасовая жесть закончена и мы прощаемся. Хотя формально вердикт скажет потом эйчарка, я понимаю что есть куда расти - а эта встреча была всего на один вечер. "Бро, тебе надо тренироваться"
Вот такие собесы надо проводить, а не "напиши бинпоиск" и "разверни список"
Часто в GDB трудно понять что за значение у объекта
В таком случае надо использовать pretty printers - это код на
В первую очередь такие есть для реализаций std - например для libcxx.
Потом свой принтер можно сделать для каждой крупной кодовой базы - пример для LLVM где куча своих контейнеров.
Сейчас для рабочей кодовой базы есть свой pretty-printer для вывода значений таких объектов наших классов:
(1) strong types
(2) fixed-point числа
(3) json-объекты
(4) даты
Недавно вышло видео с C++ Russia, где круто описано как можно сделать скриптовую систему
Там скриптовый язык либо (1) на лету компилится в объектник и используется; либо (2) компилится с основной прогой для большей оптимизации.
Из "налогов" - диспетчеризация вызова, по сути вызов виртуальной функции.
Эта система - для игровых движков, но думаю в других местах тоже было полезно.
Например, писать рисечерам торговые стратежки проще на скриптовом языке, потому что С++ не их домен
Читая один пропозал, увидел интересную идиому "Passkey", которую можно использовать как урезанный "friend class" (нарезает доступ по функциям).
Судя по гуглингу, вроде популярная вещь, но раньше нигде ее не видел.
Может пригодиться в кодовых базах, где овер9000 штук friend class
.
"elvis operator" это запись:
a ?: b
что равносильно:a ? a : b
Пригождается несколько раз в год
Это поддерживается основными компиляторами с
-Wnognu-conditional-omitted-operand
.