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

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

Ir al canal en Telegram

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

Mostrar más

📈 Análisis del canal de Telegram Библиотека C/C++ разработчика | cpp, boost, qt

El canal Библиотека C/C++ разработчика | cpp, boost, qt (@cppproglib) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 16 867 suscriptores, ocupando la posición 7 486 en la categoría Tecnologías y Aplicaciones y el puesto 38 903 en la región Rusia.

📊 Métricas de audiencia y dinámica

Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 16 867 suscriptores.

Según los últimos datos del 26 agosto, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -98, y en las últimas 24 horas de 2, conservando un alto alcance.

  • Estado de verificación: No verificado
  • Tasa de interacción (ER): El promedio de interacción de la audiencia es 8.43%. Durante las primeras 24 horas tras publicar, el contenido suele obtener N/A% de reacciones respecto al total de suscriptores.
  • Alcance de las publicaciones: Cada publicación recibe en promedio 1 422 visualizaciones. En el primer día suele acumular 0 visualizaciones.
  • Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 3.
  • Intereses temáticos: El contenido se centra en temas clave como c++, навигация, компилятор, удалёнка, developer.

📝 Descripción y política de contenido

El autor describe el recurso como un espacio para expresar opiniones subjetivas:
Все самое полезное для плюсовика и сишника в одном канале. Как запустить своего ии-агента: https://clc.to/tvpmDQ По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17 #WXS...

Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 27 agosto, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.

