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

Как запустить своего ии-агента: https://clc.to/tvpmDQ

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

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

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

#WXSSA
Download Telegram
Уже сегодня в 19:00 (МСК) стартует наш открытый урок!

Знаем, летом хочется отложить учёбу на осень. Но пока остальные отдыхают 😅, мы предлагаем без лишней конкуренции прокачать свой workflow и начать закрывать тикеты в три раза быстрее.

Тема:
«AI-инструменты в разработке: пишем код быстрее»


Мы покажем живой разбор реального проекта: как с помощью AI-ассистентов мгновенно разбираться в чужой кодовой базе, искать нужные участки и собирать Pull Request. Только рабочие промпты, которые сэкономят вам часы рутины.

🎙 Спикер — Ольга Лукьянова, руководитель команды в SourceCraft (18+ лет развивала инструменты в JetBrains и Huawei).

👉 Узнать, как ускорить разработку с AI
🍕 Проекции на поля структур

В прошлый раз разобрались, что такое проекция и зачем она нужна. Теперь — самый частый сценарий на практике: структура с кучей полей, и алгоритмы хочется гонять по разным из них, не плодя лямбды.

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::lessstd::greater — перевернули порядок, поле не трогали.
Компаратор можно сократить до {}, но не выбросить совсем:

std::ranges::sort(people, {}, &Person::age);   // ок
std::ranges::sort(people, &Person::age); // не компилируется


Проекция — третий аргумент, поэтому без компаратора &Person::age уедет в его слот. {} этот слот занимает и подставляет дефолт — а дефолт тут std::ranges::less, не std::less (на наших данных без разницы).


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

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

#константная_правильностьx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3👾1
🎮 Пишем игру на C++ и Qt с нуля

Серия для тех, кто хочет не читать про язык, а собрать рабочий проект — пусть и простой. 31 видео, от пустого окна до играбельного билда.

– Qt как обвязка: GUI, event loop и сигналы-слоты
– Низкий порог входа: рассчитано на тех, кто только осваивает C++
– Цельный результат: на выходе — законченная игра

👉 Плейлист


✏️ Подойдёт такой формат «учимся на проекте» для онбординга джунов, или для С++ полезнее сразу копать в стандарт и инструментарий?


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

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

#свежак
14😁1
🐸 Подборка вакансий для C++-разработчиков за неделю

C++ Developer — Офис (Санкт-Петербург)

Программист С++ — Офис (Москва)

C++ RTOS (Networking) Developer — Удалённо

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

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

#вакансии
😁2
👀 Умеете строить предсказуемую архитектуру с ИИ? Станьте спикером Proglib academy

Мы в Proglib.academy запускаем курс по Spec-Driven Development (SDD) — учим разработчиков управлять ИИ-агентами (Cursor, Copilot, Claude) через спецификации, контекст и тесты, чтобы не перепроверять за нейросетью каждую строку.

Для этого курса мы ищем классных спикеров-практиков.


➡️ Что требуется от вас?

BigTech бэкграунд: опыт работы разработчиком, тимлидом или архитектором в крупных технологических компаниях.
Опыт управляемой разработки с ИИ: вы на практике знаете, как встроить AI-инструменты в личный или командный workflow (от постановки задачи до ревью AI-кода).
Системный подход: умение превращать хаотичную генерацию кода в предсказуемый инженерный процесс (работа с архитектурой, чек-листами, легаси и покрытием тестами).

➡️ Что мы предлагаем?

● Достойную оплату за подготовку материалов и проведение занятий.
● Мощное продвижение личного бренда через медиаресурсы Proglib (наша аудитория — 1 млн+ айтишников).
● Возможность публиковать свои экспертные материалы и статьи на наших площадках.
● Доступ к сильному и закрытому профессиональному сообществу.

Также мы ищем консультанта программы.

Если вы практикующий эксперт и готовы помочь нам отвалидировать программу курса, дать рекомендации по актуальности тем и финальным результатам обучения — мы вас очень ждем.

➡️ Как с нами связаться:

Telegram: @alinaa_kh
E-mail: alina@proglib.io
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2👾1
This media is not supported in your browser
VIEW IN TELEGRAM
😋 Когда на собеседовании меня просят показать какую многозадачность я имел в виду в своём резюме.

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

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

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

