💡 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🔥6👍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
🔥10👍1
Forwarded from Proglib.academy | IT-курсы
🔒 Оптимистическая vs пессимистическая блокировка: как выбрать и не пожалеть
Что произойдет, если несколько пользователей одновременно начнут менять одни и те же данные? Скорее всего — потеря изменений и ошибки.
Чтобы этого избежать, в системах используются блокировки: пессимистические — когда конфликтам не дают случиться, и оптимистические — когда система проверяет их только перед сохранением.
Разбираемся, как работают блокировки и какая из них лучше подойдет твоему приложению.
🔗 Читать статью
🏃♀️ Proglib Academy
#буст
Что произойдет, если несколько пользователей одновременно начнут менять одни и те же данные? Скорее всего — потеря изменений и ошибки.
Чтобы этого избежать, в системах используются блокировки: пессимистические — когда конфликтам не дают случиться, и оптимистические — когда система проверяет их только перед сохранением.
Разбираемся, как работают блокировки и какая из них лучше подойдет твоему приложению.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4💯1
Правильная обработка ошибок — разница между надёжным и хрупким кодом.
✓ Бросание исключений по значению, ловля по ссылке
✓ Использование стандартных исключений 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
❤7😁1
This media is not supported in your browser
VIEW IN TELEGRAM
VK проводит Weekend Offer для бэкенд-разработчиков и ML-инженеров. Это отличная возможность получить офер за 2 дня и не проходить много этапов.
Ищут бэкендеров со знанием Java, Go, Python или C++.
И MLщиков, с навыками в Classic ML, RecSys, NLP/LLM, CV, Speech.
Важный момент: ищут коллег с опытом коммерческой разработки от трех лет.
Совпадает? Тогда у вас есть все шансы получить приглашение на работу за 2 дня: технические собеседования 4 октября, а финалы, знакомство с командами и офер 5 октября.
Отправляйте заявку до 2 октября и станьте частью VK! Подробнее — на сайте.
Реклама: ООО «ВК» ИНН 7743001840
Ищут бэкендеров со знанием Java, Go, Python или C++.
И MLщиков, с навыками в Classic ML, RecSys, NLP/LLM, CV, Speech.
Важный момент: ищут коллег с опытом коммерческой разработки от трех лет.
Совпадает? Тогда у вас есть все шансы получить приглашение на работу за 2 дня: технические собеседования 4 октября, а финалы, знакомство с командами и офер 5 октября.
Отправляйте заявку до 2 октября и станьте частью VK! Подробнее — на сайте.
Реклама: ООО «ВК» ИНН 7743001840
😁1
🐸 Подборка вакансий для C++-разработчиков за неделю
Программист Embedded C++ — от 200 000 и до 300 000 ₽ Офис (Санкт-Петербург)
Системный программист C++ — от 180 000 и до 350 000 ₽ Офис (Екатеринбург)
Разработчик C++/Rust (SDN dataplane, DPDK/DOCA API) — от 300 000 и до 600 000 ₽ Офис/удаленно/гибрид (Москва)
C++ Developer — от 300 000 ₽ Удаленно/офис
C++ developer [Middle] — до 350 000 ₽ Удаленно/Офис (Омск, Новосибирск, Санкт-Петербург)
C++ / Qt Разработчик — до 370 000 ₽ Офис (Республика Татарстан, ОЭЗ «Алабуга»)
Библиотека C/C++ разработчика
Программист Embedded C++ — от 200 000 и до 300 000 ₽ Офис (Санкт-Петербург)
Системный программист C++ — от 180 000 и до 350 000 ₽ Офис (Екатеринбург)
Разработчик C++/Rust (SDN dataplane, DPDK/DOCA API) — от 300 000 и до 600 000 ₽ Офис/удаленно/гибрид (Москва)
C++ Developer — от 300 000 ₽ Удаленно/офис
C++ developer [Middle] — до 350 000 ₽ Удаленно/Офис (Омск, Новосибирск, Санкт-Петербург)
C++ / Qt Разработчик — до 370 000 ₽ Офис (Республика Татарстан, ОЭЗ «Алабуга»)
Библиотека C/C++ разработчика
👍2🔥1
🤫 Курс «ИИ-агенты для DS-специалистов»
Каждый технологический скачок оставляет позади тех, кто «подождал ещё чуть-чуть». ИИ-агенты — это новый рывок.
Уже через пару лет именно они будут драйвить аналитику и автоматизацию. Хотите остаться на гребне?
🖥️ На курсе «ИИ-агенты для DS-специалистов» мы разберём:
— создание AI-агентов с нуля
— сборку собственной RAG-системы
— интеграцию LLM под задачи бизнеса
📌 Курс подходит:
→ ML/AI инженерам (middle+ / senior)
→ Data Scientists
→ Backend и platform-инженерам
→ Advanced CS/DS студентам
⚡️ Старт уже скоро — 3 октября.
💰 До 28 сентября действует скидка — 57.000 ₽ вместо 69.000 ₽ (по промокоду datarascals).
🔗 Узнать больше о курсе и записаться
З.ы. если вы не успели на вебинар «ИИ-агенты: новая фаза развития искусственного интеллекта» — запись уже доступна
Каждый технологический скачок оставляет позади тех, кто «подождал ещё чуть-чуть». ИИ-агенты — это новый рывок.
Уже через пару лет именно они будут драйвить аналитику и автоматизацию. Хотите остаться на гребне?
🖥️ На курсе «ИИ-агенты для DS-специалистов» мы разберём:
— создание AI-агентов с нуля
— сборку собственной RAG-системы
— интеграцию LLM под задачи бизнеса
📌 Курс подходит:
→ ML/AI инженерам (middle+ / senior)
→ Data Scientists
→ Backend и platform-инженерам
→ Advanced CS/DS студентам
⚡️ Старт уже скоро — 3 октября.
💰 До 28 сентября действует скидка — 57.000 ₽ вместо 69.000 ₽ (по промокоду datarascals).
🔗 Узнать больше о курсе и записаться
З.ы. если вы не успели на вебинар «ИИ-агенты: новая фаза развития искусственного интеллекта» — запись уже доступна
😁1
Длинные или короткие имена функций/переменных?
Anonymous Poll
42%
Длинные и описательные - самодокументируемый код
16%
Короткие и ёмкие - меньше печатать
18%
Зависит от области видимости
4%
Как в стандартной библиотеке
20%
Главное - не использовать однобуквенные
😁1