Библиотека C/C++ разработчика | cpp, boost, qt

Библиотека C/C++ разработчика | cpp, boost, qt

@cppproglib

Все самое полезное для плюсовика и сишника в одном канале.Как запустить своего ии-агента: https://clc.to/tvpmDQПо рекламе: @proglib_advДля обратной связи: @proglibrary_feeedback_botРКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17#WXSSA

17 132подписчиков
Ежедневно🇷🇺

Похожие каналы

Все →

Последние посты

Библиотека C/C++ разработчика | cpp, boost, qt — пост в ТГ канале

🤖 Запускаем новый курс: «Spec-Driven Development»!Всем надоело, что ИИ-агенты (Cursor, Claude) генерируют сотни строк хаотичного кода, который приходится переписывать. Дело не в нейросети, а в том, что вы заставляете её угадывать условия задачи.На курсе вы освоите методологию SDD (Spec-Driven Development) — управление ИИ через спецификации (спеки) и тесты вместо «вайб-кодинга».Как это работает?До генерации кода вы фиксируете в спеке контракты, инварианты и граничные случаи. Документ четко определяет ЧТО делать, сводя лотерею в PR к нулю.За 8 недель с экспертами из BigTech вы:🔹 Встроите ИИ в личный или командный workflow.🔹 Превратите генерацию кода в предсказуемый инженерный процесс.🔹 Перестанете перепроверять за моделями каждую строчку.📖 Полный разбор методологии с примерами и готовый промпт для генерации спеки — в нашей статье👉 Освоить SDD и ускорить разработку

26 июн. 2026 г.1 040В Telegram

🍔 std::function — больше не дефолт. Знакомьтесь, std::copyable_function (C++26)Если в новом коде ты по привычке тянешься к std::function — в C++26 для большинства случаев есть вариант лучше.std::function живёт с C++11, но у него два врождённых дефекта. Первый — он раздувает бинарь. Второй, более коварный — дефект const-корректности: operator() помечен const, но при этом спокойно вызывает не-const operator() хранимого объекта. Починить нельзя — сломается ABI.std::copyable_function — то, чем std::function должен был быть с самого начала: копируемый, const-корректный, поддерживает весь набор квалификаторов (const, noexcept, &/&&).#include <functional>// const здесь означает const на самом делеstd::copyable_function<int() const> f = [x = 42] { return x; };int y = f(); // 42// std::copyable_function<int() const> bad = [x=42]() mutable {...}; // ❌ mutable не пройдётstd::copyable_function<void()> g; // пустой// g(); // ⚠️ UB, а НЕ bad_function_call‼️ Важный нюанс: вызов пустого copyable_function — это UB, а не исключение. Сделано осознанно, ради консистентности с остальной библиотекой.⚠️ Не выкидывай std::function бездумно:• у copyable_function нет target() / target_type() — никакой RTTI-интроспекции• пустой вызов → UB вместо bad_function_call: ловившие исключение сломаются молча• для стабильного ABI существующих интерфейсов std::function по-прежнему уместен📍Навигация: Вакансии • Задачи • СобесыБиблиотека C/C++ разработчика#под_капотом

25 июн. 2026 г.1 270В Telegram

😋 Когда на собеседовании меня просят показать какую многозадачность я имел в виду в своём резюме.📍Навигация: Вакансии • Задачи • СобесыБиблиотека C/C++ разработчика#развлекалово

25 июн. 2026 г.1 340В Telegram
Библиотека C/C++ разработчика | cpp, boost, qt — пост в ТГ канале

