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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
Download Telegram
Перевод:

Ты используешь i=i+2
Я использую ++i++
Мы разные

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

#развлекалово
😁24😢2🥱2🌚1
👾 Скрытые ловушки встроенной сборки в C++

В видео разбирается фундаментальная проблема несовместимости моделей параллелизма C++ (RC11) и x86, возникающая при использовании встроенной сборки.

Ключевые моменты доклада:

• невременные хранилища (non-temporal stores) обходят кэш и нарушают синхронизацию acquire-release
• стандартные режимы доступа RC11 не могут корректно моделировать встроенную сборку
• предлагается расширение модели с тремя новыми режимами доступа: TSO, non-temporal и store fence

Основной фокус — разработка семантики, которая позволяет корректно совмещать высокоуровневые конструкции C++ с низкоуровневыми инструкциями x86 в одной программе.

Вы поймёте, почему простое добавление inline assembly может привести к data race и нарушению корректности многопоточной программы, даже если код выглядит безопасным с точки зрения модели памяти C++.

👉 Видео

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

#буст
🔥3😁2🤔1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
💃 Репозиторий для ВСЕХ ПРОГРАММИСТОВ И ГИКОВ

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

👉 ТОП полезных сайтов — здесь

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🍓 Команда дня: std::apply (C++17)

Вызов функций с аргументами из tuple требует распаковки вручную.


До:

cppauto args = std::make_tuple(1, 2.5, "hello");

// Как передать все аргументы в функцию?
func(std::get<0>(args), std::get<1>(args), std::get<2>(args));



После:
cppauto args = std::make_tuple(1, 2.5, "hello");
std::apply(func, args); // Автоматическая распаковка!



🌳 Практические примеры:

• Вызов конструкторов: std::apply([](auto... args){ return T{args...}; }, tuple)
• Функциональное программирование
• Рефлексия: вызов методов с динамическими аргументами


👁 Используете std::apply для elegant кода?

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍6
Осталось 48 часов!

Обратный отсчёт пошёл: только до воскресенья 23:59 можно купить курс «AI-агенты для DS-специалистов» и начать учиться уже с 15 сентября.

⚡️ Это ваши +3 недели форы, чтобы спокойно разобраться в самых сложных темах и прийти к первому занятию 7 октября уже подготовленным.

👉 Забрать место
1😁1
🤓 «Сначала выучу Python идеально, а потом пойду в ML»

Звучит логично, но на практике — ловушка.
Python огромный: фреймворки, библиотеки, нюансы синтаксиса. Учить «всё сразу» можно бесконечно.

В итоге — месяцы зубрёжки, а до ML руки так и не доходят.

На старте достаточно баз: типы данных, циклы, функции, работа с библиотеками. Всё остальное лучше подтягивать в процессе решения ML-задач.

⚠️ До 1 сентября курсы можно забрать по старым ценам. Это последние выходные, когда:
ML идёт за 34 000 вместо 44 000 ₽ + Python в подарок,
два в одном: оплатите курс по математике и получите второй доступ в подарок,
— и главное: можно купить все курсы до подорожания.

👉 ML для старта в Data Science

А для будущих Data Scientist’ов у нас ещё:
Базовые модели ML и приложения
Математика для Data Science
AI-агенты для DS-специалистов (2-й поток скоро)
1
ПОСЛЕДНИЙ ДЕНЬ
КУРСЫ ПОДОРОЖАЮТ ЗАВТРА‼️

ML за 34к вместо 44к + Python в подарок
Математика → второй доступ в подарок
— Ранний доступ к AI-агентам с 15 сентября
— И МОЖНО УСПЕТЬ КУПИТЬ ВСЁ ДО ПОДОРОЖАНИЯ

👉 Proglib Academy
😁2
📰 Свеженькое из мира C++

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

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

Constexpr эволюция — от C++11 до C++23 — история развития constexpr

😎 Полезное:

Structured Bindings: распаковка данных — элегантная работа с multiple return values и сложными структурами
Скрытые ловушки встроенной сборки в C++ — разбор фундаментальных проблем несовместимости моделей параллелизма
std::apply — способ упрощения написания кода с помощью std::apply

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

