С точки зрения assembly при включённой оптимизации (-O2)
std::mem_fn и эквивалентная лямбда дают идентичный код. Оба являются callable с inline-дружественной структурой: компилятор видит конкретный тип и инлайнит вызов.std::function<>:// Лямбда — захват this в замыкании
std::function<int(Foo&)> f1 = [](Foo& x) { return x.bar(); };
// mem_fn — хранит pointer-to-member
std::function<int(Foo&)> f2 = std::mem_fn(&Foo::bar);
std::mem_fn явно сигнализирует «это вызов метода». Лямбда гибче, но многословнее. В алгоритмах с однотипными вызовами mem_fn лаконичнее:std::transform(v.begin(), v.end(), out.begin(), std::mem_fn(&Widget::value)); // vs лямбда
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🥱2❤1🔥1
🚀 C++23 и дальше: насколько код может стать сладким
На горизонте
✏️ Какую фичу из планируемых в C++26 вы ждёте больше всего? И есть ли что-то, чего в языке, на ваш взгляд, всё ещё не хватает?
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
C++23 принёс ряд долгожданных улучшений. std::expected — альтернатива исключениям для обработки ошибок в функциональном стиле. std::print вместо printf и cout. Deducing this — явный доступ к *this в методах, открывающий новые паттерны.На горизонте
C++26: static reflection позволит исследовать типы во время компиляции с помощью обычного кода, без макросов. Это революционное изменение — сериализация, ORM, логирование смогут быть написаны на чистом C++ без кодогенерации.Contracts — ещё одна ожидаемая фича: precondition, postcondition, assertion прямо в синтаксисе языка. Документация и проверка в одном месте, опционально проверяемая в runtime.📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🥱3👍1
У «Библиотеки программиста» появился резервный канал в мессенджере MAX
Он нужен исключительно для связи с теми, кто не может следить за обновлениями здесь из-за трудностей с доступом. Поэтому, если вы видите это сообщение, распространите его среди жильцов вашего ЖЭКа.
Контент в MAX будет дублировать телеграмный — основной нашей площадкой был и остаётся Telegram. Надеемся, это временная мера.
→ Подписаться на «Библиотеку программиста» в MAX
Он нужен исключительно для связи с теми, кто не может следить за обновлениями здесь из-за трудностей с доступом. Поэтому, если вы видите это сообщение, распространите его среди жильцов вашего ЖЭКа.
Контент в MAX будет дублировать телеграмный — основной нашей площадкой был и остаётся Telegram. Надеемся, это временная мера.
→ Подписаться на «Библиотеку программиста» в MAX
1😁15😢7🌚5👍1🥱1
Кажется, мы окончательно перешли от игрушек к суровому AgentOps
Приглашаем на наш обновлённый курс по разработке ИИ-агентов. Никакой воды про «будущее нейросетей», только инженерный подход.
На курсе мы:
— пошагово строим готовые системы на
— настраиваем кэширование и роутинг, чтобы бот не сожрал токены;
— разбираемся со стейтом, учимся дебажить через time-travel и прикручиваем human-in-the-loop;
— выводим RAG в прод так, чтобы безопасники не завернули архитектуру из-за 152-ФЗ.
В пекло скучные лекции про общую инфраструктуру — сразу фокусируемся на агентных фреймворках и написании кода. Занятия ведут бывалые лиды из Газпромбанка и Альфы, набившие шишки на реальных задачах.
Сегодня последний день, когда можно забрать курс по старым ценам. Базовый тариф сейчас стоит 49 000 ₽ (вместо 62 990 ₽), продвинутый трек — 99 000 ₽ (вместо 124 990 ₽). Если не хочется отдавать всю сумму сразу, есть рассрочка. Торопитесь — на потоке осталось всего 5 мест!
→ Зафиксировать цену и перейти к сборке своих агентов
Приглашаем на наш обновлённый курс по разработке ИИ-агентов. Никакой воды про «будущее нейросетей», только инженерный подход.
На курсе мы:
— пошагово строим готовые системы на
LangGraph, CrewAI и MCP;— настраиваем кэширование и роутинг, чтобы бот не сожрал токены;
— разбираемся со стейтом, учимся дебажить через time-travel и прикручиваем human-in-the-loop;
— выводим RAG в прод так, чтобы безопасники не завернули архитектуру из-за 152-ФЗ.
В пекло скучные лекции про общую инфраструктуру — сразу фокусируемся на агентных фреймворках и написании кода. Занятия ведут бывалые лиды из Газпромбанка и Альфы, набившие шишки на реальных задачах.
Кстати, на днях мы пилили агента в прямом эфире, если пропустили — есть запись вебинара.
Сегодня последний день, когда можно забрать курс по старым ценам. Базовый тариф сейчас стоит 49 000 ₽ (вместо 62 990 ₽), продвинутый трек — 99 000 ₽ (вместо 124 990 ₽). Если не хочется отдавать всю сумму сразу, есть рассрочка. Торопитесь — на потоке осталось всего 5 мест!
→ Зафиксировать цену и перейти к сборке своих агентов
😁2
🤠 Почему опытным PM, PO и руководителям тоже нужен менторинг
Когда карьера уже сложилась, расти становится сложнее: привычные способы
развития перестают работать. Делюсь опытом менторства и наблюдениями о
том, как менторинг помогает PM, PO и руководителям пересобирать свои
управленческие решения.
👀 Читать дальше
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
Когда карьера уже сложилась, расти становится сложнее: привычные способы
развития перестают работать. Делюсь опытом менторства и наблюдениями о
том, как менторинг помогает PM, PO и руководителям пересобирать свои
управленческие решения.
👀 Читать дальше
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
😁2
😎 Топ-вакансий для C++ разработчиков за неделю
Senior C/C++ Developer — от 280 000 ₽ Офис (Санкт-Петербург)
C/C++ developer — от 200 000 ₽ Удалёнка/гибрид (Москва)
Embedded C/C++ Developer (Middle) — от 250 000 и до 350 000 ₽ Офис (Москва)
✍️ Еще больше топовых вакансий — в нашем канале C++ jobs
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
Senior C/C++ Developer — от 280 000 ₽ Офис (Санкт-Петербург)
C/C++ developer — от 200 000 ₽ Удалёнка/гибрид (Москва)
Embedded C/C++ Developer (Middle) — от 250 000 и до 350 000 ₽ Офис (Москва)
✍️ Еще больше топовых вакансий — в нашем канале C++ jobs
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
😁2
Размер объекта-замыкания напрямую влияет на то, выделяется ли память в куче при хранении в std::function. Понимание
Small Buffer Optimization критично для low-latency кода.⚡️
std::function содержит внутренний буфер (обычно 16–32 байта в зависимости от реализации). Если closure влезает — heap allocation не происходит:// sizeof closure = sizeof(int) = 4 байта → SBO
auto f1 = [x = 42]() { return x; };
std::function<int()> sf1 = f1; // нет heap allocation
// sizeof closure = 3 * sizeof(string) → возможно > SBO
std::string s1, s2, s3;
auto f2 = [s1, s2, s3]() { return s1 + s2 + s3; };
std::function<int()> sf2 = f2; // возможно heap allocation
🔍 Практическое правило: захватываешь больше 3-х примитивных значений — жди heap allocation. std::string, вектор, любой объект с указателем внутри — почти гарантия.
⚠️ Решения для latency-sensitive кода:
• s
td::move_only_function (C++23) — меньше overhead, нет копирования• Ручной
std::aligned_storage + placement newSBO — деталь реализации стандартной библиотеки, не гарантированная стандартом. Для критичного кода измеряй, не предполагай. Конкретный порог зависит от libstdc++/libc++/MSVC STL.📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤5
👻 std::span в C++26: то, что должно было быть с самого начала
💡
❗ Что изменилось:
•
• добавили
• CTAD стал умнее: если размер известен на этапе компиляции — он и выводится как статический, а не теряется в
Ни одно из этих изменений не перевернёт ваш код с ног на голову. Но именно такие правки превращают «почти удобный» инструмент в тот, которым приятно пользоваться каждый день.
👉 Статья
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
«Почему нельзя просто передать {1, 2, 3} в функцию?!» — знакомое чувство, когда компилятор смотрит на тебя с осуждением за какой-то список чисел.💡
std::span появился в C++20 и сразу стал удобным инструментом — но с заметными шероховатостями. В C++26 их наконец-то зашлифовали.❗ Что изменилось:
•
span<const T> теперь понимает {1, 2, 3} без магии двойных скобок — просто работает• добавили
at() с проверкой границ, как у всех нормальных контейнеров. Да, его не было. Да, это странно• CTAD стал умнее: если размер известен на этапе компиляции — он и выводится как статический, а не теряется в
dynamic_extentНи одно из этих изменений не перевернёт ваш код с ног на голову. Но именно такие правки превращают «почти удобный» инструмент в тот, которым приятно пользоваться каждый день.
👉 Статья
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
❤3👍2
Большинство разработчиков знают, что локальные переменные живут на стеке. Но мало кто задумывается: что значит «выделить память на стеке»? Спойлер — никакого malloc там нет.
🔍 Механизм
Стек — это непрерывный блок памяти, закреплённый за потоком при его запуске (обычно 1–8 МБ). Управление им сводится к одному регистру —
rsp (stack pointer). При входе в функцию компилятор заранее вычисляет суммарный размер всех локальных переменных и генерирует одну инструкцию:sub rsp, 48 ; "выделить" место под все локалы сразу
; 48 - смещение в байтах, на которое
; нужно сдвинуть указатель, чтобы
; выделить память под переменные
Никакого поиска свободного блока. Никакого обращения к ОС. Одна арифметическая операция над регистром.
⚡️ При выходе из функции
add rsp, 48 ; "освободить" — снова одна инструкция
Данные никуда не деваются физически — они просто становятся «за пределами» стека. Следующий вызов функции затрёт их своими данными.
Аллокация на стеке — это
O(1) по времени и нулевые накладные расходы на освобождение. Именно поэтому int x = 5; внутри функции принципиально дешевле new int(5) — разница не в синтаксисе, а в том, какой механизм памяти задействован.📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
Почитали тут свежий отчёт по рынку ИИ-ускорителей в РФ: оказывается, 54% компаний тормозят внедрение ИИ исключительно из-за конских цен на инфраструктуру.
Ну, то есть написать пет-проект с вызовом API это задача на вечер, а вот запустить агента в продакшн так, чтобы он не сжёг бюджет отдела за неделю — суровая инженерия.
По сути, сейчас мало уметь собирать RAG. Нужно считать токены, настраивать
Также в программе:
— оценка качества, трейсинг и защита от деградации пайплайнов;
— мультиагентные паттерны и интеграция по протоколу
— локальный деплой Open Source под 152-ФЗ (когда данные нельзя выносить наружу).
Кажется, это единственный адекватный roadmap по переходу от блокнотов к enterprise-решениям.
Прямо сейчас можно урвать курс с увесистой скидкой(49 000 ₽ 62 990 ₽ за базовый тариф и 99 000 ₽ 124 990 ₽ за продвинутый трек) , но стоит поторопиться — на потоке осталось всего 5 мест.
👉 Зафиксировать цену и начать собирать агентов, за которых не стыдно в проде
Ну, то есть написать пет-проект с вызовом API это задача на вечер, а вот запустить агента в продакшн так, чтобы он не сжёг бюджет отдела за неделю — суровая инженерия.
По сути, сейчас мало уметь собирать RAG. Нужно считать токены, настраивать
time-travel дебаг в LangGraph и уметь роутить запросы на лету. Всё это мы учли в обновлённом курсе по разработке AI-агентов, где акцент сделан именно на AgentOps и жёсткий контроль ресурсов.Также в программе:
— оценка качества, трейсинг и защита от деградации пайплайнов;
— мультиагентные паттерны и интеграция по протоколу
MCP;— локальный деплой Open Source под 152-ФЗ (когда данные нельзя выносить наружу).
Кажется, это единственный адекватный roadmap по переходу от блокнотов к enterprise-решениям.
Прямо сейчас можно урвать курс с увесистой скидкой
👉 Зафиксировать цену и начать собирать агентов, за которых не стыдно в проде