👀 Умеете строить предсказуемую архитектуру с ИИ? Станьте спикером Proglib academyМы в Proglib.academy запускаем курс по Spec-Driven Development (SDD) — учим разработчиков управлять ИИ-агентами (Cursor, Copilot, Claude) через спецификации, контекст и тесты, чтобы не перепроверять за нейросетью каждую строку.Для этого курса мы ищем классных спикеров-практиков.➡️ Что требуется от вас?● BigTech бэкграунд: опыт работы разработчиком, тимлидом или архитектором в крупных технологических компаниях.● Опыт управляемой разработки с ИИ: вы на практике знаете, как встроить AI-инструменты в личный или командный workflow (от постановки задачи до ревью AI-кода).● Системный подход: умение превращать хаотичную генерацию кода в предсказуемый инженерный процесс (работа с архитектурой, чек-листами, легаси и покрытием тестами).➡️ Что мы предлагаем?● Достойную оплату за подготовку материалов и проведение занятий.● Мощное продвижение личного бренда через медиаресурсы Proglib (наша аудитория — 1 млн+ айтишников).● Возможность публиковать свои экспертные материалы и статьи на наших площадках.● Доступ к сильному и закрытому профессиональному сообществу.Также мы ищем консультанта программы. Если вы практикующий эксперт и готовы помочь нам отвалидировать программу курса, дать рекомендации по актуальности тем и финальным результатам обучения — мы вас очень ждем.➡️ Как с нами связаться:Telegram: @alinaa_khE-mail: alina@proglib.io

25 июн. 2026 г.1 320В Telegram

🪬 C++ Ranges: ЗаметкиСоберём посты про C++ диапазоны в один пост 😎Часть 1. Основы• Основы • Views и алгоритмы• Конвейеры: оператор |• Ленивые вычисления (C++20)• Требования к диапазонамЧасть 2: Адаптеры представлений • std::views::filter — ленивая фильтрация• std::views::transform — ленивые преобразования• views::take и views::drop — срезы• Разбиение диапазонов: views::split, chunk, chunk_by• Генераторы: views::iota и views::repeat• Комбинаторы: views::zip и views::enumerate• Вложенные диапазоны: views::join и views::join_with• Ranges: другие полезные адаптерыЧасть 3: Алгоритмы диапазонов • Алгоритмы поиска• Алгоритмы сортировки• Алгоритмы модификации• Свёртки (fold)Часть 4: Проекции • Что такое проекция?• Проекции на поля структур📍Навигация: Вакансии • Задачи • СобесыБиблиотека C/C++ разработчика#свежак

24 июн. 2026 г.1 390В Telegram

🐸 Подборка вакансий для C++-разработчиков за неделюC++ Developer — Офис (Санкт-Петербург)Программист С++ — Офис (Москва)C++ RTOS (Networking) Developer — Удалённо📍Навигация: Вакансии • Задачи • СобесыБиблиотека C/C++ разработчика#вакансии

24 июн. 2026 г.1 460В Telegram
Библиотека C/C++ разработчика | cpp, boost, qt — пост в ТГ канале

🎮 Пишем игру на C++ и Qt с нуляСерия для тех, кто хочет не читать про язык, а собрать рабочий проект — пусть и простой. 31 видео, от пустого окна до играбельного билда.– Qt как обвязка: GUI, event loop и сигналы-слоты– Низкий порог входа: рассчитано на тех, кто только осваивает C++– Цельный результат: на выходе — законченная игра👉 Плейлист✏️ Подойдёт такой формат «учимся на проекте» для онбординга джунов, или для С++ полезнее сразу копать в стандарт и инструментарий? 📍Навигация: Вакансии • Задачи • СобесыБиблиотека C/C++ разработчика#свежак

23 июн. 2026 г.1 690В Telegram