#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
🤖 Запускаем новый курс: «Spec-Driven Development»!

Всем надоело, что ИИ-агенты (Cursor, Claude) генерируют сотни строк хаотичного кода, который приходится переписывать. Дело не в нейросети, а в том, что вы заставляете её угадывать условия задачи.

На курсе вы освоите методологию SDD (Spec-Driven Development) — управление ИИ через спецификации (спеки) и тесты вместо «вайб-кодинга».

Как это работает?

До генерации кода вы фиксируете в спеке контракты, инварианты и граничные случаи. Документ четко определяет ЧТО делать, сводя лотерею в PR к нулю.

За 8 недель с экспертами из BigTech вы:

🔹 Встроите ИИ в личный или командный workflow.
🔹 Превратите генерацию кода в предсказуемый инженерный процесс.
🔹 Перестанете перепроверять за моделями каждую строчку.

📖 Полный разбор методологии с примерами и готовый промпт для генерации спеки — в нашей статье

👉 Освоить SDD и ускорить разработку
1👍1
🧁 У канала всё есть — кроме твоего буста

Лайк ставится за секунду и забывается. Буст — это другое. Это твой голос, который реально поднимает канал на новый уровень и открывает то, что без вас недоступно.

Думаешь, один голос ничего не решает? Решает. Каждый буст — это +1 к возможностям канала и +100 к полезному контенту для тебя.

Что ты разблокируешь

Сторис — формат коротких, но ценных находок, которые жалко прятать «в стол»:

• рабочие инструменты, которые экономят часы
• технические заметки на пару абзацев
• ссылки, которые хочется сохранить
• вопросы и задачки для программистов
• быстрые опросы, где решает большинство


⤵️ Кнопка буста — прямо под этим постом. Одно нажатие — и ты уже двигаешь канал вперёд. Поехали 🚀

➡️ Буст канала

Библиотека C/C++ разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1😁1
🎬 Где ломаются архитектуры ИИ-агентов и как этого избежать: запись урока от Proglib.Academy и cloud․ru

Proglib.аcademy вместе с cloud․ru провели вебинар, где разобрали реальные боли проектирования автономных систем. Вы просили запись встречи — она уже в открытом доступе!

Что внутри:

— критерии выбора между одним агентом и мультиагентной системой;
— разбор популярных архитектурных ошибок;
— реальные ограничения современных ИИ-агентов;
— практические рекомендации по проектированию агентных систем.

👉 Посмотреть запись можно тут:
VK
YouTube
🍟 Задача на выходные: свой promise/future

Лучший способ понять std::promise — собрать его. Допиши общее состояние (shared state) на мьютексе и condition_variable.

template <class T>
struct SharedState {
std::mutex m;
std::condition_variable cv;
std::optional<T> value;
bool ready = false;

void set(T v) {
// TODO: под мьютексом положить value, поднять ready, разбудить ждущих
}
T get() {
// TODO: дождаться ready под cv, вернуть value
}
};


‼️ Условие: get() блокируется, пока не вызовут set(), и корректно работает, если set() случился до get(). «Ага-момент» — почему именно cv.wait с предикатом, а не голый wait.


✍️ Реализацию присылай в комментариях


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

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

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🎯 IT раскололся: почему у одних специалистов будущее, а у других — тупик

Рынок делится пополам: продуктовые компании забирают себе лучших людей, AI-инфраструктуру и все деньги. Остальным достается борьба за крохи с демпингом и выгоранием. Это уже происходит. Читай, пока есть время что-то изменить.

👉 Читать...

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

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

#свежак
😁3👍2🥱2😢1
📰 Свеженькое из мира C++

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

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

Пишем игру на C++ и Qt с нуля — cерия туториалов для тех, кто хочет собрать рабочий проект Qt
std::copyable_function — альтернатива std::function появившаяся в C++26
IT раскололся: почему у одних специалистов будущее, а у других — тупик — разделение IT на продуктовый мир, где деньги и сильные инженеры, и аутсорс, которому достаются демпинг и выгорание


📙 Ranges:

Проекции на поля структур

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

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

#свежак
🥰1