Библиотека C/C++ разработчика
7.22K subscribers
688 photos
720 videos
8 files
986 links
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Download Telegram
Media is too big
VIEW IN TELEGRAM
Компиляторный бенчмаркинг и JIT-компиляция
Анастасия Черникова

Обсудили инструмент автоматического бенчмаркинга llvm-exegesis и то, какие проблемы он помогает решать.

Недавно появилась поддержка RISC-V backend: Анастасия рассказала про ее особенности, реализацию и о том, что еще предстоит сделать. Подробно представила режимы работы и опции запуска, чтобы каждый уже в конце доклада смог полноценно использовать llvm-exegesis для решения своих задач.

Бонус: вы познакомитесь сllvm-jit и узнаете, как использовать его в качестве самостоятельного инструмента.

00:00 Начало. RISC-V и LLVM
05:24 Компиляторный бенчмаркинг
09:14 Использование и возможности llvm-exegesis
18:03 История инструмента, его разнообразные применения и его путь в RISC-V
25:22 llvm-jit его устройство и использование: как отдельно так и внутри инструментов
29:56 Ответы на вопросы
35:00 Моё камео: ответ про соотношение llvm-mca и llvm-exegesis. Далее Настя продолжает отвечать сама.

источник

#cpp #programming

👉 @cpp_lib
6👍4
📈Хотите, чтобы ваши приложения на C++ работали на максимуме?

Присоединяйтесь к открытому уроку «Как сделать ваши приложения C++ супер-производительными»!

На вебинаре вы:

— Научитесь использовать инструменты профилирования gprof, valgrind, Google Benchmark.
— Овладеете техниками повышения производительности кэша и оптимизации управления памятью.
— Узнаете, как использовать оптимизации компилятора для улучшения работы программы.

Все участники вебинара получат скидкуна большое обучение «C++ Developer. Professional».

🔥Не упустите шанс улучшить свои навыки и повысить производительность программ! Регистрация открыта: https://vk.cc/cOhlSO

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Как читать язык ассемблера

Зачем кому-то нужно изучать язык ассемблера? Во-первых, чтение языка ассемблера - это способ узнать, что именно делает ваша программа. Почему именно эта программа на Си++ занимает 1 Мб (скажем), а не 100 Кб? Можно ли выжать еще немного производительности из той функции, которая постоянно вызывается?

В частности, для языка Си++ легко забыть или просто не заметить какую-либо операцию (например, неявное преобразование или вызов конструктора или деструктора копирования), которая подразумевается исходным кодом и семантикой языка, но не прописана в явном виде. Если посмотреть на ассемблер, сгенерированный компилятором, то все будет на виду.

https://wolchok.org/posts/how-to-read-assembly-language/

#cpp #programming

👉 @cpp_lib
👍5👏2
Качественных каналов про C++ не так много, но вот три, которые стоит читать:

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

Подписавшись, вы точно будете в плюсовом контексте.
👉 https://t.iss.one/addlist/jEIgjFluVUI0YjM6
3👍3
Универсальная С++ фабрика объектов: для Qt и не только

Меня зовут Михаил Полукаров, я занимаюсь разработкой Desktop-версии корпоративного супераппа для совместной работы VK Teams.

Если вы тоже работали с большими проектами, где активно применяются объектно-ориентированные паттерны проектирования, то наверняка сталкивались с паттернами проектирования Factory Method или AbstractFactory. В процессе разработки я неоднократно ловил себя на мысли, что часто пишу однотипный код таких фабрик, и задумался о том, как можно было бы избежать таких самоповторений.

В этой статье я покажу, как сделать универсальную фабрику объектов, покрывающую большую часть потребностей, следующую принципам DRY (Don’t Repeat Yourself), а также как можно использовать некоторые «фишки» новых стандартов С++.

https://habr.com/ru/companies/vktech/articles/932358/

#cpp #programming

👉 @cpp_lib
🔥3👍21
Продвинутое использование препроцессора в C и C++

Зачастую, в проектах ограничивается использование препроцессора по следующим причинам:

— Он не похож на весь остальной язык;
— Макросы могут возвращать неполные синтаксические конструкции, или вовсе различные, в зависимости от параметров.

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

Со всеми его недостатками, инструмент есть в языке и достоин изучения.

https://habr.com/ru/companies/timeweb/articles/928598/

#cpp #programming

👉 @cpp_lib
👍5
Подход к реализации постоянных параметров шаблонов через библиотеку

Ранее эти параметры шаблонов назывались нетиповыми параметрами шаблонов (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
👍51
Media is too big
VIEW IN TELEGRAM
Чему C++ может научиться?
Антон Полухин, Павел Новиков

Обсудили, как C99 создает проблемы с неопределенным поведением и почему C++ должен минимизировать его, улучшая предсказуемость и удобство для разработчиков.

источник

#cpp #programming

👉 @cpp_lib
👍32
Media is too big
VIEW IN TELEGRAM
🚀 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
• Разработка и поддержка сложных интерфейсов встроенных систем

💼 Условия работы:

• Гибкий формат: удалённо или в офисах в Москве, Санкт-Петербурге, Екатеринбурге, Нижнем Новгороде и Минске
• Работа с масштабными проектами в уникальной команде инженеров
• Возможность горизонтального и вертикального карьерного роста

💙 Узнайте больше и откликайтесь на вакансии прямо на сайте!
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Лекции С++ продвинутый поток ФПМИ 2023-24

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

источник

#cpp #programming

👉 @cpp_lib
👍136
Оптимизация с помощью аллокаторов в C++17

Благодаря полиморфным аллокаторам в C++17 можно оптимизировать распределение памяти. Эта оптимизация включает в себя производительность и повторное использование памяти.

https://www.modernescpp.com/index.php/optimization-with-allocators-in-c17/

#cpp #programming

👉 @cpp_lib
👍4
Устали от повторяющегося кода в 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
🥰1