🍕 Проекции на поля структурВ прошлый раз разобрались, что такое проекция и зачем она нужна. Теперь — самый частый сценарий на практике: структура с кучей полей, и алгоритмы хочется гонять по разным из них, не плодя лямбды.struct Person { std::string name; int age; double height;};std::vector<Person> people = { {"Алиса", 30, 165}, {"Борис", 25, 180}, {"Виктор", 35, 175},};🤠 Одна структура — много ключейВся прелесть в том, что один и тот же контейнер крутим по любому полю — меняем только &Person::поле:// по возрастуstd::ranges::sort(people, std::less{}, &Person::age);// Борис(25), Алиса(30), Виктор(35)// самый высокийauto tallest = std::ranges::max_element(people, std::less{}, &Person::height);std::cout << tallest->name; // Борис// найти по имениauto found = std::ranges::find(people, "Алиса", &Person::name);std::cout << found->age; // 30Указатель &Person::age годится в проекции, потому что алгоритм зовёт её через std::invoke, а тот превращает его в p.age. Проекцией может быть что угодно вызываемое.Заметьте: max_element и find вернули итератор на целого Person. Проекция выбирает ключ, но на выходе всегда исходный элемент.‼️ sort сортирует на месте. Гоняете сниппеты подряд по одному people — каждый следующий видит уже переставленный вектор (max_element/find это не волнует).👑 Компаратор + проекция = направление + ключПроекция говорит «по какому полю», компаратор — «в каком порядке»:// по убыванию ростаstd::ranges::sort(people, std::greater{}, &Person::height);// Борис(180), Виктор(175), Алиса(165)std::less → std::greater — перевернули порядок, поле не трогали.Компаратор можно сократить до {}, но не выбросить совсем:std::ranges::sort(people, {}, &Person::age); // окstd::ranges::sort(people, &Person::age); // не компилируетсяПроекция — третий аргумент, поэтому без компаратора &Person::age уедет в его слот. {} этот слот занимает и подставляет дефолт — а дефолт тут std::ranges::less, не std::less (на наших данных без разницы).📍Навигация:

23 июн. 2026 г.1 440В Telegram
Библиотека C/C++ разработчика | cpp, boost, qt — пост в ТГ канале

⏰ Уже сегодня в 19:00 (МСК) стартует наш открытый урок!Знаем, летом хочется отложить учёбу на осень. Но пока остальные отдыхают 😅, мы предлагаем без лишней конкуренции прокачать свой workflow и начать закрывать тикеты в три раза быстрее.Тема: «AI-инструменты в разработке: пишем код быстрее»Мы покажем живой разбор реального проекта: как с помощью AI-ассистентов мгновенно разбираться в чужой кодовой базе, искать нужные участки и собирать Pull Request. Только рабочие промпты, которые сэкономят вам часы рутины.🎙 Спикер — Ольга Лукьянова, руководитель команды в SourceCraft (18+ лет развивала инструменты в JetBrains и Huawei).👉 Узнать, как ускорить разработку с AI

23 июн. 2026 г.1 370В Telegram

🐸Proglib.academy

22 июн. 2026 г.1 340В Telegram

😊 doctest: тесты прямо рядом с кодомЧто если тесты можно писать в том же файле, что и реализацию, без потери скорости сборки? Именно эту идею продаёт doctest.Это самый быстрокомпилируемый фреймворк из популярных: подключение заголовка почти не утяжеляет сборку. А с флагом DOCTEST_CONFIG_DISABLE все тесты вырезаются из релизного бинарника полностью.Такой подход меняет привычку: проверку можно положить сразу под функцию, пока логика свежа в голове. Тест становится живой документацией, а не отдельным проектом в папке tests/.int add(int a, int b) { return a + b; }TEST_CASE("add") { CHECK(add(2, 2) == 4); }✏️ Держите ли вы тесты отдельно от кода — или допускаете их соседство в одном файле?📍Навигация: Вакансии • Задачи • СобесыБиблиотека C/C++ разработчика#междусобойчик

18 июн. 2026 г.1 210В Telegram

⏰ Уже сегодня в 19:00 (МСК) стартует открытый урок!Тема:«Мультиагентные системы: почему большинство архитектур переусложнены»🔥 За 90 минут разберёмся, когда действительно стоит строить мультиагентную систему, а когда она только добавляет сложность, расходы и новые точки отказа.Поговорим о критериях выбора архитектуры, типичных ошибках и ограничениях современных ИИ-агентов, которые важно учитывать ещё до внедрения в продукт.🎙️ Спикер — Дмитрий Юдин, руководитель AI/ML-направления в Сloud․ru.🎁 Для всех участников подготовили промокод на скидку 10 000 ₽ на курс «Разработка ИИ-агентов».👉 Успей присоединиться к уроку

