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

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

الذهاب إلى القناة على Telegram

Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter

إظهار المزيد
7 221
المشتركون
-524 ساعات
-217 أيام
-4430 أيام
أرشيف المشاركات
Как в 19 лет я начал путь разработчика встраиваемого ПО Привет! Меня зовут Данила, мне 21 год, и за последние 2,5 года я успе
+3
Как в 19 лет я начал путь разработчика встраиваемого ПО Привет! Меня зовут Данила, мне 21 год, и за последние 2,5 года я успел поработать в роли разработчика программного обеспечения для встраиваемых систем — в основном на базе STM32. В этой статье я хочу поделиться тем, как я вообще пришёл в эту сферу, с чего начинал, какие грабли собрал и какие выводы сделал по пути. https://habr.com/ru/articles/922322/ #cpp #programming 👉 @cpp_lib

🚀Хотите начать карьеру в IT и овладеть одним из самых мощных языков программирования? Начните путь разработчика с C++ уже се
🚀Хотите начать карьеру в IT и овладеть одним из самых мощных языков программирования? Начните путь разработчика с C++ уже сейчас! 📅 Старт обучения — 30 сентября Курс «C++ Developer. Basic» создан для тех, кто хочет освоить программирование с нуля и сделать уверенный шаг в сторону профессии. Вы изучите основы C++, заложите фундамент для дальнейшего развития и научитесь создавать собственные программы, решающие реальные задачи. Обучение в OTUS — это поддержка преподавателей, практические задания и подготовка к первым собеседованиям. После курса вы сможете развиваться как C++ разработчик или перейти на другие языки ООП. ⌛️Не откладывайте старт! Место в группе можно занять уже сейчас: https://vk.cc/cOO9zC Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

MemorySanitizer (MSAN), когда он нужен и как внедрять По разным оценкам, до 10% уязвимостей в коде на C и C++ являются следствием использования неинициализированной памяти (источники: 1, 2). Задача MemorySanitizer (далее, MSAN) - выявлять использование неинициализированной памяти в коде, то есть мусора, например в блоке кода типа if (uninit_var) {...}. Кроме уязвимостей, неинициализированная память даёт о себе знать при портировании приложения на другую платформу, смене компилятора (или поднятии версии используемого), изменении уровня оптимизации или изменении кода таким образом, что то, что раньше "случайно" инициализировалось нулями, стало инициализироваться мусором. MSAN не является статическим анализатором, то есть для его работы требуется выполнение кода (нужны тесты/fuzzing/реальная нагрузка). Прежде чем переходить к самому MSAN, сначала разберемся почему недостаточно (или достаточно?) статического анализа, ведь даже компиляторы умеют предупреждать об использовании неинициализированных данных. https://habr.com/ru/articles/937934/ #cpp #programming 👉 @cpp_lib

Оптимизация GUI на Qt Как правило, при создании desktop-приложений на платформе Qt не возникает проблем, связанных с медленно
Оптимизация GUI на Qt Как правило, при создании desktop-приложений на платформе Qt не возникает проблем, связанных с медленностью работы GUI. Qt – платформа достаточно надежная, неплохо вылизанная по всем параметрам, в том числе и по скорости работы. Однако всё же иногда бывают ситуации, когда из-за обилия виджетов графический интерфейс немного притормаживает, и это печально). В этой статье я приведу один частный пример простого графического интерфейса и покажу, как за два шага можно сначала ускорить его в 11 раз, а потом и в целых 34 раза. Вдобавок к этому, я постараюсь немного осветить механизм принятия решения для таких оптимизационных задач, постараюсь показать направление мыслей для правильного решения. Поехали! https://habr.com/ru/post/672962/ #cpp #programming 👉 @cpp_lib

