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

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

Kanalga Telegram’da o‘tish

Все самое полезное для плюсовика и сишника в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/d6cd2932 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17 #WXSSA

Ko'proq ko'rsatish

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

Библиотека C/C++ разработчика | cpp, boost, qt (@cppproglib) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 17 801 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 7 530-o'rinni va Rossiya mintaqasida 37 990-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 17 801 obunachiga ega bo‘ldi.

07 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -16 156 ga, so‘nggi 24 soatda esa -5 379 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 8.81% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 5.05% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 1 569 marta ko‘riladi; birinchi sutkada odatda 899 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 8 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent c++, навигация, компилятор, удалёнка, developer kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
Все самое полезное для плюсовика и сишника в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/d6cd2932 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17 #WXSSA

Yuqori yangilanish chastotasi (oxirgi ma’lumot 08 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

17 801
Obunachilar
-5 37924 soatlar
-16 1327 kunlar
-16 15630 kunlar
Postlar arxiv
🧹 Сколько мусора в ваших #include? В больших C++-проектах заголовки превращаются в паутину неявных зависимостей. Один рефакторинг — и всё сыплется, потому что кто-то полагался на транзитивный include. • IWYU — инструмент на базе Clang, который анализирует, какие заголовки реально используются в каждом .cc/.cpp-файле, а какие тянутся впустую • Удаление лишних include сокращает время компиляции • Инструмент умеет подставлять forward declarations вместо полных include, что дополнительно режет зависимости • Актуальная версия 0.26 совместима с Clang 22. Проект жив, обновляется под каждый мажорный релиз LLVM 👉 Github ✏️ Используете IWYU на своих проектах или до сих пор чистите include вручную? 👇 📍 Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #буст

📰 Свеженькое из мира C++ Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и инт
📰 Свеженькое из мира C++ Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++. 😎 Интересное:Hello World в 2 МБ — даже простые программы весят сейчас мегабайты, разбираем почему • Reflection в C++26 — два оператора, которые меняют правила игры • Вызов C-функций из Go без Cgo — альтернативный способ вызова C-функции из Go-кода • Vibe hiring — почему сильные разработчики не проходят собесы 📙 Ranges: Комбинаторы: views::zip и views::enumerate 🔹📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #свежак

‼️ Задача на выходные Этот код содержит баг. Необходимо найди его:
#include <ranges>
#include <vector>
#include <iostream>
#include <algorithm>

int main() {
    std::vector<int> vec = { 5, 3, 1, 4, 2 };

    auto sorted_view = vec
        | std::views::transform([](int x) { return x; });

    std::ranges::sort(sorted_view);

    for (auto v : sorted_view) {
        std::cout << v << " ";
    }
}
Подсказка: views::transform возвращает prvalue. Можно ли сортировать такой view? Отсортируется ли vec? Если нет — какая ошибка компиляции и почему? 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #междусобойчик

‼️ Задача на выходные Этот код содержит баг. Необходимо найди его:
#include <ranges>
#include <vector>
#include <iostream>
#include <algorithm>

int main() {
    std::vector<int> vec = { 5, 3, 1, 4, 2 };

    auto sorted_view = vec
        | std::views::transform([](int x) { return x; });

    std::ranges::sort(sorted_view);

    for (auto v : sorted_view) {
        std::cout << v << " ";
    }
}
Подсказка: views::transform возвращает upvalue. Можно ли сортировать такой view? Отсортируется ли vec? Если нет — какая ошибка компиляции и почему? 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #междусобойчик

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

😎 Vibe hiring: почему сильные разработчики не проходят собесы, а «приятные» — проходят Ты решил все задачи, ответил на все в
😎 Vibe hiring: почему сильные разработчики не проходят собесы, а «приятные» — проходят Ты решил все задачи, ответил на все вопросы, а оффер получил кто-то другой. Добро пожаловать в эпоху vibe hiring — найма по ощущению, интуиции и «культурному фиту». Разбираемся, что это такое, почему это катастрофа для IT-рынка и что говорят свежие исследования 2026 года. 👉 Статья 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #буст

⭐️ Вызов C-функций из Go без Cgo Если вы работали с Go и вам нужно было вызвать C-библиотеку, то вы наверняка сталкивались с
⭐️ Вызов C-функций из Go без Cgo Если вы работали с Go и вам нужно было вызвать C-библиотеку, то вы наверняка сталкивались с Cgo. Cgo работает, но тянет за собой целый набор проблем. Нужен C-компилятор на каждой целевой платформе. Кросс-компиляция превращается в боль. Сборка замедляется. Бинарники раздуваются. purego решает всё это, позволяя вызывать C-функции из чистого Go. Откуда взялся проект Библиотека выросла из игрового движка Ebitengine. Его авторы портировали движок на чистый Go для Windows, что позволило кросс-компилировать на Windows с любой ОС одной командой GOOS=windows. purego родился, чтобы принести тот же подход на macOS, Linux и другие платформы. Что даёт purego Без Cgo отпадает необходимость в C-компиляторе. Вы можете собирать проект под другую платформу, просто задав GOOS и GOARCH. Сборка кешируется целиком как обычный Go-проект и работает быстрее. Бинарники становятся меньше, потому что Cgo генерирует обёртку на C для каждого вызова, а purego этого не делает. Ещё purego умеет загружать символы из shared-библиотек в рантайме. Это можно использовать как систему плагинов или для FFI-вызовов в библиотеки на других языках, скомпилированные в .so / .dylib / .dll. purego работает и при CGO_ENABLED=1. Это значит, что можно портировать проект с Cgo на purego постепенно, не переписывая всё разом. Как это выглядит в коде API минимальный. Вы открываете библиотеку через Dlopen, затем регистрируете Go-функцию, которая будет вызывать C:
package main

import (
  "fmt"
  "runtime"

  "github.com/ebitengine/purego"
)

func getSystemLibrary() string {
  switch runtime.GOOS {
  case "darwin":
    return "/usr/lib/libSystem.B.dylib"
  case "linux":
    return "libc.so.6"
  default:
    panic(fmt.Errorf("GOOS=%s is not supported", runtime.GOOS))
  }
}

func main() {
  libc, err := purego.Dlopen(getSystemLibrary(), purego.RTLD_NOW|purego.RTLD_GLOBAL)
  if err != nil {
    panic(err)
  }
  var puts func(string)
  purego.RegisterLibFunc(&puts, libc, "puts")
  puts("Calling C from Go without Cgo!")
}
Обратите внимание на RegisterLibFunc. Вы объявляете переменную с нужной Go-сигнатурой, а purego привязывает её к C-функции по имени. Никаких // #cgo директив, никаких .h файлов. Когда стоит использовать purego подходит, если вам нужно вызывать C-библиотеку из Go и при этом важна простота сборки и кросс-компиляция. Типичные сценарии — работа с системными библиотеками, графические движки, аудио, нативные SDK. Если ваш проект уже плотно завязан на Cgo и работает на одной платформе, смысла переезжать может не быть. Но если вы начинаете новый проект или хотите избавиться от зависимости на C-тулчейн, purego стоит попробовать. ➡️ Репозиторий 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека Go-разработчика #GoToProduction

Talanto.work - сайт для всех, кто ищет работу в IT. Мы спарсили за вас все возможные телеграм каналы и сайты с вакансиями иск
Talanto.work - сайт для всех, кто ищет работу в IT. Мы спарсили за вас все возможные телеграм каналы и сайты с вакансиями исключительно из сферы IT. Вам не нужно следить за тем, когда выходит вакансия и где, всё это уже сделано за вас. Просто настройте фильтры у нас на сайте и получайте уведомления в телегу, как только вакансия вышла. Например: все вакансии по C++ На talanto.work собрано 28.000+ вакансий из разных .ru и иностранных сайтов: разработка, QA, аналитика, DevOps, продакт, дизайн, менеджмент и другие IT/Digital-направления. Более 1700 вакансий за последний месяц из телеграм каналов. Что еще есть на сайте: 🟠 Фильтры для нормального поиска Можно искать по стеку, грейду, зарплате, стране, формату работы, релокации и типу занятости. 🟠 Разбор резюме Загружаете CV и получаете конкретные рекомендации: что улучшить, какие навыки добавить, где слабая структура и что может мешать пройти ATS. 🟠Проверка соответствия вакансии и резюме Рядом с вакансией всегда есть кнопочка узнать соответствие, насколько ваш профиль ей подходит. Сервис покажет процент совпадения, сильные стороны и пробелы в резюме 🟠Сопроводительное письмо за 10 секунд Вставляете вакансию и получаете персональное письмо под конкретную компанию и роль, а не шаблон “прошу рассмотреть мою кандидатуру”. 🟠Уведомления в Telegram Задаёте фильтры один раз и бот присылает новые подходящие вакансии прямо в Telegram. Поиск работы в IT сейчас и так сложный. Мы хотим, чтобы вы тратили меньше времени на листание сайтов и больше на точные отклики туда, где у вас реально есть шанс. ✈️ 28.000+ вакансий 🟢Бот с уведомлениями о ваших вакансиях: @TalantoWorkBot 🟢Написать сопровод 🟢Разобрать резюме 🟢Проверить соответствие резюме вакансиям Реклама. Киренкина Марина Дмитриевна, ИНН 345702417736. Erid 2VtzqwpGgLF

Скомпилируется ли? Что произойдёт? (C++23)
Anonymous voting

🪞 Reflection в C++26 — два оператора, которые меняют правила игры Каждый C++ разработчик хоть раз писал switch-case для прев
🪞 Reflection в C++26 — два оператора, которые меняют правила игры Каждый C++ разработчик хоть раз писал switch-case для превращения enum в строку. C++26 предлагает забыть об этом — в стандарт входит compile-time reflection. • Появляются два новых оператора: ^^ (reflection operator) и [: :] (splicer). Первый превращает любую C++-сущность — тип, переменную, namespace, шаблон — в значение std::meta::info на этапе компиляции. Второй делает обратное: конвертирует std::meta::info обратно в тип, выражение или шаблон • std::meta::info — это constexpr-хэндл к сущности. По сути, программа получает возможность исследовать собственную структуру в compile-time, не прибегая к макросам или кодогенерации • Практический пример — generic to_enum_string(). Через std::meta::enumerators_of(^^T) получаем список enumerator-ов, итерируемся по ним с помощью template for, сплайсим значение через [:e:] и достаём имя через std::meta::identifier_of. Добавил новый enumerator — всё работает автоматически • Для итерации используется std::define_static_array — отдельный proposal C++26, без которого развернуть expansion statement пока не получится Вместо ручного switch-case, который ломается при каждом добавлении нового значения, reflection даёт обобщённое решение на уровне языка. Никакой кодогенерации, никаких макросов — чистый constexpr-код с полной type safety. 🍴 Подробнее 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #буст

🧋 Комбинаторы: views::zip и views::enumerate В прошлый раз мы генерировали диапазоны на лету с помощью iota и repeat. Теперь научимся их комбинировать — объединять несколько источников данных в один поток, не копируя ни байта. ✈️ views::zip — объединение нескольких диапазонов (C++23)
std::vector<std::string> names = {"Алиса", "Борис", "Виктор"};
std::vector<int> scores = {95, 82, 78};

// Получаем пары (имя, балл)
for (auto [name, score] : views::zip(names, scores)) {
    std::cout << name << ": " << score << "\n";
}
// Алиса: 95
// Борис: 82
// Виктор: 78
zip заканчивается на самом коротком диапазоне — безопасно при разной длине. Внутри возвращается std::tuple, а structured bindings разбирают его на отдельные переменные. ❗️ views::zip возвращает ссылки на элементы исходных контейнеров. Модификация через structured binding изменит оригинальные данные. 🥨 views::enumerate — индекс + значение (C++23)
std::vector<int> data = {10, 50, 30, 90, 20};

for (auto [i, val] : data | views::enumerate) {
    if (val > 40) {
        std::cout << "Первое превышение на позиции " << i << "\n";
        break;
    }
}
// Первое превышение на позиции 1
Раньше для этого приходилось писать views::zip(views::iota(0), data) (см. предыдущий пост про генераторы). Теперь — в одну строку. ❗️ Тип индекса в enumerate — это range_difference_t, а не int или size_t. На практике разница редко бьёт, но при сравнении с size() компилятор может выдать предупреждение о знаковости. 🧊 Главное свойство Как и все views, zip и enumerate ленивые — они не создают копий и не выделяют память. Это лёгкие обёртки поверх исходных данных, которые вычисляются только при обращении к элементу. 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #константная_правильность

🕯️ Hello World в 2 МБ Простейшая программа на C++ с iostream и статической линковкой на GCC 15 выдаёт бинарник в 2,3 МБ. Для
🕯️ Hello World в 2 МБ Простейшая программа на C++ с iostream и статической линковкой на GCC 15 выдаёт бинарник в 2,3 МБ. Для вывода 11 символов — как-то многовато. • iostream тянет за собой инициализацию std::cout, std::stringstream, локали, виртуальные функции и шаблоны — всё это ради одного вызова operator&lt;&lt;. Замена на printf сразу роняет размер до 42,5 КБ • Флаг -s срезает ~1,2 МБ отладочной информации, которую компилятор зачем-то пихает в релизный бинарник по умолчанию • Тенденция по версиям GCC показательна: тот же iostream-бинарник на GCC 3.4.2 весил 260 КБ, на 15.2.0 — уже 1,05 МБ. С каждой версией зависимости жиреют Принцип «не плати за то, что не используешь» на практике работает ровно до того момента, пока компилятор сам не решит, что тебе нужно. 👉 Более детальный разбор ✏️ Вы проверяли, сколько весит ваш «минимальный» бинарник? 📍 Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #буст

Какую проблему метапрограммирования решают шаблоны с переменным числом аргументов совместно с рекурсией?
Anonymous voting

📰 Свеженькое из мира C++ Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и инт
📰 Свеженькое из мира C++ Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++. 😎 Интересное:oo-alloc — набор объектно-ориентированных обёрток поверх низкоуровневого управления памятью •Что скрывает auto(x) — именованная операция, позволяющая удобно копировать переменные • Just My Code в Visual Studio — инструмент, отключающий переходы в режиме отладки в код, который не принадлежит вашему проекту 📙 Ranges: Разбиение диапазонов: views::split, chunk, chunk_byГенераторы: views::iota и views::repeat 🔹📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #свежак