18 июн. 2026 г.1 150В Telegram
Библиотека C/C++ разработчика | cpp, boost, qt — пост в ТГ канале

🧵 Hazard pointers без водыРазбор безопасного освобождения памяти в lock-free структурах: почему нельзя просто delete узел, который кто-то ещё держит.• Гонка: X взял указатель на вершину и уснул, Y удалил узел, X читает по освобождённому адресу. UB• ABA: аллокатор переиспользует адрес, CAS видит «тот же» указатель и возвращает мёртвое значение. Развал структуры• Идея: поток публикует адрес в атомарный hp_ptr. Пока опубликован — узел не удаляют• Удаление откладывается: кандидаты копятся в retired_list, реальный delete идёт позже, в фазе scanScan собирает все активные hp_ptr под shared_mutex, сортирует и бинарным поиском проверяет кандидатов. Нет в активных — deleter вызывается. 👉 Разбор📍Навигация: Вакансии • Задачи • СобесыБиблиотека C/C++ разработчика#свежак

17 июн. 2026 г.1 170В Telegram

🎱 Проекции: Что такое проекция?Одна из полезнейших тем в C++ диапазонах — это проекции. Проекция — это функция, которая «извлекает» ключ из элемента перед тем, как алгоритм с ним работает. Подавляющее большинство алгоритмов из std::ranges принимают необязательный параметр proj; по умолчанию там std::identity — элемент идёт как есть.⏰ ranges::sort — сортировка по полюВозьмём те самые задачи из прошлого поста:struct Task { std::string name; int priority; };std::vector<Task> tasks = { {"Код", 1}, {"Деплой", 3}, {"Тесты", 2} };std::ranges::sort(tasks, {}, &Task::priority);// порядок: Код(1), Тесты(2), Деплой(3)Здесь {} — компаратор по умолчанию (ranges::less), а &Task::priority — проекция. Для каждой пары алгоритм считает less(a.priority, b.priority). Помните, в свёртках, чтобы сложить по priority, пришлось писать лямбду? Тут поле достаёт сама проекция.🎨 Проекция по указателю на членСамый частый случай — &Тип::поле. И работает не только в sort:// найти задачу с priority == 3auto it = std::ranges::find(tasks, 3, &Task::priority);// *it == Task{"Деплой", 3}// посчитать задачи с priority > 1auto n = std::ranges::count_if(tasks, [](int p){ return p > 1; }, &Task::priority);// n == 2Обратите внимание на порядок: у find проекция идёт сразу после искомого значения (компаратора у него нет), а у count_if — после предиката. У каждого алгоритма свой набор параметров, проекция в нём всегда последняя.🧁 Проекцией может быть что угодно вызываемоеНе только поле. Подойдёт указатель на метод, лямбда, свободная функция — всё, что переваривает std::invoke:std::vector<std::string> v = {"apple", "fig", "banana"};std::ranges::sort(v, {}, &std::string::size); // по длине// "fig"(3), "apple"(5), "banana"(6)std::vector<int> nums = {-5, 2, -1, 3};std::ranges::sort(nums, {}, [](int x){ return std::abs(x); }); // по модулю// -1, 2, 3, -5🎁 Проекция меняет ВЗГЛЯД, но не результатЭто главное, что надо уложить в голове. Проекция влияет только на то, ПО ЧЕМУ алгоритм принимает решения. Возвра

17 июн. 2026 г.1 010В Telegram
Библиотека C/C++ разработчика | cpp, boost, qt — пост в ТГ канале

🐸Proglib.academy

16 июн. 2026 г.1 210В Telegram
Библиотека C/C++ разработчика | cpp, boost, qt — пост в ТГ канале

