📰 Свеженькое из мира C++
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Полезное:
• Как правильно реализовать оператор присваивания — реализация своего оператора присваивания
• Оптимизация времени компиляции — чек-лист по улучшению времени компиляции кода
• Как внедрять современные проверки С++ — видео о подходах к внедрению инструментов безопасности
🖨Интересные проекты:
• NanaZip — архиватор файлов с открытым исходным кодом (написан на основе исходного кода исходного кода 7-Zip)
• RocksDB — постоянное хранилище ключей и значений для флэш-памяти и оперативной памяти
• Atmosphère — кастомизированная прошивка для Nintendo Switch
Библиотека C/C++ разработчика #буст
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Полезное:
• Как правильно реализовать оператор присваивания — реализация своего оператора присваивания
• Оптимизация времени компиляции — чек-лист по улучшению времени компиляции кода
• Как внедрять современные проверки С++ — видео о подходах к внедрению инструментов безопасности
🖨Интересные проекты:
• NanaZip — архиватор файлов с открытым исходным кодом (написан на основе исходного кода исходного кода 7-Zip)
• RocksDB — постоянное хранилище ключей и значений для флэш-памяти и оперативной памяти
• Atmosphère — кастомизированная прошивка для Nintendo Switch
Библиотека C/C++ разработчика #буст
👍2
Forwarded from Библиотека задач по C++ | тесты, код, задания
Что выведет программа?
Anonymous Poll
54%
Custom delete
21%
Ничего не выведет
16%
Компиляционная ошибка
7%
Undefined behavior
3%
Зависит от компилятора
❤1
🏖️ Подборка вакансий для C++-разработчиков за неделю
Разработчик C++ — от 250 000 и до 400 000 ₽ Удалёнка
Team Lead C++ (Social Core) — от 300 000 ₽ Удалёнка
Senior C++ Developer — от 380 000 и до 430 000 ₽ Удалёнка
Senior Embedded-разработчик / программист микроконтроллеров — от 300 000 ₽ Офис (Москва)
C++-разработчик (Новости) — от 270 000 и до 370 000 ₽ Удалёнка
Библиотека C/C++ разработчика
Разработчик C++ — от 250 000 и до 400 000 ₽ Удалёнка
Team Lead C++ (Social Core) — от 300 000 ₽ Удалёнка
Senior C++ Developer — от 380 000 и до 430 000 ₽ Удалёнка
Senior Embedded-разработчик / программист микроконтроллеров — от 300 000 ₽ Офис (Москва)
C++-разработчик (Новости) — от 270 000 и до 370 000 ₽ Удалёнка
Библиотека C/C++ разработчика
💭 Race conditions в атомарных операциях - одна из самых коварных проблем. Разбираемся с memory ordering.
Проблема: Неопределенное поведение при concurrent доступе
// ❌ ОПАСНО: data race!
std::atomic<bool> ready{false};
int data = 0;
// Thread 1
data = 42;
ready.store(true); // неопределенный ordering!
// Thread 2
if (ready.load()) {
process(data); // может быть 0 или 42!
}
Решение: Explicit memory ordering
// ✅ ПРАВИЛЬНО: используем memory_order
std::atomic<bool> ready{false};
int data = 0;
// Thread 1
data = 42;
ready.store(true, std::memory_order_release); // освобождаем
// Thread 2
if (ready.load(std::memory_order_acquire)) { // захватываем
process(data); // гарантированно 42!
}
⚠️ Частые ошибки:
• Использование memory_order_relaxed везде
• Забывание про acquire-release семантику
• Смешивание атомарных и неатомарных операций
Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔4👍2
🤔 Зачем вообще понимать, как работает ML?
Сейчас многие просто запускают модельку в sklearn — и радуются точности 0.92.
Машинное обучение — это система, которую можно понять.
Если знаешь, что делает градиентный спуск, зачем нужен бустинг и как дерево принимает решения — ты не просто «запускаешь», ты управляешь моделью.
👉 Мы сделали курс, чтобы в это было реально въехать:
— без сложных формул;
— с интуитивными объяснениями;
— от простого к сложному.
Если хочешь перейти от «гуглю код» к «понимаю, как это работает» — ты по адресу!
❗Стартуем в сентябре — бронируй место на курсе уже сейчас
Сейчас многие просто запускают модельку в sklearn — и радуются точности 0.92.
Вроде всё работает… но почему?
А когда сломается — что делать?
Машинное обучение — это система, которую можно понять.
Если знаешь, что делает градиентный спуск, зачем нужен бустинг и как дерево принимает решения — ты не просто «запускаешь», ты управляешь моделью.
👉 Мы сделали курс, чтобы в это было реально въехать:
— без сложных формул;
— с интуитивными объяснениями;
— от простого к сложному.
Если хочешь перейти от «гуглю код» к «понимаю, как это работает» — ты по адресу!
❗Стартуем в сентябре — бронируй место на курсе уже сейчас
❤2🥱2😁1
👾 Clang получает режим усиленной безопасности
Разработчики
🏖️ Новый режим одной командой активирует целый набор защитных механизмов:
• Инициализация переменных нулями
• Защита стека и от переполнений
• Рандомизация адресов
• Усиленные проверки библиотек
• Дополнительные предупреждения
Проблема: разрозненность опций безопасности в C/C++. Многие разработчики просто не знают о их существовании или забывают включать.
Решение: единый флаг, который «из коробки» делает код безопаснее.
Конечно, это костыли для языков 70-80х годов, но лучше поздно чем никогда.
👉 Заметка
Библиотека C/C++ разработчика #буст
Разработчики
Clang
обсуждают добавление флага -fhardened
по аналогии с GCC 14
. 🏖️ Новый режим одной командой активирует целый набор защитных механизмов:
• Инициализация переменных нулями
• Защита стека и от переполнений
• Рандомизация адресов
• Усиленные проверки библиотек
• Дополнительные предупреждения
Проблема: разрозненность опций безопасности в C/C++. Многие разработчики просто не знают о их существовании или забывают включать.
Решение: единый флаг, который «из коробки» делает код безопаснее.
Конечно, это костыли для языков 70-80х годов, но лучше поздно чем никогда.
👉 Заметка
Библиотека C/C++ разработчика #буст
Часто при написании операторов присваивания или swap-функций приходится сохранять старое значение, заменяя его новым. Код получается многословным и подверженным ошибкам.
std::exchange
атомарно заменяет значение переменной и возвращает старое значение — всё в одной строке.T old_value = obj;
obj = new_value;
return old_value;
return std::exchange(obj, new_value);
Код становится более читаемым, безопасным и выразительным. Особенно полезно в RAII-классах и при работе с умными указателями.
Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Forwarded from Proglib.academy | IT-курсы
🌐 Чек-лист: как искать работу
Чтобы не застрять в вечной отладке своей карьеры, держим в голове (и перед глазами) понятный план. Вот чек-лист на период поиска:
✅ Обновите резюме и профиль (да, и GitHub тоже)
Ваш профиль — это витрина. Убедитесь, что в нём отражены:
• актуальные технологии (например, .NET 6/7/8, Blazor, ASP.NET, Azure и т. д.).
• понятные результаты («реализовал систему логирования» , а не «писал код»).
• ссылки на GitHub с чистыми, осмысленными проектами — лишнее желательно скрыть или удалить.
✅ Сформулируйте ключевые навыки и корректные поисковые запросы.
Большинство рекрутеров используют автоматические фильтры. Включите в резюме чёткие названия технологий: Entity Framework Core, LINQ, RabbitMQ, Docker, CI/CD, Kubernetes.
✅ Следите за вакансиями регулярно, но без стресса
• Настройте уведомления на LinkedIn, Habr Career, hh.
• Подпишитесь на каналы с вакансиями, например, наш канал с вакансиями для шарпистов.
✅ Готовьтесь к собеседованиям заранее
• Освежите базовые концепции вроде async/await, Dependency Injection, SOLID, разберитесь в нюансах работы ASP.NET.
• Подумайте заранее, какие проекты вы можете описать как удачные кейсы.
• Поработайте над формулировками, которые показывают ваш вклад — рекрутеры ценят конкретику.
Сколько ищете работу? Пару дней или пару месяцев? Пишите в комментарии👇
Proglib Academy #буст
Чтобы не застрять в вечной отладке своей карьеры, держим в голове (и перед глазами) понятный план. Вот чек-лист на период поиска:
Ваш профиль — это витрина. Убедитесь, что в нём отражены:
• актуальные технологии (например, .NET 6/7/8, Blazor, ASP.NET, Azure и т. д.).
• понятные результаты («реализовал систему логирования» , а не «писал код»).
• ссылки на GitHub с чистыми, осмысленными проектами — лишнее желательно скрыть или удалить.
Большинство рекрутеров используют автоматические фильтры. Включите в резюме чёткие названия технологий: Entity Framework Core, LINQ, RabbitMQ, Docker, CI/CD, Kubernetes.
• Настройте уведомления на LinkedIn, Habr Career, hh.
• Подпишитесь на каналы с вакансиями, например, наш канал с вакансиями для шарпистов.
• Освежите базовые концепции вроде async/await, Dependency Injection, SOLID, разберитесь в нюансах работы ASP.NET.
• Подумайте заранее, какие проекты вы можете описать как удачные кейсы.
• Поработайте над формулировками, которые показывают ваш вклад — рекрутеры ценят конкретику.
Сколько ищете работу? Пару дней или пару месяцев? Пишите в комментарии👇
Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🫣 Боитесь математики в ML?
Думаете, для этого нужно вспоминать университетские интегралы и решать сложные уравнения?
У нас хорошая новость: машинное обучение — это в первую очередь инженерная практика, а не математическая олимпиада. Здесь важнее понимать суть, а не выводить формулы.
Именно на таком подходе — через логику, интуицию и наглядные примеры — и построен наш курс «ML для старта в Data Science», где мы объясняем всё на пальцах, без боли и зубрёжки.
Регистрируйтесь, пока есть свободные места 😉
Думаете, для этого нужно вспоминать университетские интегралы и решать сложные уравнения?
У нас хорошая новость: машинное обучение — это в первую очередь инженерная практика, а не математическая олимпиада. Здесь важнее понимать суть, а не выводить формулы.
Именно на таком подходе — через логику, интуицию и наглядные примеры — и построен наш курс «ML для старта в Data Science», где мы объясняем всё на пальцах, без боли и зубрёжки.
Регистрируйтесь, пока есть свободные места 😉
❤1
Proglib Academy — это место, где вы превращаете теорию в практику. Здесь ваши знания становятся проектами для портфолио, а вы — более уверенным специалистом.
Выберите курс, который поможет сделать следующий шаг ⬇️
🚀 Для тех, кто начинает путь в IT:
— Основы IT для непрограммистов
— Программирование на Python (обновлённый)
— Frontend-разработчик с нуля: HTML, CSS, JavaScript
🧠 Для будущих и настоящих Data Scientist'ов:
— ML для старта в Data Science (начинается в сентябре)
— Базовые модели ML и приложения
— Математика для Data Science
— AI-агенты для DS-специалистов (скоро второй поток)
🛠️ Для опытных разработчиков, готовых к росту:
— Алгоритмы и структуры данных
— Архитектуры и шаблоны проектирования
Независимо от вашей цели, у нас есть курс, который поможет её достичь. Переходите в Proglib Academy, выбирайте свой путь и инвестируйте в навыки, которые всегда будут в цене!
Выберите курс, который поможет сделать следующий шаг ⬇️
🚀 Для тех, кто начинает путь в IT:
— Основы IT для непрограммистов
— Программирование на Python (обновлённый)
— Frontend-разработчик с нуля: HTML, CSS, JavaScript
🧠 Для будущих и настоящих Data Scientist'ов:
— ML для старта в Data Science (начинается в сентябре)
— Базовые модели ML и приложения
— Математика для Data Science
— AI-агенты для DS-специалистов (скоро второй поток)
🛠️ Для опытных разработчиков, готовых к росту:
— Алгоритмы и структуры данных
— Архитектуры и шаблоны проектирования
Независимо от вашей цели, у нас есть курс, который поможет её достичь. Переходите в Proglib Academy, выбирайте свой путь и инвестируйте в навыки, которые всегда будут в цене!
💬 Вопрос от подписчика: move семантика — когда она реально помогает?
Один из наших подписчиков поделился результатами профилирования:
🌚 Ожидания:
• Меньше копирований
• Faster передача объектов
• Оптимизация контейнеров
😱 Реальность:
• В 60% случаев компилятор и так делал оптимизации
• Move конструкторы не всегда noexcept
• Некоторые move операции дороже copy
Кто измерял реальный импакт от move семантики? Поделитесь находками в комментариях.
Библиотека C/C++ разработчика
Один из наших подписчиков поделился результатами профилирования:
Потратил неделю на анализ impact'а move семантики в нашем коде. Результаты неожиданные.
🌚 Ожидания:
• Меньше копирований
• Faster передача объектов
• Оптимизация контейнеров
😱 Реальность:
• В 60% случаев компилятор и так делал оптимизации
• Move конструкторы не всегда noexcept
• Некоторые move операции дороже copy
Кто измерял реальный импакт от move семантики? Поделитесь находками в комментариях.
Библиотека C/C++ разработчика
😁5🤔2❤1
🧨 Range views: детали реализации, неочевидное поведение и влияние на производительность
Современные диапазоны могут заменить 90% ваших циклов — но есть подводные камни.
Разработчик из Яндекса разобрал детали реализации
• Композируемость алгоритмов — строите цепочки операций через
• Ленивые вычисления — всё выполняется за один проход, экономя память и время
• Скрытое кэширование — почему константные объекты могут не компилироваться и как это обойти
• Проблемы с join и split — когда повторная итерация приводит к неопределённому поведению
• Оптимизация производительности — тесты показывают эквивалентность с ручным кодом
• Практические ловушки —
📹 Видео
Библиотека C/C++ разработчика #буст
Современные диапазоны могут заменить 90% ваших циклов — но есть подводные камни.
Разработчик из Яндекса разобрал детали реализации
ranges
, которые изменят ваш подход к обработке данных:• Композируемость алгоритмов — строите цепочки операций через
pipe operator
вместо вложенных циклов• Ленивые вычисления — всё выполняется за один проход, экономя память и время
• Скрытое кэширование — почему константные объекты могут не компилироваться и как это обойти
• Проблемы с join и split — когда повторная итерация приводит к неопределённому поведению
• Оптимизация производительности — тесты показывают эквивалентность с ручным кодом
• Практические ловушки —
double calls
, broken constness
и другие неочевидные эффекты📹 Видео
Библиотека C/C++ разработчика #буст