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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
📅 24 сентября в 19:00 МСК — бесплатный вебинар с Максимом Шаланкиным.

Тема: «ИИ-агенты: новая фаза развития искусственного интеллекта».

🔹 Почему все говорят про ИИ-агентов и куда вливаются миллиарды инвестиций.
🔹 Чем они отличаются от ChatGPT и обычных ботов.
🔹 Как работает цикл агента: восприятие → планирование → действие → обучение.
🔹 Живое демо простого агента.
🔹 Потенциал для бизнеса: автоматизация процессов и ROI до 80%.

Не придёшь — будешь потом рассказывать, что «агенты — это как чат-боты», и ловить косые взгляды от коллег 😏

👉 Регистрируйтесь через форму на лендинге
🐸 Подборка вакансий для C++-разработчиков за неделю

Разработчик C++ — от 130 000 ₽ Удалёнка

Программист на C++ под Linux — от 150 000 до 250 000 ₽ Удалёнка

Разработчик C/VPP — Удалёнка

Разработчик С++ (middle) — от 220 000 до 300 000 ₽ Удалёнка

Библиотека C/C++ разработчика
👍2
⚡️ Бесплатный вебинар — ИИ-агенты: новая фаза развития AI

24 сентября в 19:00 МСК состоится бесплатный вебинар с Максимом Шаланкиным — Data Science Team Lead в финтех-команде MWS, а познакомиться с ним ближе можно в его тг-канале.

Тема:
«ИИ-агенты: новая фаза развития искусственного интеллекта».


На вебинаре разберёмся, почему агенты — это следующий шаг после ChatGPT, чем они отличаются от обычных моделей и как уже приносят бизнесу ROI до 80%. А дальше я покажу, как эта тема ложится в наш курс по ИИ-агентам, который разработан под руководством Никиты Зелинского.

Подробности рассказываем в гс выше — включай, чтобы не пропустить.
😁2
📰 Свеженькое из мира C++

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

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

Visual Studio 2026 Insiders уже доступна — большое обновление для VS
5 правил успешного корпоратива — способ организации корпоратива
Работа с типами в C++ — углублённый разбор работы с типами

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

QGIS — это полнофункциональная, бесплатная и с открытым исходным кодом ГИС
ArduPilot — полнофункциональное и надежное программное обеспечение для автопилота с открытым исходным кодом
Luau — быстрый, небольшой и безопасный встраиваемый язык сценариев, производный от Lua.

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

#свежак
2👍2
🔥 Не пропустите событие осени для AI-комьюнити

24 сентября, 19:00 Мск — бесплатный вебинар с Максимом Шаланкиным «ИИ-агенты: новая фаза развития искусственного интеллекта»

😤 Пока все спорят, «боты это или нет», мы покажем, как работают настоящие агенты: с планированием, инструментами и памятью. За час Максим разберёт:
— почему ИИ-агенты сейчас на пике инвестиций
— чем они отличаются от ChatGPT и обычных моделей
— цикл агента: восприятие → планирование → действие → обучение
— живое демо простого агента
— как бизнес уже получает ROI до 80%

⚡️ Хотите спросить у Максима всё, что обычно остаётся «за кадром»? Ловите шанс — только в прямом эфире.

Мест мало, регистрация закроется, как только забьём комнату
😁2
🌻 std::type_identity — предотвращение template argument deduction

Если нужно запретить автоматический вывод типов для некоторых параметров шаблона, то std::type_identity поможет решить эту проблему.

std::type_identity из C++20 — простая обертка, которая предотвращает template argument deduction. Полезно для создания non-deduced contexts.


👉 Определение:
template<typename T>
struct type_identity { using type = T; };

template<typename T>
using type_identity_t = typename type_identity<T>::type;



💡 Примеры использования:
// БЕЗ type_identity - тип T выводится автоматически
template<typename T>
void convert_and_print(T from, T to) { /* ... */ }

convert_and_print(1, 2.5); // Ошибка: T не может быть int и double

// С type_identity - принуждаем указать тип явно
template<typename T>
void convert_and_print(T from, std::type_identity_t<T> to) {
std::cout << static_cast<T>(to) << std::endl;
}

convert_and_print<double>(1, 2.5); // OK: T = double}



💡 Функции сравнения:
template<typename T>
bool equal(const T& a, std::type_identity_t<const T&> b) {
return a == b;
}