🤕😱 Канала не хватает одного — твоего буста. Не лайка, не репоста. Именно буста, который реально качнёт канал вверхЕсли думал, что от одного голоса ничего не зависит, то это не так. На деле каждый буст поднимает уровень канала и открывает ему новые возможности. А тебе за это больше полезностей в канале‼️❓ За что бустить? За Сторис — наш формат для небольших, но полезных находок, которые жалко оставлять «за кадром»:• интересные инструменты• короткие технические заметки• полезные ссылки• вопросы для программистов• быстрые опросы👾 Жми кнопку буста под этим постом. Этим ты внесёшь ощутимый вклад в развитие канала.➡️ Буст каналаБиблиотека C/C++ разработчика

16 июн. 2026 г.1 440В Telegram

🍬 EXPECT_DEATH не ловит исключение. Он запускает ваш код в отдельном процессе и ждёт его смертиЕсли думал, что death-тест в GoogleTest — это просто проверка «упадёт или нет», то это не так. На деле фреймворк изолирует ваш код в дочернем процессе, дожидается его завершения и проверяет, что тот умер именно так, как вы ожидали. Сам тест-раннер при этом остаётся жив — в этом весь смысл.💡Когда вы пишете EXPECT_DEATH(stmt, "regex"), фреймворк форкает текущий процесс. Дочерний выполняет stmt, родитель через waitpid() ждёт его завершения и анализирует статус выхода.❓ Зачем вообще отдельный процесс? Потому что abort(), std::terminate или сработавший assert убивают процесс по-настоящему. Поймать это в том же процессе как исключение нельзя — управление уже не вернётся. Единственный способ протестировать смерть, не убив сам тест-раннер, — изолировать её в ребёнке.EXPECT_DEATH( { std::abort(); }, ".*");❗️ Родитель и ребёнок после форка — два независимых адресных пространства (copy-on-write). Краш в ребёнке для родителя — просто ненулевой код возврата или сигнал.❗️Death-тест — это не try/catch, это управляемое самоубийство подпроцесса. Если держать это в голове, перестаёшь удивляться, почему std::cout внутри блока ведёт себя странно.❓ А вы проверяете abort()-ветки или оставляете их «на авось»?📍Навигация: Вакансии • Задачи • СобесыБиблиотека C/C++ разработчика#константная_правильность

15 июн. 2026 г.1 490В Telegram
Библиотека C/C++ разработчика | cpp, boost, qt — пост в ТГ канале

🤖 Свой malloc для ОС: от наивного списка до биновСерия статей про аллокатор на C++ для собственной ОС — там, где нет ни стандартной библиотеки, ни готового ABI, а PageAllocator только предстоит написать.🍿 Статьи1. Неявный список свободных блоков с граничными тегами2. Слияние блоков за константное время. Юнит тест для аллокатора3. Финальный аллокатор со списками свободных блоков4. mem_malloc_aligned📍Навигация: Вакансии • Задачи • Собесы • Канал в MaxБиблиотека C/C++ разработчика#свежак

14 июн. 2026 г.1 720В Telegram
Библиотека C/C++ разработчика | cpp, boost, qt — пост в ТГ канале

🎥 До открытого урока — несколько дней. Подготовили небольшую подборку материалов от нашего спикера Дмитрия Юдина.Дмитрий руководит AI/ML-направлением в Сloud․ru и развивает Evolution AI Factory — среду для работы с GenAI: от инфраструктуры обучения LLM до внедрения интеллектуальных агентов.С чего начать:📺 AI-инструменты для разработчиков — как код, автотесты и ассистенты меняют рутину инженера.📺 AI-эволюция бизнеса в эпоху генеративных моделей — агентные системы в реальных продуктах.📺 Разработка мертва? — дискуссия о будущем профессии и роли AI в ней.📖 Применение LLM в бизнесе — статья Дмитрия о практике внедрения и роли облака.Одна из ключевых тем Дмитрия — практическое применение агентных систем и их ограничения.Именно об этом — бесплатный урок 18 июня в 19:00: «Мультиагентные системы: почему большинство архитектур переусложнены» 🔥🎁 Для участников подготовили промокод на скидку 10 000 ₽ на курс «Разработка ИИ-агентов».👉 Успей занять место на открытом уроке

14 июн. 2026 г.1 520В Telegram