🏖️ Регулярные типы в C++ — фундамент безопасного кода
На еженедельной лекции «Параллельный C++ для научных приложений» доктор Хартмут Кайзер углубляется в изучение типов и объектов в C++, сосредотачиваясь на том, как их свойства влияют на корректность и эффективность кода.
❗ Ключевые моменты:
• четыре аспекта типа: объем памяти, интерпретация битов, набор значений и допустимые операции
• разница между эквивалентностью и равенством — не все равные объекты эквивалентны
• правильная реализация конструкторов копирования должна обеспечивать равенство объектов
Основной фокус — понимание того, что тип определяет не только данные, но и набор операций, которые гарантируют безопасную работу с STL-контейнерами и алгоритмами.
Особенно актуально для разработчиков, создающих собственные классы и использующих их в std::vector, std::set и других контейнерах стандартной библиотеки.
👉 Видео
Библиотека C/C++ разработчика
На еженедельной лекции «Параллельный C++ для научных приложений» доктор Хартмут Кайзер углубляется в изучение типов и объектов в C++, сосредотачиваясь на том, как их свойства влияют на корректность и эффективность кода.
❗ Ключевые моменты:
• четыре аспекта типа: объем памяти, интерпретация битов, набор значений и допустимые операции
• разница между эквивалентностью и равенством — не все равные объекты эквивалентны
• правильная реализация конструкторов копирования должна обеспечивать равенство объектов
Основной фокус — понимание того, что тип определяет не только данные, но и набор операций, которые гарантируют безопасную работу с STL-контейнерами и алгоритмами.
Особенно актуально для разработчиков, создающих собственные классы и использующих их в std::vector, std::set и других контейнерах стандартной библиотеки.
👉 Видео
Библиотека C/C++ разработчика
❤3👍1
Forwarded from Библиотека задач по C++ | тесты, код, задания
Forwarded from Библиотека задач по C++ | тесты, код, задания
Какие типы у x и y?
Anonymous Quiz
14%
vector<int>, vector<int>
29%
initializer_list<int>, initializer_list<int>
31%
initializer_list<int>, int
8%
Ошибка компиляции
19%
array<int,3>, array<int,1>
😁20
This media is not supported in your browser
VIEW IN TELEGRAM
📅 24 сентября в 19:00 МСК — бесплатный вебинар с Максимом Шаланкиным.
Тема: «ИИ-агенты: новая фаза развития искусственного интеллекта».
🔹 Почему все говорят про ИИ-агентов и куда вливаются миллиарды инвестиций.
🔹 Чем они отличаются от ChatGPT и обычных ботов.
🔹 Как работает цикл агента: восприятие → планирование → действие → обучение.
🔹 Живое демо простого агента.
🔹 Потенциал для бизнеса: автоматизация процессов и ROI до 80%.
Не придёшь — будешь потом рассказывать, что «агенты — это как чат-боты», и ловить косые взгляды от коллег 😏
👉 Регистрируйтесь через форму на лендинге
Тема: «ИИ-агенты: новая фаза развития искусственного интеллекта».
🔹 Почему все говорят про ИИ-агентов и куда вливаются миллиарды инвестиций.
🔹 Чем они отличаются от ChatGPT и обычных ботов.
🔹 Как работает цикл агента: восприятие → планирование → действие → обучение.
🔹 Живое демо простого агента.
🔹 Потенциал для бизнеса: автоматизация процессов и ROI до 80%.
Не придёшь — будешь потом рассказывать, что «агенты — это как чат-боты», и ловить косые взгляды от коллег 😏
👉 Регистрируйтесь через форму на лендинге
🐸 Подборка вакансий для C++-разработчиков за неделю
Разработчик C++ — от 130 000 ₽ Удалёнка
Программист на C++ под Linux — от 150 000 до 250 000 ₽ Удалёнка
Разработчик C/VPP — Удалёнка
Разработчик С++ (middle) — от 220 000 до 300 000 ₽ Удалёнка
Библиотека C/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%. А дальше я покажу, как эта тема ложится в наш курс по ИИ-агентам, который разработан под руководством Никиты Зелинского.
Подробности рассказываем в гс выше — включай, чтобы не пропустить.
24 сентября в 19:00 МСК состоится бесплатный вебинар с Максимом Шаланкиным — Data Science Team Lead в финтех-команде MWS, а познакомиться с ним ближе можно в его тг-канале.
Тема:
«ИИ-агенты: новая фаза развития искусственного интеллекта».
На вебинаре разберёмся, почему агенты — это следующий шаг после ChatGPT, чем они отличаются от обычных моделей и как уже приносят бизнесу ROI до 80%. А дальше я покажу, как эта тема ложится в наш курс по ИИ-агентам, который разработан под руководством Никиты Зелинского.
Подробности рассказываем в гс выше — включай, чтобы не пропустить.
😁2
Какой компилятор самый лучший?
Anonymous Poll
52%
GCC - свободное ПО навсегда
37%
Clang - современность и скорость
12%
MSVC - интеграция с Windows
4%
Intel ICC - максимальная оптимизация
23%
Они все одинаково глючные
😁3
📰 Свеженькое из мира C++
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😜 Интересное:
• Visual Studio 2026 Insiders уже доступна — большое обновление для VS
• 5 правил успешного корпоратива — способ организации корпоратива
• Работа с типами в C++ — углублённый разбор работы с типами
🔥 Интересные проекты:
• QGIS — это полнофункциональная, бесплатная и с открытым исходным кодом ГИС
• ArduPilot — полнофункциональное и надежное программное обеспечение для автопилота с открытым исходным кодом
• Luau — быстрый, небольшой и безопасный встраиваемый язык сценариев, производный от Lua.
Библиотека C/C++ разработчика
#свежак
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😜 Интересное:
• Visual Studio 2026 Insiders уже доступна — большое обновление для VS
• 5 правил успешного корпоратива — способ организации корпоратива
• Работа с типами в C++ — углублённый разбор работы с типами
🔥 Интересные проекты:
• QGIS — это полнофункциональная, бесплатная и с открытым исходным кодом ГИС
• ArduPilot — полнофункциональное и надежное программное обеспечение для автопилота с открытым исходным кодом
• Luau — быстрый, небольшой и безопасный встраиваемый язык сценариев, производный от Lua.
Библиотека C/C++ разработчика
#свежак
❤2👍2
Forwarded from Библиотека задач по C++ | тесты, код, задания
😁5❤3
🔥 Не пропустите событие осени для AI-комьюнити
24 сентября, 19:00 Мск — бесплатный вебинар с Максимом Шаланкиным «ИИ-агенты: новая фаза развития искусственного интеллекта»
😤 Пока все спорят, «боты это или нет», мы покажем, как работают настоящие агенты: с планированием, инструментами и памятью. За час Максим разберёт:
— почему ИИ-агенты сейчас на пике инвестиций
— чем они отличаются от ChatGPT и обычных моделей
— цикл агента: восприятие → планирование → действие → обучение
— живое демо простого агента
— как бизнес уже получает ROI до 80%
⚡️ Хотите спросить у Максима всё, что обычно остаётся «за кадром»? Ловите шанс — только в прямом эфире.
⏰ Мест мало, регистрация закроется, как только забьём комнату
24 сентября, 19:00 Мск — бесплатный вебинар с Максимом Шаланкиным «ИИ-агенты: новая фаза развития искусственного интеллекта»
😤 Пока все спорят, «боты это или нет», мы покажем, как работают настоящие агенты: с планированием, инструментами и памятью. За час Максим разберёт:
— почему ИИ-агенты сейчас на пике инвестиций
— чем они отличаются от ChatGPT и обычных моделей
— цикл агента: восприятие → планирование → действие → обучение
— живое демо простого агента
— как бизнес уже получает ROI до 80%
⚡️ Хотите спросить у Максима всё, что обычно остаётся «за кадром»? Ловите шанс — только в прямом эфире.
⏰ Мест мало, регистрация закроется, как только забьём комнату
😁2
Если нужно запретить автоматический вывод типов для некоторых параметров шаблона, то
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 свободных бит для хранения метаданных
Основной фокус — практическая реализация
Особенно актуально для разработчиков высокопроизводительных систем, работающих с динамическим полиморфизмом и древовидными структурами данных.
Вы узнаете, как Chrome V8 использует эту технику для различения целых чисел и ссылок на объекты, а ядро Linux — для хранения цвета узла в красно-чёрном дереве прямо в указателе на родителя.
➡️ Статья
Библиотека C/C++ разработчика
#буст
Автор статьи рассказывает о технике pointer tagging — упаковке дополнительных данных прямо в указатели, используя неиспользуемые биты.
❗Ключевые моменты статьи:
• 64-битный указатель использует только 48 бит для адресации, оставляя 16 бит свободными
• malloc выравнивает память по 16-байтным границам, освобождая нижние 4 бита
• в итоге получается 20 свободных бит для хранения метаданных
Основной фокус — практическая реализация
tagged_ptr
в C++ с автоматическим маскированием битов и поддержкой стандартных операторов указателей.Особенно актуально для разработчиков высокопроизводительных систем, работающих с динамическим полиморфизмом и древовидными структурами данных.
Вы узнаете, как Chrome V8 использует эту технику для различения целых чисел и ссылок на объекты, а ядро Linux — для хранения цвета узла в красно-чёрном дереве прямо в указателе на родителя.
➡️ Статья
Библиотека C/C++ разработчика
#буст
❤9🔥5👍1🥰1
❗ Сегодня премьера
В 19:00 МСК стартует бесплатный вебинар с Максимом Шаланкиным — «ИИ-агенты: новая фаза развития искусственного интеллекта».
В программе:
— почему агенты ≠ чат-боты;
— живое демо простого агента;
— и как эта тема встроена в курс, который разработан под руководством Никиты Зелинского.
⏰ Это прямой эфир: подключиться можно через лендинг курса.
В 19:00 МСК стартует бесплатный вебинар с Максимом Шаланкиным — «ИИ-агенты: новая фаза развития искусственного интеллекта».
В программе:
— почему агенты ≠ чат-боты;
— живое демо простого агента;
— и как эта тема встроена в курс, который разработан под руководством Никиты Зелинского.
⏰ Это прямой эфир: подключиться можно через лендинг курса.
❤1😁1
🔍 Какой алгоритм поиска выбрать?
Выбор неправильного алгоритма поиска может в разы замедлить программу.
✏️ Выбираем по ситуации:
1️⃣ Неупорядоченные данные → std::find (O(n)):
2️⃣ Упорядоченные данные → std::binary_search (O(log n)):
3️⃣ Частые поиски → std::unordered_set (O(1) average):
4️⃣ Поиск с предикатом → std::find_if:
❌ Частая ошибка: Использование find на отсортированных данных.
Библиотека C/C++ разработчика
#буст
Выбор неправильного алгоритма поиска может в разы замедлить программу.
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);
}
std::vector<int> sorted_nums = {1, 2, 3, 4, 5};
if (std::binary_search(sorted_nums.begin(), sorted_nums.end(), 3)) {
std::cout << "Found!";
}
std::unordered_set<int> lookup = {1, 3, 5, 7, 9};
if (lookup.find(5) != lookup.end()) {
std::cout << "Found instantly!";
}
auto even = std::find_if(nums.begin(), nums.end(),
[](int n) { return n % 2 == 0; });
Библиотека C/C++ разработчика
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍1
Forwarded from Proglib.academy | IT-курсы
🔒 Оптимистическая vs пессимистическая блокировка: как выбрать и не пожалеть
Что произойдет, если несколько пользователей одновременно начнут менять одни и те же данные? Скорее всего — потеря изменений и ошибки.
Чтобы этого избежать, в системах используются блокировки: пессимистические — когда конфликтам не дают случиться, и оптимистические — когда система проверяет их только перед сохранением.
Разбираемся, как работают блокировки и какая из них лучше подойдет твоему приложению.
🔗 Читать статью
🏃♀️ Proglib Academy
#буст
Что произойдет, если несколько пользователей одновременно начнут менять одни и те же данные? Скорее всего — потеря изменений и ошибки.
Чтобы этого избежать, в системах используются блокировки: пессимистические — когда конфликтам не дают случиться, и оптимистические — когда система проверяет их только перед сохранением.
Разбираемся, как работают блокировки и какая из них лучше подойдет твоему приложению.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4
Правильная обработка ошибок — разница между надёжным и хрупким кодом.
✓ Бросание исключений по значению, ловля по ссылке
✓ Использование стандартных исключений STL где возможно
✓ RAII для автоматической очистки при исключениях
✓ Документирование исключений в комментариях
✓ std::optional для функций, которые могут не вернуть значение
✓ std::expected (C++23) для возврата ошибок
✓ Error codes для низкоуровневого кода
✓ Паттерн Result<T, Error> для функционального стиля
✓ Функции помечены как noexcept где гарантируется
✓ Strong exception гарантия в критичных местах
✓ Правильная обработка в деструкторах (never throw)
Библиотека C/C++ разработчика
#код_ревью
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2