16 867
Suscriptores
+224 horas
-197 días
-9830 días
Archivo de publicaciones
✈️ C++26 наводит порядок в строковых литералах До C++26 строки, которые живут только на этапе компиляции, формально не отличались от обычных литералов — и компиляторы обрабатывали их кто во что горазд. • P2361R6 выделяет невычисляемые строки — те, что нужны только компилятору (static_assert, [[deprecated]], [[nodiscard]], _Pragma, #line, asm, имена литеральных операторов) и в исполняемый файл не попадают • Префикс кодировки (L, u8, u, U) на них теперь запрещён: static_assert(false, L"плохо") перестаёт компилироваться • Строка не переводится в целевую кодировку — компилятор хранит исходные символы как есть, для сообщений об ошибках • Из управляющих последовательностей остаются только имена символов Юникода и простые вроде \n и \t. Числовые (\x1B, \077) запрещены: в неизвестной кодировке толковать их нечем • Второй документ, P1854R4, наводит порядок в обычных литералах: непредставимые символы теперь ошибка, а не поведение на усмотрение реализации. И это исправление действует задним числом — вплоть до C++98 Формально это breaking changes. Но проверка более 90 миллионов строк открытого кода почти не нашла затронутых мест: единственные префиксы на таких строках обнаружились в тестах самого Clang. Цена миграции близка к нулю, выигрыш — предсказуемое поведение вместо зоопарка реализаций. ↗️ Пост ✏️ Натыкались ли вы хоть раз на L"..." в static_assert, или это чистка стандарта ради самой чистоты? 👇 📍Навигация: ВакансииЗадачиСобесыКанал в Max Библиотека C/C++ разработчика #буст

⛄️ Почему find_package(Foo) ищет в двух режимах? Многие думают, что find_package — это «одна команда, один поиск». На деле под капотом работает диспетчер двух разных механизмов, и путаница между ними — частая причина «package not found» при идеально установленной библиотеке. 🔍 Когда вы пишете find_package(Foo), CMake по умолчанию сначала запускает Module mode: ищет файл FindFoo.cmake сперва в CMAKE_MODULE_PATH, а затем во встроенных модулях самого CMake. Это скрипт-разведчик, который через find_path/find_library сам ищет заголовки и библиотеки на диске. ⚡️ Если модуль не найден, включается Config mode: CMake ищет FooConfig.cmake или foo-config.cmake — файл, который поставляет сам пакет и который точно знает, где что лежит. ❗️ Важно: это последовательный поиск с откатом, а не параллельный. И порядок можно перевернуть — с CMake 3.15 переменная CMAKE_FIND_PACKAGE_PREFER_CONFIG=ON заставляет сначала пробовать Config.
find_package(Foo)              # сначала Module, потом Config
find_package(Foo CONFIG)       # только Config mode
find_package(Foo MODULE)       # только Module mode
❗️ Ключевое различие: FindFoo.cmake пишет кто угодно, кроме автора пакета — потребитель, сторонний разработчик или сами разработчики CMake (так поставляются FindThreads, FindOpenSSL и т.д.), и он угадывает расположение. А FooConfig.cmake поставляет сам автор библиотеки, и он обычно отдаёт готовые импортированные таргеты (Foo::Foo) с уже прописанными путями, флагами и зависимостями. Поэтому Config mode почти всегда надёжнее. 💡 На практике: если современная библиотека (через install(EXPORT)) не находится — проверьте не CMAKE_MODULE_PATH, а CMAKE_PREFIX_PATH, потому что искать нужно именно Config-файл. 📍Навигация: ВакансииЗадачиСобесыКанал в Max Библиотека C/C++ разработчика #под_капотом

📉 Инфляция грейдов, смерть джунов, новая модель найма: что происходит с IT-рынком в 2026 году Представь лифт, который застря
📉 Инфляция грейдов, смерть джунов, новая модель найма: что происходит с IT-рынком в 2026 году Представь лифт, который застрял между этажами, а его двери завалили арматурой. Это и есть IT-рынок в 2026 году. Грейды ничего не значат, джунов не берут, кандидаты врут в резюме, компании завышают требования, а воронку найма пересобирают с нуля. Разбираемся, что пошло не так и как это чинят. 👉 Читать дальше 📍Навигация: ВакансииЗадачиСобесыКанал в Max Библиотека C/C++ разработчика #свежак

🥳 Алгоритмы диапазонов: Свёртки (fold) В прошлый раз модифицировали диапазоны — теперь сворачиваем их в одно значение. В C++23 появилось семейство fold_*, которое наконец заменяет std::accumulate и аккуратно выводит типы. 🍰 ranges::fold_left — свёртка слева
std::vector<int> v = {1, 2, 3, 4, 5};
int sum     = std::ranges::fold_left(v, 0, std::plus{});       // 15
int product = std::ranges::fold_left(v, 1, std::multiplies{}); // 120
Левоассоциативная свёртка: аккумулятор — левый аргумент операции, элемент — правый. По шагам это (((( 0+1 )+2 )+3 )+4 )+5. Начальное значение задаёте сами. 🥨 ranges::fold_left_first — первый элемент как начало
std::vector<int> v = {3, 1, 4, 1, 5};
auto max_val = std::ranges::fold_left_first(v, [](int a, int b){
return std::max(a, b);
});
// max_val == std::optional<int>{5}
То же самое, но начальным значением берётся первый элемент диапазона — отдельный init не нужен. Удобно для max/min, где придумывать «нейтральный» элемент неловко (Для готовых max/min, конечно, есть ranges::max — fold_left_first интересен произвольной операцией). ❗️ Возвращает std::optional: у пустого диапазона нет первого элемента, поэтому на пустом входе придёт std::nullopt. Не забудьте проверить перед разыменованием. 🥖 ranges::fold_right — свёртка справа
std::vector<int> v = {1, 2, 3};
int r = std::ranges::fold_right(v, 0, std::minus{});
// 1 - (2 - (3 - 0)) == 2
int l = std::ranges::fold_left(v, 0, std::minus{});
// ((0 - 1) - 2) - 3 == -6
Идёт с правого конца: result = f(1, f(2, f(3, 0))). Для коммутативных операций (plus, multiplies) результат совпадёт с fold_left, а для некоммутативных — нет, как видно по вычитанию. ❗️ У fold_right порядок аргументов операции зеркальный: вызывается f(элемент, аккумулятор), то есть элемент идёт первым, а не вторым. Для своих лямбд это легко перепутать. 🥯 ranges::fold_right_last — последний элемент как начало
std::vector<int> v = {1, 2, 3};
auto res = std::ranges::fold_right_last(v, std::minus{});
// 1 - (2 - 3) == 2, внутри std::optional<int>{2}
Зеркало fold_left_first: начальным значением берётся последний элемент, результат — тоже std::optional с тем же поведением на пустом диапазоне. 🧇 ranges::fold_left_with_iter — результат и итератор
std::vector<int> v = {1, 2, 3, 4, 5};
auto [in, value] = std::ranges::fold_left_with_iter(v, 0, std::plus{});
// value == 15
// in == v.end()
Возвращает не просто значение, а структуру с полями in (итератор конца обработки) и value. Полезно, когда после свёртки нужно знать, где именно остановились — например, при работе с подсчётами в потоке. ❗️ Несколько подводных камней • Главное отличие от accumulate — в том, как выводится тип накопления. У accumulate тип аккумулятора равен типу init, поэтому std::accumulate(vd.begin(), vd.end(), 0) на векторе double молча копит в int и теряет дробную часть. А fold_left выводит тип аккумулятора из РЕЗУЛЬТАТА операции (U = decay_t<invoke_result_t<F&, T, range_reference_t<R>>>), и здесь int-ный ноль на векторе double уже ничего не теряет: plus(int, double) даёт double, и всё копится в double.
std::vector<double> vd = {1.5, 2.5, 3.0};
auto s = std::ranges::fold_left(vd, 0, std::plus{});
// s == 7.0, а НЕ 6 — тип s выведен как double
// (то же самое через accumulate с init 0 дало бы int 6)
Это и есть причина, по которой fold_left лучше: он не обрезает молча. • fold_left довольствуется однопроходным input-диапазоном (годится для istream_view и прочих потоков), а fold_right требует bidirectional-диапазона — ему нужно дойти до конца и пойти обратно. Поэтому «свернуть справа» поток на лету не выйдет. • В отличие от remove, transform и copy_if из прошлого поста, свёртки НЕ принимают проекцию. «Свернуть по полю» одним аргументом не выйдет — нужна лямбда, которая сама достанет нужное:
std::vector<Task> tasks = { {"Код", 1}, {"Деплой", 2} };
int total = std::ranges::fold_left(tasks, 0,
[](int acc, const Task& t){ return acc + t.priority; });
// 3
📍Навигация: ВакансииЗадачиСобесыКанал в Max Библиотека C/C++ разработчика #константная_правильностьx

🔥 Инженерная методичка по ИИ от Романа Барлоса (Team Lead в Yandex Cloud) Продолжаем делиться экспертизой команды курса «Раз
🔥 Инженерная методичка по ИИ от Романа Барлоса (Team Lead в Yandex Cloud) Продолжаем делиться экспертизой команды курса «Разработка ИИ-агентов». Роман собрал мастхев-инструменты и ключевые работы для тех, кто хочет выйти за рамки вайбкодинга. 🛠️ Полезные инструменты:
Understand Anything — граф знаний по коду и зависимостям. • DeepTutor — open-source платформа для персонализированного обучения. • Superpowers — набор практик для системной разработки с ИИ. • Awesome Agent Skills — коллекция навыков для ИИ-агентов.
📚 Ключевые работы по LLM:
Attention Is All You Need (2017) — архитектура Transformer. • GPT-1 (2018) — начало эпохи GPT. • GPT-2 (2019) — решение новых задач без дообучения. • GPT-3 (2020) — обучение на примерах из запроса. • InstructGPT (2022) — RLHF и современные чат-боты.
На курсе Роман выступает консультантом программы: помогает формировать содержание уроков с опорой на актуальные инженерные практики». Занять свое место на потоке: 👉 Курс «Разработка ИИ-агентов»

🍴 Исследовательская задача: что именно изменил C++23 В C++23 приняли P2718R0 — и старый баг range-for тихо исчез. Но не для всех временных объектов и не безусловно.
std::vector<int> getData() { return {1, 2, 3}; }

for (int x : getData()           // временный 1
                 | filtered)     // вью поверх него
    std::cout << x;
✏️Задание (research): найди в документации/предложении ответы: 1️⃣ Жизнь каких именно временных объектов продлевает P2718R0? 2️⃣ Почему до C++23 пример выше был UB, а теперь — нет? 3️⃣ Остались ли случаи, где даже в C++23 ты получишь висячую ссылку? 📍Навигация: ВакансииЗадачиСобесыКанал в Max Библиотека C/C++ разработчика #константная_правильностьx

📰 Свеженькое из мира C++ Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и инт
📰 Свеженькое из мира C++ Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++. 😎 Интересное: Как выдать shared_ptr на себя из метода? — решение проблемы передачи сырых указателей на самого себя 86Box 6.0: низкоуровневая эмуляция x86 как она есть — обновление полноценного эмуляторы для x86 платформы export: что именно вы отдаёте наружу? — разбираем способы экспорта из C++ модулей TypeScript без V8: AOT-компиляция в нативный бинарник — интересный подход по связыванию TypeScript с C++ кодом 📙 Ranges: Алгоритмы диапазонов: Алгоритмы модификации 🔹📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #свежак

😎 Знакомьтесь с экспертом Proglib.academy: Senior Software Engineer и Team Lead в Yandex Cloud Роман Барлос Роман — консульт
😎 Знакомьтесь с экспертом Proglib.academy: Senior Software Engineer и Team Lead в Yandex Cloud Роман Барлос Роман — консультант нашего курса «Разработка ИИ-агентов». Он работает на стыке cloud-native архитектуры и AI, активно внедряя современные ИИ-подходы в реальные процессы разработки. За что его ценит IT-комьюнити? 🟣 Team Lead и AI-евангелист в команде UX Yandex Cloud
14-лет в разработке. Занимается AI-адопшеном в команде Yandex Cloud, проводит мастер-классы и продвигает лучшие практики для повышения эффективности разработчиков.
🟣 Техлид Sourcecraft Code Assistant
С сильным практическим бэкграундом принимал участие как технический лид в создании мощного AI-расширения для VS Code.
🟣 Создатель полезного Open Source
Разрабатывает утилиты, которые позволяют быстро начать эксперименты с инференсом и агентами в локальном окружении: например, набор скриптов vllm-setup для быстрого запуска окружения и mini-proxy — минималистичный прокси для OpenAI API провайдеров.
🟣 Автор интерактивных ML-визуализаций
Объясняет сложные концепции наглядно. Создал серию залипательных обучающих материалов, где можно вживую пощупать работу сетей Хопфилда, машин Больцмана и VC-размерности.
Роман регулярно делится инженерными наработками, инсайтами и экспертизой в своем авторском Telegram-канале На курсе Роман выступает консультантом программы: он помогает формировать содержание уроков с опорой на актуальные инженерные практики и жесткие требования индустрии. Узнать больше о программе и разработке автономных систем: 👉 Курс «Разработка ИИ-агентов» Так, продолжаем знакомить вас с командой? 👍 — Да, ждем новых лиц 🔥 — Жду полезные материалы от Романа

⚙️ TypeScript без V8: AOT-компиляция в нативный бинарник В МойОфисе уперлись в санкционные ограничения Qt и медленную разрабо
⚙️ TypeScript без V8: AOT-компиляция в нативный бинарник В МойОфисе уперлись в санкционные ограничения Qt и медленную разработку UI на C++. Решение — компилировать TypeScript в натив напрямую, без браузера и интерпретатора. • Фронтенд компилятора написан на самом TS и крутится в Node.js: переиспользуют парсер и AST от Microsoft • Выход фронтенда — LLVM IR, дальше стандартный бэкенд LLVM и llc. По сути поток компиляции концептуально идентичен Clang • Свой JS-рантайм (TSNative STD): базовые типы ECMAScript, GC, event loop — всё, что обычно даёт V8 • Сопоставление TS-вызовов с C++-символами идёт через .d.ts-декларации и nm: ищут по обычному имени, вставляют в IR mangled Точка входа живёт на стороне C++: она инициализирует рантайм и дёргает единственный экспорт tsmain, в который слинкован весь TS-код как статическая библиотека (extern «C», с оглядкой на ABI) 👉 Статья 👉 Видео 📍Навигация: ВакансииЗадачиСобесы Канал в Max Библиотека C/C++ разработчика #буст

🐸 Подборка вакансий для C++-разработчиков за неделю Системный разработчик С++ — Офис (Москва) Разработчик C++ — Удалёнка Senior C Developer —Удалёнка Разработчик на C/C++ под Linux — от 250 000 и до 350 000 ₽ Удалёнка/Гибрид (Москва) 📍Навигация: ВакансииЗадачиСобесыКанал в Max Библиотека C/C++ разработчика #вакансии

📤 export: что именно вы отдаёте наружу? Из модуля наружу видно только то, что помечено export. Всё остальное снаружи не видно — но это не «закрытость» уровня файла: у непомеченных сущностей модульное связывание, то есть их видят другие единицы трансляции того же модуля, просто не видит код, который подключает модуль. Это противоположность заголовкам, где в чужой код текстуально попадает вообще всё.
export module geometry;

export struct Point { double x, y; };  // открыто наружу

double dist(Point a, Point b);          // скрыто снаружи,
                                        // но доступно внутри модуля

export double length(Point p) {         // открыто наружу
    return dist(p, {0, 0});
}
Открыть наружу можно почти любую сущность: функции, типы, шаблоны, переменные, псевдонимы using. 🪐 Удобные формы записи
export {                    // блок экспорта
    int foo();
    int bar();
}

export namespace net {      // только объявления ЭТОГО блока
    void connect();
}

export import utils;        // повторный экспорт: проброс
                            // чужого модуля дальше
❗️ export namespace открывает только то, что объявлено в этом блоке. Если позже снова открыть пространство имён net без export, новые имена наружу не уйдут. ❌ Ошибки • export допустим только в единице, которая начинается с export module …;. В единице реализации (module geometry; без export) это ошибка компиляции • export нельзя ставить на сущности в безымянном пространстве имён — у них внутреннее связывание • функцию со static не открыть — она по определению локальна (внутреннее связывание) • нельзя открывать что-либо из общей вступительной части модуля (того, что идёт до export module …;) 📍Навигация: ВакансииЗадачиСобесыКанал в Max Библиотека C/C++ разработчика #константная_правильность

Чтобы безопасно использовать выровненные SIMD-загрузки (например, _mm256_load_ps) по SoA-массиву float, массив должен быть выровнен на:
Anonymous voting

🖥️ 86Box 6.0: низкоуровневая эмуляция x86 как она есть Вышел релиз открытого эмулятора 86Box — эмуляция машин от 8086 до Cel
🖥️ 86Box 6.0: низкоуровневая эмуляция x86 как она есть Вышел релиз открытого эмулятора 86Box — эмуляция машин от 8086 до Celeron Mendocino, способная поднять MS-DOS, Windows 3.11/95, OS/2, BeOS и NEXTSTEP. • Реализована симуляция звуков HDD: писк шпинделя и щелчки позиционирования головок — фетиш для тех, кто скучает по железу 90-х • Добавлен виртуальный сетевой коммутатор для связи нескольких экземпляров 86Box между собой • Появился турбо-режим, снимающий искусственное ограничение скорости эмуляции. • Заметно поднята производительность на ARM-хостах, добавлен запуск под ARM64-версии Windows • Расширен список эмулируемых машин (от IBM Multistation 5550 до плат на Slot 1) и звуковых карт ISA/LPT Кодовая база остаётся на чистом C — что для проекта с такой плотностью низкоуровневой работы с железом выбор предсказуемый: прямой контроль над памятью и отсутствие сюрпризов на границе ABI. 👉 Github 📍Навигация: ВакансииЗадачиСобесыКанал в Max Библиотека C/C++ разработчика #свежак