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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
Download Telegram
Чек-лист: Автоматическое форматирование кода для единообразного стиля в команде


🎯 Настройка и конфигурация

✓ Создайте .clang-format файл в корне проекта
✓ Выберите базовый стиль
✓ Настройте отступы, скобки и переносы строк
✓ Добавьте специфичные правила для вашего проекта

🎯 Интеграция с инструментами

✓ Настройте автоформатирование в IDE
✓ Используйте pre-commit hooks для Git
✓ Интегрируйте с CI для проверки стиля
✓ Добавьте команды форматирования в CMake

🎯 Командная работа

✓ Документируйте стиль кода в README
✓ Проводите code review с проверкой стиля
✓ Используйте .clang-format-ignore для исключений
✓ Настройте автоматическое форматирование

🎯 Продвинутые возможности

✓ Используйте clang-format-diff для частичного форматирования
✓ Настройте языкоспецифичные правила
✓ Применяйте макросы для кастомизации
✓ Интегрируйте с другими linter'ами

Как измерить результат: Подсчитайте количество комментариев по стилю кода в code review.

Библиотека C/C++ разработчика #буст
🔥4🥰1🤩1
🧠 «Поиграйся с LLM, почитай про агентов — и сам поймёшь, как это работает»

Это один из самых бесполезных советов, который мы слышали в адрес тех, кто хочет разобраться в AI-агентах.

Поиграйся — это как?
Потыкать пару промптов в ChatGPT и решить, что теперь ты можешь строить мультиагентные системы? 🤡 Ну-ну.

AI-агенты — это не «очередная обёртка над GPT». Это архитектура. Состояния, инструменты, цепочки вызовов, память, оценка качества и адекватность поведения.

➡️ Чтобы разобраться, нужно:
— понимать, как устроен LLM под капотом
— уметь подключать внешние данные (RAG, retrievers, rerankers)
— уметь масштабировать и дебажить поведение агентов
— разбираться в фреймворках вроде AutoGen, CrewAI, LangChain
— знать, как всё это тащится в прод

Если вы реально хотите не «поиграться», а научиться собирать рабочие агентные системы — у нас стартует курс по разработке ИИ-агентов 5го июля

P.S: не упусти свой шанс, промокод: LASTCALL на 10.000₽
😁1
⚠️ Частая ошибка: почему std::vector<bool> — это не то, что вы думаете

Это один из самых неожиданных моментов в STL. std::vector<bool> ведет себя не как обычный vector!


// Обычный vector - все работает как ожидается
std::vector<int> vec_int = {1, 2, 3};
int& ref = vec_int[0]; // Настоящая ссылка
int* ptr = &vec_int[0]; // Настоящий указатель

// vector<bool> - сюрприз!
std::vector<bool> vec_bool = {true, false, true};
// auto& ref = vec_bool[0]; // Ошибка компиляции!
// bool* ptr = &vec_bool[0]; // Тоже ошибка!

// Это работает, но ref - не настоящая ссылка
auto ref = vec_bool[0]; // Тип: std::vector<bool>::reference
ref = false; // Работает, но через прокси-объект

// Если нужен настоящий vector<bool>
std::deque<bool> real_bool_container = {true, false, true};
bool& real_ref = real_bool_container[0]; // Настоящая ссылка!


Причина: std::vector<bool> оптимизирован для экономии памяти (1 бит на элемент), поэтому не может дать настоящие ссылки.


🔎 Сталкивались ли вы с этой особенностью? Как решали проблему?

Библиотека C/C++ разработчика #буст
8🌚5
👾 C++26 — что нового и почему стандартизация это так сложно

💡 Антон Полухин и Павел Новиков разбирают, что нового в C++26 и почему процесс стандартизации настолько сложен.

Ключевые моменты обсуждения:

• контракты и рефлексия наконец добавлены в C++26
• стандартизация учитывает интересы всех участников экосистемы
• модули в C++20 — пример удачного компромисса после 5 лет обсуждений

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

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

Вы узнаете, что медленность стандартизации — это не бюрократия, а необходимость найти решение, которое работает для всех участников экосистемы, от разработчиков встроенных систем до авторов высокоуровневых библиотек.

👉 Видео

Библиотека C/C++ разработчика #буст
3👍2
🧠 Как алгоритмическое мышление повышает производительность приложений