💻 Курс “Программист на C” от OTUS — старт набора Освойте один из самых мощных и востребованных языков системного программиро
💻 Курс “Программист на C” от OTUS — старт набора Освойте один из самых мощных и востребованных языков системного программирования. Почему стоит пойти: • Глубокое погружение: синтаксис C, архитектура процессора, работа с памятью, ассемблер, структуры данных • Реальные задачи уровня Middle для прокачки навыков • Карьерные перспективы: база резюме OTUS и карьерные мероприятия 💡Кому подойдёт: • Разработчикам, углубляющим знания C • Специалистам по интеграции библиотек на C • Тем, кто хочет в IoT и программирование микроконтроллеров ✅После курса вы сможете: • Создавать быстрые и оптимизированные приложения •Понимать архитектуру процессора и работу с памятью • Работать с системным программированием и оптимизацией 👉 Запишитесь сейчас, пройдите вступительное тестирование и получите спеццену: https://vk.cc/cOLedH

Создаем плагин с генеративным ИИ для Unreal Engine на C++ (офлайн и онлайн версии) Вы когда‑нибудь задумывались о том, как здорово было бы, чтобы в вашей игре происходили настоящие человеческие диалоги? Представьте себе систему диалогов NPC, которая кажется невероятно реалистичной, или нарратора, который моментально реагирует на действия игроков. А может быть, вам нужен инструмент, способный генерировать уникальный контент «на лету» прямо в игре? Вне зависимости от того, создаете ли вы одиночную или многопользовательскую игру, внедрение генеративного искусственного интеллекта может сделать ваше творение намного интереснее и динамичнее. В этом руководстве я поделюсь с вами пошаговой инструкцией того, как это можно воплотить в вашем проекте! https://medium.com/@danuk2004/unlock-the-future-build-a-generative-ai-plugin-for-unreal-engine-with-c-offline-and-online-3f290accc977 #cpp #programming 👉 @cpp_lib

Девиртуализация в C++, компиляторах и вашей программе Привет, меня зовут Илья Андреев, я старший программист в компании Synta
Девиртуализация в C++, компиляторах и вашей программе Привет, меня зовут Илья Андреев, я старший программист в компании Syntacore. Вы, наверно, слышали, что виртуальные функции в C++ пользуются дурной славой — а может, и сами придерживаетесь о них не самого лучшего мнения. В этой статье, подготовленной совместно с Константином Владимировым, я в некоторой степени выступлю адвокатом виртуализации. Мы начнем с вводной части о статическом и динамическом полиморфизме, рассмотрим факторы, влияющие на девиртуализацию, и ее примеры разной сложности — в том числе те, что мы используем в реальной разработке. А напоследок познакомим вас со спекулятивной девиртуализацией и дадим рекомендации, как подходить к виртуальным функциям в разработке на C++. https://habr.com/ru/companies/yadro/articles/938694/ #cpp #programming 👉 @cpp_lib

🧐Слышали о контейнерах в C++, но не уверены, когда и как их правильно использовать? На открытом уроке «Контейнеры C++» 20 ав
🧐Слышали о контейнерах в C++, но не уверены, когда и как их правильно использовать? На открытом уроке «Контейнеры C++» 20 августа в 20:00 МСК мы разберём, как эффективно использовать стандартные и сторонние контейнеры в C++. Мы рассмотрим популярные STL-контейнеры — std::vector, std::list, std::deque, а также контейнеры-адаптеры и библиотеки сторонних разработчиков, такие как folly, boost и libcuckoo. Поймём, в каких случаях использовать каждый из них, чтобы повысить производительность и улучшить архитектуру программ. Вы получите конкретные знания, которые можно сразу применить в реальных проектах, и сможете выбирать оптимальные решения для работы с данными в C++. ⚡️Регистрируйтесь на вебинар и получите скидку на курс «C++ Developer. Professional»: https://vk.cc/cOFuK4 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Как правильно вызывать CUDA Вероятно, вам уже попадались подобные руководства по CUDA: хрестоматийный пример «Hello World», в котором перемешан код для ЦП и графического процессора. Всё это сложено в один гетерогенный файл с исходниками на CUDA C++, а для запуска ядра применяется синтаксис NVCC с тройными угловыми скобками <<<>>>, который уже стал культовым:

#include <cuda_runtime.h>
#include <stdio.h>

__global__ void kernel() {
    printf("Hello World from block %d, thread %d\n", blockIdx.x, threadIdx.x);
}