DevilutionX — это порт Diablo и Hellfire, призванный упростить управление игрой, а также внести улучшения в движок
SwapTube — приложение для кодирования видео построенное на базе FFMPEG
FlatBuffers — кроссплатформенная библиотека сериализации, разработанная для максимальной эффективности использования памяти

Библиотека C/C++ разработчика
4👍1
🐸 Подборка вакансий для C++-разработчиков за неделю

Инженер-разработчик встраиваемых систем (Middle-Embedded) — до 370 000 ₽ Офис (Елабуга)

Middle Разработчик на C/C++ под Linux — от 250 000 и до 300 000 ₽ Удалёнка

Senior C++ Developer — от 350 000 ₽ Удалёнка

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

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

Разработчик на С++ (Инфраструктура Алисы / DWH) — от 300 000 и до 490 000 ₽ Гибрид (Москва)

Библиотека C/C++ разработчика
2👍1
📉💼 Грейдинг умер: 5 трендов IT-найма 2025

Помнишь времена, когда можно было поменять работу и сразу получать на 50% больше? Забудь. В 2025-м правила игры кардинально изменились — теперь компании боятся ChatGPT на собесах, а искать работу через LinkedIn стало бесполезно. Разбираем 5 трендов, которые перевернули IT-найм с ног на голову.

👉 Читать статью

Библиотека C/C++ разработчика
👍3🥱1
🧪 Промпт дня: Создания тестов в C++

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


✏️ Промпт:

Create two [ define technology ] tests for the above 'tempFunction' function. One that is expected to pass and one that is expected to fail.


Где [ define technology ] — это ваш тестовый фреймворк (Google Test, Catch2, Boost.Test и т.д.).


Пример использования:

Create two Google Test tests for the above 'calculateAverage' function. One that is expected to pass and one that is expected to fail.

Create two Catch2 tests for the above 'validateEmail' function. One that is expected to pass and one that is expected to fail.


💡Такой подход поможет вам:

• Создать тесты в едином стиле
• Покрыть как успешные, так и неуспешные сценарии
• Быстро адаптироваться к любому тестовому фреймворку
• Обеспечить базовое покрытие для локальной валидации


🍴 Какие тестовые фреймворки вы используете в своих C++ проектах? Делитесь опытом в комментариях!

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1😁1
Переворачиваем календарь — а там скидки, которые уже закончились.

Но мы их вернули на последний день 🤔

До 00:00 третьего сентября (цены как до 1 сентября):

▪️ Математика для Data Science — 35.199 ₽ вместо 44.900 ₽
▪️ Алгоритмы и структуры данных — 31.669 ₽ вместо 39.900 ₽
▪️ Основы IT — 14.994 ₽ вместо 19.900 ₽
▪️ Архитектуры и шаблоны — 24.890 ₽ вместо 32.900 ₽
▪️ Python — 24.990 ₽ вместо 32.900 ₽
▪️ ML для Data Science — 34.000 ₽ вместо 44. 000 ₽
▪️ AI-агенты — 49.000 ₽ вместо 59.000 ₽

👉 Хватаем скидки из прошлого

P.S. Машину времени одолжили у дяди Миши
😁2🌚1
⬆️ Команда дня: std::invoke (C++17)

Вызов callable объектов (функции, лямбды, member функции) требует разного синтаксиса. Но можно унифицировать вызовы с помощью std::invoke.

🔥 До:

// Разный синтаксис для разных типов
func(); // функция
obj.method(); // метод
(obj.*ptr_to_member)(); // указатель на метод
lambda(); // лямбда


После:

// Единый синтаксис для всех callable
std::invoke(func);
std::invoke(&Class::method, obj);
std::invoke(lambda);
std::invoke(ptr_to_member, obj);



✏️ Упростили работу с callable объектами?


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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🤔2🔥1😢1
😎 Сколько баллов набрали вы?

Голосуйте, какой у вас уровень разработчика:

😁 — 5-12 баллов (стажер)
👍 — 13-25 баллов (джуниор)
⚡️ — 26-40 баллов (джуниор+)
👏 — 41-60 баллов (миддл)
🔥 — 61-80 баллов (миддл+)
🎉 — 81-100 баллов (сеньор)
🤩 — 100+ баллов (тимлид)

Но вот в чем прикол — опытный разработчик набирает баллы не случайными косяками, а осознанными решениями.

👉 Научим, как быстро прокачаться от стажера до сеньора
😁5🎉2👍1