Media is too big
VIEW IN TELEGRAM
C++ изнутри: внутренние механизмы классов
Крис Райан — CppCon 2024
В своём докладе я рассмотрю внутренние механизмы C++ по следующим темам:
- "Луковица C++": как она соотносится с конструированием, уничтожением объектов и полиморфизмом;
- Порядок конструирования и уничтожения объектов, а также обработка до и после выполнения
- Указатели на функции-члены (это не те C-указатели на функции, что вы знали раньше);
- Указатели на данные-члены (не просто «сырые» указатели) и их "data-morphic" функциональность;
- Понимание стека вызовов, кадров стека и механизмов базового указателя (base pointer).
источник
#cpp #programming
👉 @cpp_lib
Крис Райан — CppCon 2024
В своём докладе я рассмотрю внутренние механизмы C++ по следующим темам:
- "Луковица C++": как она соотносится с конструированием, уничтожением объектов и полиморфизмом;
- Порядок конструирования и уничтожения объектов, а также обработка до и после выполнения
main()
;- Указатели на функции-члены (это не те C-указатели на функции, что вы знали раньше);
- Указатели на данные-члены (не просто «сырые» указатели) и их "data-morphic" функциональность;
- Понимание стека вызовов, кадров стека и механизмов базового указателя (base pointer).
источник
#cpp #programming
👉 @cpp_lib
👍6
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
Анастасия Черникова
Обсудили инструмент автоматического бенчмаркинга 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
Присоединяйтесь к открытому уроку «Как сделать ваши приложения 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
Зачем кому-то нужно изучать язык ассемблера? Во-первых, чтение языка ассемблера - это способ узнать, что именно делает ваша программа. Почему именно эта программа на Си++ занимает 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
- Грокаем 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
Меня зовут Михаил Полукаров, я занимаюсь разработкой Desktop-версии корпоративного супераппа для совместной работы VK Teams.
Если вы тоже работали с большими проектами, где активно применяются объектно-ориентированные паттерны проектирования, то наверняка сталкивались с паттернами проектирования Factory Method или AbstractFactory. В процессе разработки я неоднократно ловил себя на мысли, что часто пишу однотипный код таких фабрик, и задумался о том, как можно было бы избежать таких самоповторений.
В этой статье я покажу, как сделать универсальную фабрику объектов, покрывающую большую часть потребностей, следующую принципам DRY (Don’t Repeat Yourself), а также как можно использовать некоторые «фишки» новых стандартов С++.
https://habr.com/ru/companies/vktech/articles/932358/
#cpp #programming
👉 @cpp_lib
🔥3👍2❤1
Продвинутое использование препроцессора в C и C++
Зачастую, в проектах ограничивается использование препроцессора по следующим причинам:
— Он не похож на весь остальной язык;
— Макросы могут возвращать неполные синтаксические конструкции, или вовсе различные, в зависимости от параметров.
Ввиду перечисленных особенностей, читать код с активным использованием препроцессора зачастую становится на порядок сложнее кода без него.
Со всеми его недостатками, инструмент есть в языке и достоин изучения.
https://habr.com/ru/companies/timeweb/articles/928598/
#cpp #programming
👉 @cpp_lib
Зачастую, в проектах ограничивается использование препроцессора по следующим причинам:
— Он не похож на весь остальной язык;
— Макросы могут возвращать неполные синтаксические конструкции, или вовсе различные, в зависимости от параметров.
Ввиду перечисленных особенностей, читать код с активным использованием препроцессора зачастую становится на порядок сложнее кода без него.
Со всеми его недостатками, инструмент есть в языке и достоин изучения.
https://habr.com/ru/companies/timeweb/articles/928598/
#cpp #programming
👉 @cpp_lib
👍5
Подход к реализации постоянных параметров шаблонов через библиотеку
Этот блогпост стал продолжением моей работы с Ричардом Смитом (P2484), за которым последовала ещё одна статья по теме (P3380). И статья, и доклад основывались на блестящей идее Файсала Вали: рефлексия может предложить интересное решение задачи сериализации, ведь
На встрече в Софии все документы, касающиеся рефлексии, были включены в рабочий проект стандарта C++26, и для меня это очень воодушевляюще — видеть формулировки прямо в черновике (например, meta.reflection).
Однако моё решение по расширению поддержки постоянных параметров шаблонов в C++26 не войдёт. Как и решение проблемы non-transient constexpr allocation. Так что ограничения на типы, которые можно использовать в качестве постоянных параметров шаблонов, сохранятся ещё на один цикл.
А может… и нет?
https://brevzin.github.io/c++/2025/08/02/ctp-reflection/
#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
👍5❤1
Media is too big
VIEW IN TELEGRAM
Чему C++ может научиться?
Антон Полухин, Павел Новиков
Обсудили, как C99 создает проблемы с неопределенным поведением и почему C++ должен минимизировать его, улучшая предсказуемость и удобство для разработчиков.
источник
#cpp #programming
👉 @cpp_lib
Антон Полухин, Павел Новиков
Обсудили, как C99 создает проблемы с неопределенным поведением и почему C++ должен минимизировать его, улучшая предсказуемость и удобство для разработчиков.
источник
#cpp #programming
👉 @cpp_lib
👍3❤2
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
• Разработка и поддержка сложных интерфейсов встроенных систем
💼 Условия работы:
• Гибкий формат: удалённо или в офисах в Москве, Санкт-Петербурге, Екатеринбурге, Нижнем Новгороде и Минске
• Работа с масштабными проектами в уникальной команде инженеров
• Возможность горизонтального и вертикального карьерного роста
💙 Узнайте больше и откликайтесь на вакансии прямо на сайте!
Если вы хотите создавать сложное программное обеспечение для серверов и систем хранения данных, работать с передовыми технологиями 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
Лекция 1. Введение в язык C++. Основные типы и операции над ними
Лекция 2. Основные команды в терминале. Компиляция программ
Лекция 3. Объявления и определения, области видимости, пространства имен
Лекция 4. Выражения и операторы. Управляющие конструкции
Лекция 5. Compile-time errors, runtime errors, undefined behavior
Лекция 6. Указатели
Лекция 7. Стековая, статическая и динамическая память
Лекция 8. Массивы, функции и указатели на функции
источник
#cpp #programming
👉 @cpp_lib
👍13❤6
Оптимизация с помощью аллокаторов в C++17
Благодаря полиморфным аллокаторам в C++17 можно оптимизировать распределение памяти. Эта оптимизация включает в себя производительность и повторное использование памяти.
https://www.modernescpp.com/index.php/optimization-with-allocators-in-c17/
#cpp #programming
👉 @cpp_lib
Благодаря полиморфным аллокаторам в 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
➡️ Присоединяйтесь к открытому уроку «Макросы в Rust: от macro_rules! до процедурных макросов» 19 августа в 20:00 МСК.
На вебинаре мы:
— Освоим декларативные макросы: синтаксис и паттерн-матчинг.
— Разберемся с процедурными макросами: derive, attribute, function-like.
— Научимся создавать DSL и автоматизировать рутинные задачи.
— Поймем, когда использовать макросы и когда их избегать.
❗️Этот урок — отличный тест-драйв курса «Rust Developer. Professional» от OTUS. Все участники вебинара получат скидку на обучение!
🔴 Зарегистрироваться на вебинар → https://vk.cc/cOAVrP
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🥰1