За последние годы я не раз сталкивался с проектами, где смена всего одного неудачного алгоритма в корне меняла картину. Внезапно запросы начинали выполняться за миллисекунды, а пользователи переставали жаловаться на «тормоза». Обычно такие решения находят программисты, которые участвовали в соревнованиях по спортивному программированию. И я хочу рассказать, почему их мышление помогает в реальной работе.

👉 Продолжение в статье

Библиотека C/C++ разработчика
🔥31
🔥 Сегодня стартует курс по AI-агентам!

Онбординг уже сегодня, но ещё можно вписаться — ПОСЛЕДНИЙ ШАНС это сделать.

Мы больше года собирали мультиагентные системы: экспериментировали, переделывали и в итоге — оформили всё в 5 плотных вебинаров.

😤 «А можно ли вообще научиться чему-то за 5 вебинаров?!»

Если вы хотите просто послушать — нет
Если хотите разбираться и делать — да

➡️ На курсе:
— мы не читаем слайдики, а работаем в коде в реальном времени
— можно задавать вопросы прямо на вебинаре
— после каждого вебинара есть домашка и поддержка в чате

И главное — вы получаете системное понимание, а не набор хаотичных туториалов.

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

Знакомьтесь, эксперт нашего курса:
Никита Зелинский — Chief Data Scientist МТС, Head of ML Platforms, руководитель центра компетенций по Data Science.

Стартуем сегодня — забронируй свое место
1🥱1
👾 Как эффективнее изучать C++ в 2025?

Книжники (я такой): «Effective C++, More Effective C++, Meyers — это классика! Книга дает систематизированные знания.»

Видео-фанаты: «YouTube, Coursera, Udemy — современно, наглядно, можно на 2x скорости!»

Практики: «Лучший способ изучить C++ — читать исходники больших проектов и писать код!»

Реальный опыт: Прочитал 15 книг по C++, но реальное понимание пришло только после года работы с legacy кодом на 500k строк 😅

Провокационный факт: Встречал разработчиков, которые знают наизусть «Effective C++», но не могут написать простой RAII wrapper.

😼 Как изучаешь новое?

❤️ Книги (классическая база)
🔥 Видео (современный подход)
👏 Практика (сразу код)
🌚 Смешанный подход

Библиотека C/C++ разработчика
🌚3212🔥5👏3🤔1
📰 Свеженькое из мира C++

Недельный дайджест новостей о разных аспектах программирования и интересных проектах в мире C++.

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

C++26 получил Reflection — обзор новой фитчи
Почему std::vector из bool'ов — это не то, что вы думаете — обзор std::vector из bool'ов
C++26 — что нового и почему стандартизация это так сложно — обзор фишек нового стандарта
Как алгоритмическое мышление повышает производительность приложений — статья о улучшении производительности

😎 Полезное:

Использование Boost.Program_options— пример использования библиотеки
Расширение функциональности с помошью AI — пример использования искусственного интеллекта
Форматирование кода для единообразного стиля — чек-лист по форматированию

🖨Интересные проекты:

Ladybird — независимый веб-браузер
PCSX2 — бесплатный эмулятор PlayStation 2 (PS2) с открытым исходным кодом
Serial Studio — кроссплатформенная телеметрическая панель управления

Библиотека C/C++ разработчика #свежак
2🔥1
🏖 Подборка вакансий для C++-разработчиков за неделю


C/C++ Developer — от 350 000 и до 500 000 ₽ Гибрид (Москва)

Разработчик на C++ — от 250 000 и до 350 000 ₽ Офис (Москва)

С/С++ Linux разработчик — до 8000 $ Удалёнка

Разработчик C++ — от 190 000 и до 250 000 ₽ Офис (Москва)

Программист микроконтроллеров C++ STM — от 200 000 ₽ Гибрид (Москва)

C и C++ Developer — от 240 000 до 270 000 ₽ Гибрид (Москва)

C++/Qt Developer (Рефакторинг) — от 260 000 ₽ Гибрид (Москва, Санкт-Петербург)


Библиотека C/C++ разработчика
1👍1
🍪 Doxygen

❗️Проблема:

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


Решение:

Doxygen автоматически генерирует документацию из специальных комментариев в коде. Инструмент создает HTML, PDF и другие форматы документации с диаграммами классов и зависимостей.


✏️ Пример кода:

/**
* @brief Класс для работы с геометрическими фигурами
* @author Имя разработчика
* @date 2024-01-15
*/
class Shape {
protected:
double width; ///< Ширина фигуры
double height; ///< Высота фигуры

public:
/**
* @brief Конструктор с параметрами
* @param w Ширина фигуры (должна быть > 0)
* @param h Высота фигуры (должна быть > 0)
* @throw std::invalid_argument при некорректных параметрах
*/
Shape(double w, double h) : width(w), height(h) {
if (w <= 0 || h <= 0) {
throw std::invalid_argument("Размеры должны быть положительными");
}
}

/**
* @brief Вычисляет площадь фигуры
* @return Площадь в квадратных единицах
* @note Виртуальный метод, должен быть переопределен
*/
virtual double calculateArea() const = 0;

/// Деструктор по умолчанию
virtual ~Shape() = default;
};


# Генерация документации
doxygen -g # Создание конфигурационного файла
doxygen Doxyfile # Генерация документации



Преимущества:

— Автоматическая генерация документации из кода
— Поддержка множества выходных форматов
— Создание диаграмм классов и зависимостей
— Синхронизация документации с кодом


🐥 А как вы пишите документацию? Пишите в комментариях.


🐸Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3🥰1
🌀 Тезисы о std::set и std::multiset в C++

💡 Максим Бабенко разбирает ключевые различия между std::set и std::multiset и показывает практические примеры их использования.

❗️ Ключевые моменты статьи:
std::set хранит только уникальные элементы, std::multiset допускает дубликаты
• операции erase() ведут себя по-разному в двух контейнерах
• методы поиска и работы с диапазонами имеют особенности

Основной фокус — практические различия в поведении методов insert(), erase(), find() и equal_range() для каждого типа контейнера.

Особенно полезно для разработчиков, которые активно используют STL и хотят избежать неожиданного поведения при работе с ассоциативными контейнерами.

Помните: в std::multiset метод erase(value) удаляет ВСЕ элементы с данным значением, а не только один. Для удаления единственного элемента используйте erase(iterator).

👉 Статья

Библиотека C/C++ разработчика
👍1
🚀 std::unreachable в C++23

Компилятор не всегда понимает, что некоторые участки кода недостижимы. std::unreachable() помогает ему генерировать более оптимальный код.


📋 Пошаговое решение:

1️⃣ Подключите заголовок
#include <utility>  // C++23


2️⃣ Используйте в switch без default

enum class Color { RED, GREEN, BLUE };

std::string colorToString(Color c) {
switch(c) {
case Color::RED: return "red";
case Color::GREEN: return "green";
case Color::BLUE: return "blue";
}
std::unreachable(); // Говорим компилятору: сюда не попадём!
}


3️⃣ Применяйте в условных блоках

int divide(int a, int b) {
if (b != 0) {
return a / b;
}

// Логически сюда не должны попасть
handleError(); // Наша обработка
std::unreachable(); // Оптимизация для компилятора
}



⚠️ Частые ошибки:

Неправильно: Использовать когда код действительно достижим
Неправильно: Забывать про обработку ошибок перед unreachable()
Правильно: Использовать только когда логически уверены в недостижимости


🎯 Практический совет:

std::unreachable() - это контракт с компилятором. Если код всё-таки достигнет этой точки, поведение неопределено. Используйте только когда на 100% уверены.


🎯 Альтернатива:

В старых стандартах используйте __builtin_unreachable() (GCC/Clang) или __assume(false) (MSVC).

🐸Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8
Первый вебинар нашего курса по AI-агентам уже прошёл!

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

Первые слушатели уже оставили фидбэки — и, кажется, мы попали в точку:
— «теперь наконец понял, как выбирать модели под задачу — раньше брал первую попавшуюся»
— «без лишнего, по делу, в лайве — кайф»
— «огонь, ожидания 100% оправданы лично у меня»

Если хотели вписаться, но сомневались — ещё не поздно. Вебинары идут вживую, записи сохраняются, чат работает, материалы открыты.

Ещё можно догнать и пройти всё вместе с потоком.

👉 Залетай на курс