Библиотека C/C++ разработчика
الذهاب إلى القناة على Telegram
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
إظهار المزيد7 189
المشتركون
-824 ساعات
-117 أيام
-3130 أيام
أرشيف المشاركات
👨💻Хотите начать карьеру в разработке? Обратите внимание на Rust и познакомьтесь с ним за один вечер!
📆На открытом уроке 25 февраля в 20:00 МСК вы установите инструменты, разберётесь с rustc и Cargo и создадите своё первое приложение. Пошагово, с объяснением каждой команды и структуры проекта.
Вы увидите, как Rust решает реальные проблемы C++, Python и других языков, где ошибки часто проявляются слишком поздно. Поймёте философию языка и получите готовую среду для дальнейшего развития. Если вы рассматриваете Rust как следующий шаг в карьере, этот урок — эффективная точка входа.
👉Встречаемся в преддверии старта курса «Rust Developer. Basic». Зарегистрируйтесь и начните системно разбираться в языке, который уже меняет индустрию: https://vk.cc/cUBYOg
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Подход к реализации постоянных параметров шаблонов через библиотеку
Ранее эти параметры шаблонов назывались нетиповыми параметрами шаблонов (non-type template parameters). Но с момента появления C++98 у нас всегда было три вида параметров шаблонов: - типовые параметры (type template parameters) - нетиповые параметры (non-type template parameters) - шаблонные параметры-шаблоны (template template parameters) Когда категорий всего две, можно называть их «X» и «не-X» (например, статические и нестатические методы). Но когда категорий три — это уже неудобно. А в C++26 таких категорий уже пять (добавились параметры переменных шаблонов и параметры концептов), и выходит, что почти все, кроме типовых, попадают под «нетиповые» — что нелогично. Поэтому старый термин заменили на гораздо более удачный: constant template parameter (постоянный параметр шаблона).Этот блогпост стал продолжением моей работы с Ричардом Смитом (P2484), за которым последовала ещё одна статья по теме (P3380). И статья, и доклад основывались на блестящей идее Файсала Вали: рефлексия может предложить интересное решение задачи сериализации, ведь
std::meta::info способен представлять что угодно.
На встрече в Софии все документы, касающиеся рефлексии, были включены в рабочий проект стандарта C++26, и для меня это очень воодушевляюще — видеть формулировки прямо в черновике (например, meta.reflection).
Однако моё решение по расширению поддержки постоянных параметров шаблонов в C++26 не войдёт. Как и решение проблемы non-transient constexpr allocation. Так что ограничения на типы, которые можно использовать в качестве постоянных параметров шаблонов, сохранятся ещё на один цикл.
А может… и нет?
https://brevzin.github.io/c++/2025/08/02/ctp-reflection/
📲 Мы в MAX
#cpp #programming
👉 @cpp_libПродвинутое использование препроцессора в C и C++
Зачастую, в проектах ограничивается использование препроцессора по следующим причинам:
— Он не похож на весь остальной язык;
— Макросы могут возвращать неполные синтаксические конструкции, или вовсе различные, в зависимости от параметров.
Ввиду перечисленных особенностей, читать код с активным использованием препроцессора зачастую становится на порядок сложнее кода без него.
Со всеми его недостатками, инструмент есть в языке и достоин изучения.
https://habr.com/ru/companies/timeweb/articles/928598/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Универсальная С++ фабрика объектов: для Qt и не только
Меня зовут Михаил Полукаров, я занимаюсь разработкой Desktop-версии корпоративного супераппа для совместной работы VK Teams.
Если вы тоже работали с большими проектами, где активно применяются объектно-ориентированные паттерны проектирования, то наверняка сталкивались с паттернами проектирования Factory Method или AbstractFactory. В процессе разработки я неоднократно ловил себя на мысли, что часто пишу однотипный код таких фабрик, и задумался о том, как можно было бы избежать таких самоповторений.
В этой статье я покажу, как сделать универсальную фабрику объектов, покрывающую большую часть потребностей, следующую принципам DRY (Don’t Repeat Yourself), а также как можно использовать некоторые «фишки» новых стандартов С++.
https://habr.com/ru/companies/vktech/articles/932358/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Как читать язык ассемблера
Зачем кому-то нужно изучать язык ассемблера? Во-первых, чтение языка ассемблера - это способ узнать, что именно делает ваша программа. Почему именно эта программа на Си++ занимает 1 Мб (скажем), а не 100 Кб? Можно ли выжать еще немного производительности из той функции, которая постоянно вызывается?
В частности, для языка Си++ легко забыть или просто не заметить какую-либо операцию (например, неявное преобразование или вызов конструктора или деструктора копирования), которая подразумевается исходным кодом и семантикой языка, но не прописана в явном виде. Если посмотреть на ассемблер, сгенерированный компилятором, то все будет на виду.
https://wolchok.org/posts/how-to-read-assembly-language/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
C++ изнутри: внутренние механизмы классов
Крис Райан — CppCon 2024
В своём докладе я рассмотрю внутренние механизмы C++ по следующим темам:
- "Луковица C++": как она соотносится с конструированием, уничтожением объектов и полиморфизмом;
- Порядок конструирования и уничтожения объектов, а также обработка до и после выполнения
main();
- Указатели на функции-члены (это не те C-указатели на функции, что вы знали раньше);
- Указатели на данные-члены (не просто «сырые» указатели) и их "data-morphic" функциональность;
- Понимание стека вызовов, кадров стека и механизмов базового указателя (base pointer).
источник
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib🔥 SPRINT OFFER: оффер RTL Design Engineer за 3 дня 🔥
Хотите работать в команде, которая разрабатывает сложные цифровые решения для ASIC и участвует в создании собственных аппаратных модулей на уровне RTL?
Команда Semiconductors в YADRO занимается проектированием и реализацией функциональных блоков для ASIC с использованием современных подходов к цифровому дизайну и тесным взаимодействием с архитекторами и инженерами по верификации.
🎓 Что важно:
• Опыт разработки RTL не менее 2 лет.
• Уверенное знание Verilog/SystemVerilog.
• Опыт работы с RTL-симуляторами (любой вендор).
• Опыт работы в Linux-окружении.
• Опыт работы с системами контроля версий.
• Знание современных интерфейсов (AXI, PAB, AHB).
Вас ждёт разработка RTL-моделей для ASIC: интерфейсы, контроллеры, логика обработки данных, а также работа в тесной связке с архитекторами, верификацией и SoC-командой.
⚙️Как проходит SPRINT OFFER:
1️⃣ Подайте заявку до 22 февраля и пройдите HR-скрининг.
2️⃣ Пройдите техническое и менеджерское интервью.
3️⃣ Получите оффер в течение 3 дней.
💙 Оставляйте заявку до 22 февраля и присоединяйтесь к команде инженеров YADRO, которая работает над развитием современных аппаратных технологий!
Dockerизированная toolchain в CLion с Conan
При разработке на C++ часто возникает необходимость воспроизводимой среды для сборки. Особенно если проект разрабатывается командой, где у каждого разработчика разные операционные системы и окружения. Тут на помощь приходит Docker.
Зачем это нужно?
- Единая среда для всех участников команды
- Изоляция от локальной системы
- Упрощение CI/CD
Интеграция с CLion
CLion поддерживает удалённые toolchain, включая Docker-контейнеры. То есть вы можете настроить сборку и отладку прямо в IDE, используя контейнер как основную среду.
Conan + Docker
Conan используется для управления зависимостями. Вместе с Docker это даёт:
- Контролируемую установку зависимостей
- Воспроизводимость билдов
- Возможность легко переключаться между разными окружениями
Краткие шаги настройки:
1. Создайте Docker-образ с нужными компиляторами и инструментами.
2. Настройте Toolchains в CLion, указав Docker как удалённую среду.
3. Подключите Conan для управления зависимостями.
4. Собирайте и отлаживайте проект прямо в контейнере.
Такой подход особенно полезен для кросс-платформенной разработки и больших командных проектов, где важна стабильность окружения.
https://schneide.blog/2025/06/23/dockerized-toolchain-in-clion-with-conan/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
🛠 Каждый C++-разработчик знает: здесь нельзя писать «на удачу». Одно неверное обращение к памяти — и всё падает. Если вам не хватает системности, уверенности в многопоточности, работы с сетью или просто хочется наконец разобраться, почему код ведёт себя именно так — это повышение квалификации станет апгрейдом вашего уровня.
👩💻 На курсе «C++ Developer. Professional» вы изучите язык до мельчайших деталей: от шаблонов и паттернов проектирования до принципов эффективного многопоточного кода и стандартов C++20 и 23. 14 практических работ, эксперты из индустрии и живая поддержка менторов помогут вам вывести свои проекты на уровень, который требует рынок.
Если вы хотите писать стабильный, быстрый и понятный код — научитесь мыслить как инженер, а не просто программист.➡️ Пройдите короткое вступительное тестирование и получите скидку на обучение, старт совсем скоро: https://vk.cc/cUiWeC Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Ошибки, которые не случились: C++ и compile‑time проверка SQL-запросов
В этой статье мы посмотрим, как можно реализовать полную compile‑time валидацию SQL‑запросов на основе схемы базы данных, встраиваемой прямо в код. Без магии, без рантайма, без сторонних тулов. Только стандартный C++ и ваша структура БД. Валидация таблиц, столбцов, типов аргументов и их количества — всё на compile‑time.
Представьте, если бы компилятор сам указывал «такой таблицы нет», «несуществующий столбец», «несовместимые типы» — до запуска программы. Такой подход полностью устраняет «сюрпризы» во время исполнения и исключает класс ошибок, связанных с генерацией SQL во время работы программы. Ваша программа даже не соберётся.
https://habr.com/ru/articles/929052/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Запись System Level MeetUp. Поток C++
Мы встретились, чтобы поговорить об C++ в системной разработке: обсудить стандарты, подходы и реальные задачи, которые решаются на этом языке.
00:00 - Открытие мероприятия.
08:30 - Доклад "Девиртуализация в C++, компиляторах и вашей программе" (Константин Владимиров и Илья Андреев).
47:50 - Вопросы от участников.
01:00:32 - Доклад "Кодек для json'ов с фиксированной схемой" (Никита Пешаков).
01:27:33 - Вопросы от участников.
01:43:04 - Дискуссия "Как писать меньше на C++?" (Константин Владимиров, Илья Казаков, Алексей Щербаков, Василий Рамаданов).
02:43:06 - Доклад "Реализация динамического полиморфизма для свободных функций" (Кирилл Колодяжный).
03:00:56 - Вопросы участников.
03:11:00 - Доклад "Шаблонное мета-программирование в современном C++ для задач космической баллистики" (Леонид Меркин).
03:59:32 - Вопросы участников.
04:06:05 - Доклад "C++ внутри PostgreSQL: удобство против традиций" (Илья Шишков).
04:46:55 - Вопросы участников.
источник
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
👩💻 Открытый урок «Lock-free в C++: Без блокировок к высокой производительности».
🗓 09 февраля в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «C++ Developer. Professional».
Мьютексы и блокировки долгое время считались стандартом синхронизации в C++. Но по мере роста нагрузки именно они всё чаще становятся узким местом и тормозят масштабирование многопоточных систем.Что будет на вебинаре: На открытом уроке разберём, как устроено lock-free программирование и почему современные C++-приложения всё чаще отказываются от классических блокировок. Поговорим о том, какие задачи действительно выигрывают от lock-free подхода и какие механизмы предоставляет стандарт C++ для работы с атомарными операциями и памятью. Кому будет интересно: • Начинающим программистам C++ • Программистам на других языках, которые хотят сравнить подходы к многопоточности в их технологии с подходами в C++ 🔗 Ссылка на регистрацию: https://vk.cc/cU2Pw6 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Лаконичный макрос defer для C++17
Ручное управление ресурсами в низкоуровневом си-подобном коде на C++ — довольно хлопотное занятие. Создание достойных RAII-врапперов для каждого используемого сишного API не всегда практично, а использование подходов с goto cleanup или множеством вложенных if (success) вредит читаемости кода.
Макрос defer как никогда кстати! Отложенная лямбда будет выполнена при выходе из области видимости, независимо от того, будет ли выполнен return, брошено исключение, или даже выполнен goto наружу. Данный макрос по-настоящему zero-cost и не зависит от рантайма C или стандартной библиотеки, поэтому его можно использовать даже в разработке под ядро ОС.
https://habr.com/ru/articles/916732/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Низкоуровневый скриптинг на C++ для игровых движков
Я постарался охватить только основы, но текст всё равно получился очень длинным.
libriscv — это зрелый эмулятор RISC-V, который в настоящее время используется в игровых движках. Насколько мне известно, это единственный эмулятор, в котором основной акцент делается на обработке задержек, а также предоставляются специализированные решения и инструменты для выполнения быстрых вызовов при обращении с функциями — как входящих, так и исходящих. Причём, всё это заключено в безопасной песочнице. Задержки, наблюдаемые в libriscv, гораздо ниже, чем в эталонных эмуляторах.
Меня многие спрашивали, как им пользоваться, но здесь интереснее то, как вообще может прийти в голову мысль писать скрипты на C++ — не слишком ли сложно это будет? Оказывается, нет, не очень. Вот уже несколько лет я пишу на C++ скрипты для одной большой и одной не очень большой игры, и меня почти не посещало ощущение, что виной каким-то возникающим при этом проблемам являются язык C++ или связанные с ним скриптовые API. Я много лет программирую на Lua, а до этого пользовался обычным C. Но сейчас современный идиоматический C++ — то, что мне нужно. Причём, я могу писать на этом языке как в самом игровом движке, так и за его пределами, при этом опираясь (буквально) на одни и те же абстракции и оперируя одинаковыми структурами данных. Наконец, C++ просто очень мощный. Правда, я признаю, что о вкусах не спорят, и при работе с C++ также не обойтись без компромиссов.
https://habr.com/ru/articles/919620/
original https://fwsgonzo.medium.com/an-introduction-to-low-latency-scripting-with-libriscv-ad0619edab40
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Руководство по сборке Qt под Windows из исходников с MinGW
Официальный способ установки готовых бинарников Qt - через онлайн инсталлятор. Однако он требует обязательной регистрации. Да еще и недоступен на территории РФ. Есть и другие способы получить бинарники, или собрать с компилятором от Microsoft, однако не всегда эти способы приемлемы. Сборка из исходников под Windows может оказаться несколько нетривиальна для новичков, потому сделал небольшую инструкцию по сборке Qt 5 и Qt 6. А так же рассмотрена базовая настройка QT Creator.
https://habr.com/ru/articles/917252/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Опенсорс от кристалла до программного стека
Нужны ли нам открытые архитектуры? Что нам нужно, чтобы они работали? В этом докладе мы попытаемся изложить основные проблемы и преимущества открытых архитектур на примере RISC-V — и расскажем про то, как происходит разработка различных инструментов, включая генераторы, компиляторы, средства бенчмаркинга.
00:00 Введение. Архитектура RISC-V, открытая и расширяемая (sigh).
05:38 Стадии конвейера и интерфейсы.
13:37 Открытые ядра на базе RISC-V, тестовое окружение и проблема верификации
19:14 Компиляторные технологии и LLVM
24:46 Моделирование и верификация RISC-V на разных уровнях и llvm-snippy
29:17 Задача бенчмаркинга и llvm-exegesis
34:24 Проблема высокоуровневого ПО, профили и развитие экосистемы
41:15 Ответы на вопросы
источник
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Проектируем змейку под учебный RISC-V микроконтроллер
На третьем курсе некоторые направления в МИЭТ проходят лабораторный практикум, на котором им даётся возможность спроектировать собственную систему архитектуры RISC-V и написать под неё программу на С или C++.
В качестве затравки и повышения мотивации, хотелось показать им на что будет способна их процессорная система, и для этого было решено написать какую-нибудь простенькую игру, не требующую особых требований к ресурсам и графике. Так выбор пал на Змейку.
В этой я расскажу о том, как была написана данная игра под платформу, поддерживающую символьный вывод.
https://habr.com/ru/articles/915450/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