std::string str = "hello";
equal(str, "hello"); // OK: T = std::string, второй параметр - const char*



🔍 Factory с явным указанием типа:
template<typename T>
std::unique_ptr<T> make_initialized(std::type_identity_t<T> init_value) {
return std::make_unique<T>(init_value);
}

// Тип нужно указать явно
auto ptr = make_initialized<std::string>("Hello World");


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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍4
💡 Pointer Tagging в C++: искусство упаковки битов в указатель

Автор статьи рассказывает о технике pointer tagging — упаковке дополнительных данных прямо в указатели, используя неиспользуемые биты.

Ключевые моменты статьи:

• 64-битный указатель использует только 48 бит для адресации, оставляя 16 бит свободными
• malloc выравнивает память по 16-байтным границам, освобождая нижние 4 бита
• в итоге получается 20 свободных бит для хранения метаданных

Основной фокус — практическая реализация tagged_ptr в C++ с автоматическим маскированием битов и поддержкой стандартных операторов указателей.

Особенно актуально для разработчиков высокопроизводительных систем, работающих с динамическим полиморфизмом и древовидными структурами данных.

Вы узнаете, как Chrome V8 использует эту технику для различения целых чисел и ссылок на объекты, а ядро Linux — для хранения цвета узла в красно-чёрном дереве прямо в указателе на родителя.

➡️ Статья

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

#буст
9🔥5👍1🥰1
Стиль написания кода набирающий популярность😋🤣

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


#развлекалово
😁18🥱9🤔51🌚1
Сегодня премьера

В 19:00 МСК стартует бесплатный вебинар с Максимом Шаланкиным«ИИ-агенты: новая фаза развития искусственного интеллекта».

В программе:
— почему агенты ≠ чат-боты;
— живое демо простого агента;
— и как эта тема встроена в курс, который разработан под руководством Никиты Зелинского.

Это прямой эфир: подключиться можно через лендинг курса.
1😁1
🔍 Какой алгоритм поиска выбрать?

Выбор неправильного алгоритма поиска может в разы замедлить программу.


✏️ Выбираем по ситуации:

1️⃣ Неупорядоченные данные → std::find (O(n)):

std::vector<int> nums = {3, 1, 4, 1, 5};
auto it = std::find(nums.begin(), nums.end(), 4);
if (it != nums.end()) {
std::cout << "Found at position " << std::distance(nums.begin(), it);
}



2️⃣ Упорядоченные данные → std::binary_search (O(log n)):

std::vector<int> sorted_nums = {1, 2, 3, 4, 5};
if (std::binary_search(sorted_nums.begin(), sorted_nums.end(), 3)) {
std::cout << "Found!";
}



3️⃣ Частые поиски → std::unordered_set (O(1) average):

std::unordered_set<int> lookup = {1, 3, 5, 7, 9};
if (lookup.find(5) != lookup.end()) {
std::cout << "Found instantly!";
}



4️⃣ Поиск с предикатом → std::find_if:

auto even = std::find_if(nums.begin(), nums.end(), 
[](int n) { return n % 2 == 0; });



Частая ошибка: Использование find на отсортированных данных.


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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍1
🔒 Оптимистическая vs пессимистическая блокировка: как выбрать и не пожалеть

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

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

Разбираемся, как работают блокировки и какая из них лучше подойдет твоему приложению.

🔗 Читать статью

🏃‍♀️ Proglib Academy

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4
✏️ Чек-лист: Error Handling в C++

Правильная обработка ошибок — разница между надёжным и хрупким кодом.


💡 Исключения

✓ Бросание исключений по значению, ловля по ссылке
✓ Использование стандартных исключений STL где возможно
✓ RAII для автоматической очистки при исключениях
✓ Документирование исключений в комментариях


💡 Альтернативы исключениям

✓ std::optional для функций, которые могут не вернуть значение
✓ std::expected (C++23) для возврата ошибок
✓ Error codes для низкоуровневого кода
✓ Паттерн Result<T, Error> для функционального стиля


💡 Exception Safety

✓ Функции помечены как noexcept где гарантируется
✓ Strong exception гарантия в критичных местах
✓ Правильная обработка в деструкторах (never throw)


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

#код_ревью
Please open Telegram to view this post
VIEW IN TELEGRAM
2