int main() {
    kernel<<<1, 1>>>(); // Возвращает `void`?!     
    return cudaDeviceSynchronize() == cudaSuccess ? 0 : -1;
}
Время идёт, а такой паттерн по-прежнему попадается мне в продакшен-коде. Признаюсь, кое-где он всплывает и в моих любительских проектах — раз, два, три. Но это не лучшая идея, полагаться в серьёзном коде на запуск ядра через тройные угловые скобки. В таком случае программа не возвращает коды ошибок, поэтому может показаться обманчиво простой. Ниже вас ждут примерно 25 килобайт текста, в которых мы обсудим не самые корявые способы запуска ядер. https://ashvardanian.com/posts/less-wrong-cuda-hello-world/ #cpp #programming 👉 @cpp_lib

Data-Parallel Types: алгоритмы (C++26) Библиотека «data-parallel types» для SIMD-векторов (пространство имён std::experimenta
Data-Parallel Types: алгоритмы (C++26) Библиотека «data-parallel types» для SIMD-векторов (пространство имён std::experimental, алиас stdx) предоставляет четыре специальных алгоритма: `min, max, minmax и clamp. min, max, minmax - min(a, b) и max(a, b) принимают два SIMD-вектора и возвращают вектор покомпонентных минимумов/максимумов. - minmax(a, b) возвращает пару SIMD-векторов: первый — покомпонентные минимумы, второй — максимумы. - Автор отмечает, что строка stdx::minmax(a, b) у него не компилировалась ни в GCC, ни в Clang (на момент публикации). clamp - stdx::clamp(v, lo, hi) применяет std::clamp к каждому элементу SIMD-вектора: значения ниже lo поднимаются до нижней границы, выше hi — опускаются до верхней. - Показаны два примера: ограничение к диапазону INT8_MIN..INT8_MAX и к 0..UINT8_MAX; на выводах видно, как выходящие за пределы элементы прижимаются к границам. Итог - Для SIMD-векторов доступны привычные «минимумы/максимумы» и покомпонентный clamp. - minmax задуман как удобный возврат пары (min/max), но в текущих компиляторах может не собираться. - Дальше автор планирует разбирать новые возможности C++26 (в частности, контракты). https://www.modernescpp.com/index.php/data-parallel-types-algorithms/ #cpp #programming 👉 @cpp_lib

Устали от повторяющегося кода в Rust? Хотите научиться превращать 100 строк в 5? ➡️ Присоединяйтесь к открытому уроку «Макрос
Устали от повторяющегося кода в Rust? Хотите научиться превращать 100 строк в 5? ➡️ Присоединяйтесь к открытому уроку «Макросы в Rust: от macro_rules! до процедурных макросов» 19 августа в 20:00 МСК. На вебинаре мы: — Освоим декларативные макросы: синтаксис и паттерн-матчинг. — Разберемся с процедурными макросами: derive, attribute, function-like. — Научимся создавать DSL и автоматизировать рутинные задачи. — Поймем, когда использовать макросы и когда их избегать. ❗️Этот урок — отличный тест-драйв курса «Rust Developer. Professional» от OTUS. Все участники вебинара получат скидку на обучение! 🔴 Зарегистрироваться на вебинар → https://vk.cc/cOAVrP Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Оптимизация с помощью аллокаторов в C++17 Благодаря полиморфным аллокаторам в C++17 можно оптимизировать распределение памяти
Оптимизация с помощью аллокаторов в C++17 Благодаря полиморфным аллокаторам в C++17 можно оптимизировать распределение памяти. Эта оптимизация включает в себя производительность и повторное использование памяти. https://www.modernescpp.com/index.php/optimization-with-allocators-in-c17/ #cpp #programming 👉 @cpp_lib

+7
Лекции С++ продвинутый поток ФПМИ 2023-24 Лекция 1. Введение в язык C++. Основные типы и операции над ними Лекция 2. Основные команды в терминале. Компиляция программ Лекция 3. Объявления и определения, области видимости, пространства имен Лекция 4. Выражения и операторы. Управляющие конструкции Лекция 5. Compile-time errors, runtime errors, undefined behavior Лекция 6. Указатели Лекция 7. Стековая, статическая и динамическая память Лекция 8. Массивы, функции и указатели на функции источник #cpp #programming 👉 @cpp_lib

🚀 YADRO приглашает C++ разработчиков в команду OpenBMC и встроенных систем! Если вы хотите создавать сложное программное обеспечение для серверов и систем хранения данных, работать с передовыми технологиями Linux и участвовать в проектах open source, то эта возможность для вас. 📌 Кого мы ищем: • Ведущего разработчика C++ (Linux/OpenBMC) • Ведущего разработчика интерфейсов встроенных систем • TeamLead разработки OpenBMC 🧰 Технологический стек и задачи: • C++ (стандарты 17, 20, 23), STL, Boost • Linux-среда, systemd, D-Bus, Yocto, bash, Python • Работа с ядром прошивки OpenBMC, взаимодействие с UEFI/BIOS • Разработка и поддержка сложных интерфейсов встроенных систем 💼 Условия работы: • Гибкий формат: удалённо или в офисах в Москве, Санкт-Петербурге, Екатеринбурге, Нижнем Новгороде и Минске • Работа с масштабными проектами в уникальной команде инженеров • Возможность горизонтального и вертикального карьерного роста 💙 Узнайте больше и откликайтесь на вакансии прямо на сайте!

Чему C++ может научиться? Антон Полухин, Павел Новиков Обсудили, как C99 создает проблемы с неопределенным поведением и почему C++ должен минимизировать его, улучшая предсказуемость и удобство для разработчиков. источник #cpp #programming 👉 @cpp_lib

Подход к реализации постоянных параметров шаблонов через библиотеку Ранее эти параметры шаблонов назывались нетиповыми параме
Подход к реализации постоянных параметров шаблонов через библиотеку
Ранее эти параметры шаблонов назывались нетиповыми параметрами шаблонов (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/ #cpp #programming 👉 @cpp_lib

Продвинутое использование препроцессора в C и C++ Зачастую, в проектах ограничивается использование препроцессора по следующи
Продвинутое использование препроцессора в C и C++ Зачастую, в проектах ограничивается использование препроцессора по следующим причинам: — Он не похож на весь остальной язык; — Макросы могут возвращать неполные синтаксические конструкции, или вовсе различные, в зависимости от параметров. Ввиду перечисленных особенностей, читать код с активным использованием препроцессора зачастую становится на порядок сложнее кода без него. Со всеми его недостатками, инструмент есть в языке и достоин изучения. https://habr.com/ru/companies/timeweb/articles/928598/ #cpp #programming 👉 @cpp_lib

Универсальная С++ фабрика объектов: для Qt и не только Меня зовут Михаил Полукаров, я занимаюсь разработкой Desktop-версии ко
Универсальная С++ фабрика объектов: для Qt и не только Меня зовут Михаил Полукаров, я занимаюсь разработкой Desktop-версии корпоративного супераппа для совместной работы VK Teams. Если вы тоже работали с большими проектами, где активно применяются объектно-ориентированные паттерны проектирования, то наверняка сталкивались с паттернами проектирования Factory Method или AbstractFactory. В процессе разработки я неоднократно ловил себя на мысли, что часто пишу однотипный код таких фабрик, и задумался о том, как можно было бы избежать таких самоповторений. В этой статье я покажу, как сделать универсальную фабрику объектов, покрывающую большую часть потребностей, следующую принципам DRY (Don’t Repeat Yourself), а также как можно использовать некоторые «фишки» новых стандартов С++. https://habr.com/ru/companies/vktech/articles/932358/ #cpp #programming 👉 @cpp_lib

#cpp #programming 👉 @cpp_lib
#cpp #programming 👉 @cpp_lib

Качественных каналов про C++ не так много, но вот три, которые стоит читать: - Грокаем C++ — два опытных инженера делятся разбором сложных тем и подходов. - Илья Шишков: код, собесы, IT — экспертный взгляд на собеседования, карьеру и продакшн-разработку. - this->notes — заметки и дайджесты про C++, архитектуру и современную разработку. Подписавшись, вы точно будете в плюсовом контексте. 👉 https://t.me/addlist/jEIgjFluVUI0YjM6