Библиотека C/C++ разработчика | cpp, boost, qt
19.2K subscribers
2.07K photos
67 videos
16 files
4.38K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17

#WXSSA
Download Telegram
📰 Свеженькое из мира C++

Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.

😎 Интересное:

Реферальный рекрутинг в IT — альтернативный способ устроиться на работу
Избавляемся от комментариев — способы очистки проекта от мёртвых комментариев
Язык Flame — новая надежда убить язык C++
std::expected — альтернатива std::optional возвращающая понятную ошибку
Словарь айтишника — немного сленга из мира IT

🔹📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#свежак
👍21
Современный C++ для встраиваемых систем

Доклад Рутвича Карканиса с CppCon — подробный разбор того, как использовать современный C++ в embedded-системах с ограниченными ресурсами: от базовой семантики до продвинутой оптимизации.

Ключевые моменты доклада:

• динамический vs статический полиморфизм — скрытая стоимость виртуальных функций и vtable в условиях жёстких ограничений памяти
• шаблоны, концепции C++20 и SFINAE — как перенести максимум работы на этап компиляции и получить нулевые накладные расходы в рантайме
• управление памятью, placement new, volatile и атомарные операции — инструменты, без которых невозможно написать надёжный код для микроконтроллеров

Основной фокус — практические паттерны и техники, которые позволяют писать чистый, безопасный и производительный C++ даже в условиях embedded, где нет ни кучи памяти, ни роскоши ОС.

📺 Доклад

📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#свежак
👍43👾2🥱1
Самый востребованный навык в ИТ в 2026-м — навык создания ИИ-агентов

Мы полностью переработали курс «Разработка AI-агентов» под реалии 2026 года. Никакой долгой теории — с самого начала пишем код. Обучать и делиться набитыми шишками будут эксперты-практики из Газпромбанка, Альфа-Банка и других бигтехов.

В программе:

— архитектура автономных систем с тестированием, ReAct-циклами и контролем токенов;
— практическая работа с актуальными фреймворками LangGraph, AutoGen, MCP и CrewAI;
— настройка продвинутого RAG для парсинга документов и точного поиска;
— внедрение решений с учётом действующего законодательства (152-ФЗ);
— дипломная работа, за основу которой можно взять свой рабочий проект или задачу, которую предложим мы.

Эксперты поделятся инсайтами из реального продакшна — тем, о чём вам никогда не расскажет ни одна нейросеть.

Запись первого открытого вебинара, на котором мы вместе с руководителем AI-направления в Альфа-Банке Полиной Полуниной пилили агента в прямом эфире.


Ах да, чуть не забыли! Дарим промокод AGENTSWEB на скидку 10 000 рублей и два курса сверху при покупке до 15 марта 🎁

Стать AI-инженером
😁21🥱1
🍪 std::mem_fn vs лямбда: что быстрее и почему это не то, что ты думаешь

С точки зрения assembly при включённой оптимизации (-O2) std::mem_fn и эквивалентная лямбда дают идентичный код. Оба являются callable с inline-дружественной структурой: компилятор видит конкретный тип и инлайнит вызов.

🍿 Разница появляется в контексте стирания типов. Если callable хранится в 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::function выполняет type erasure — heap-аллокацию для хранения callable (если он не влезает в Small Buffer Optimization, обычно ≤16 байт). Для mem_fn размер объекта — ровно размер pointer-to-member (8-16 байт), для лямбды без захвата — 1 байт. Оба влезают в SBO.

💡 Реальная разница — читаемость и семантика. std::mem_fn явно сигнализирует «это вызов метода». Лямбда гибче, но многословнее. В алгоритмах с однотипными вызовами mem_fn лаконичнее:

std::transform(v.begin(), v.end(), out.begin(), std::mem_fn(&Widget::value)); // vs лямбда


✏️ Используй mem_fn, когда хочешь выразить «вызов конкретного метода». Лямбду — когда нужна логика внутри.


📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🥱21🔥1
🚀 C++23 и дальше: насколько код может стать сладким

C++23 принёс ряд долгожданных улучшений. std::expected — альтернатива исключениям для обработки ошибок в функциональном стиле. std::print вместо printf и cout. Deducing this — явный доступ к *this в методах, открывающий новые паттерны.

На горизонте C++26: static reflection позволит исследовать типы во время компиляции с помощью обычного кода, без макросов. Это революционное изменение — сериализация, ORM, логирование смогут быть написаны на чистом C++ без кодогенерации.

Contracts — ещё одна ожидаемая фича: precondition, postcondition, assertion прямо в синтаксисе языка. Документация и проверка в одном месте, опционально проверяемая в runtime.

✏️ Какую фичу из планируемых в C++26 вы ждёте больше всего? И есть ли что-то, чего в языке, на ваш взгляд, всё ещё не хватает?


📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
5🥱3👍1
У «Библиотеки программиста» появился резервный канал в мессенджере MAX

Он нужен исключительно для связи с теми, кто не может следить за обновлениями здесь из-за трудностей с доступом. Поэтому, если вы видите это сообщение, распространите его среди жильцов вашего ЖЭКа.

Контент в MAX будет дублировать телеграмный — основной нашей площадкой был и остаётся Telegram. Надеемся, это временная мера.

Подписаться на «Библиотеку программиста» в MAX
1😁15😢7🌚5👍1🥱1
Кажется, мы окончательно перешли от игрушек к суровому AgentOps

Приглашаем на наш обновлённый курс по разработке ИИ-агентов. Никакой воды про «будущее нейросетей», только инженерный подход.

На курсе мы:

— пошагово строим готовые системы на 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++ разработчика

#свежак
😁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++ разработчика

#буст
😁2
🍬 Closure size и SBO: когда лямбда уходит в куч

Размер объекта-замыкания напрямую влияет на то, выделяется ли память в куче при хранении в 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 кода:

• std::move_only_function (C++23) — меньше overhead, нет копирования
• Ручной std::aligned_storage + placement new

❗️ SBO — деталь реализации стандартной библиотеки, не гарантированная стандартом. Для критичного кода измеряй, не предполагай. Конкретный порог зависит от libstdc++/libc++/MSVC STL.

📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64
👻 std::span в C++26: то, что должно было быть с самого начала

«Почему нельзя просто передать {1, 2, 3} в функцию?!» — знакомое чувство, когда компилятор смотрит на тебя с осуждением за какой-то список чисел.


💡 std::span появился в C++20 и сразу стал удобным инструментом — но с заметными шероховатостями. В C++26 их наконец-то зашлифовали.

Что изменилось:

span<const T> теперь понимает {1, 2, 3} без магии двойных скобок — просто работает
• добавили at() с проверкой границ, как у всех нормальных контейнеров. Да, его не было. Да, это странно
• CTAD стал умнее: если размер известен на этапе компиляции — он и выводится как статический, а не теряется в dynamic_extent

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

👉 Статья

📍Навигация:
ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#буст
1