Model-View-Controller
https://www.modernescpp.com/index.php/model-view-controller
#cpp #programming
👉 @cpp_lib
https://www.modernescpp.com/index.php/model-view-controller
#cpp #programming
👉 @cpp_lib
👍2🔥1
Сборка мусора: как это делается в системном программировании
Давайте поговорим об одной из наиболее критичных по производительности программ, которой вы пользуетесь ежедневно: о вашей операционной системе. Поскольку при каждом разгоне железа вы получаете дополнительную вычислительную мощность, операционная система никогда за этим не поспевает. Поэтому постоянно доводится читать о том, как разработчики ядра и драйверов выжимают последнее из своего кода.
Кроме того, операционные системы должны быть рассчитаны на массовую конкурентность. Дело не только в том, что наша операционная система отвечает за планирование всех процессов и потоков пользовательского пространства, но и в том, что в ядре хватает собственных потоков, а также обработчиков прерываний, нужных для взаимодействия с железом. Требуется минимизировать время, которое тратится на ожидание, так как, опять же, при любой задержке вы воруете время ваших пользователей.
Rus https://habr.com/ru/companies/timeweb/articles/766772/
Eng https://bitbashing.io/gc-for-systems-programmers.html
#cpp #programming
👉 @cpp_lib
Давайте поговорим об одной из наиболее критичных по производительности программ, которой вы пользуетесь ежедневно: о вашей операционной системе. Поскольку при каждом разгоне железа вы получаете дополнительную вычислительную мощность, операционная система никогда за этим не поспевает. Поэтому постоянно доводится читать о том, как разработчики ядра и драйверов выжимают последнее из своего кода.
Кроме того, операционные системы должны быть рассчитаны на массовую конкурентность. Дело не только в том, что наша операционная система отвечает за планирование всех процессов и потоков пользовательского пространства, но и в том, что в ядре хватает собственных потоков, а также обработчиков прерываний, нужных для взаимодействия с железом. Требуется минимизировать время, которое тратится на ожидание, так как, опять же, при любой задержке вы воруете время ваших пользователей.
Rus https://habr.com/ru/companies/timeweb/articles/766772/
Eng https://bitbashing.io/gc-for-systems-programmers.html
#cpp #programming
👉 @cpp_lib
👍5❤1
Являются ли указатели функций и виртуальные функции действительно медленными?
Повсюду повторяется так много ложных истин, что иногда я считаю своим патриотическим долгом развеять всю эту дезинформацию. Не знаю, где была создана эта ложь, придумана ли она ленивыми разработчиками, которые никогда не проводили ни одного бенчмарка и хотят выглядеть хорошо перед своими коллегами, или это 20-летние бенчмарки, которые отражали аппаратное и программное окружение того времени и просто застряли в коллективном сознании.
https://lucisqr.substack.com/p/are-function-pointers-and-virtual
#cpp #programming
👉 @cpp_lib
Повсюду повторяется так много ложных истин, что иногда я считаю своим патриотическим долгом развеять всю эту дезинформацию. Не знаю, где была создана эта ложь, придумана ли она ленивыми разработчиками, которые никогда не проводили ни одного бенчмарка и хотят выглядеть хорошо перед своими коллегами, или это 20-летние бенчмарки, которые отражали аппаратное и программное окружение того времени и просто застряли в коллективном сознании.
https://lucisqr.substack.com/p/are-function-pointers-and-virtual
#cpp #programming
👉 @cpp_lib
👍7
Опыт создания UI библиотеки на C++
Началось все почти два года назад в декабрe, наш основной проект (видео мессенджер) использовал WTL для Windows и GTKmm для Linux. Поддержки мака не было. Огромной неприятностью было тащить два идентичных клиента, которые, по идее, должны делать все строго одно и тоже. Разумеется, это никогда не получалось. От мысли что надо бы сделать ещё один нативный клиент для мака начинался нервный тик...
На резонный вопрос - почему сразу делалось не на Qt могу лишь ответить, что это связано с, так скажем, гурманскими предпочтениями и, отчасти, с любовью к монолитным exe. Да и не требовалось на старте ничего кроме винды.
https://habr.com/ru/articles/768336/
#cpp #programming
👉 @cpp_lib
Началось все почти два года назад в декабрe, наш основной проект (видео мессенджер) использовал WTL для Windows и GTKmm для Linux. Поддержки мака не было. Огромной неприятностью было тащить два идентичных клиента, которые, по идее, должны делать все строго одно и тоже. Разумеется, это никогда не получалось. От мысли что надо бы сделать ещё один нативный клиент для мака начинался нервный тик...
На резонный вопрос - почему сразу делалось не на Qt могу лишь ответить, что это связано с, так скажем, гурманскими предпочтениями и, отчасти, с любовью к монолитным exe. Да и не требовалось на старте ничего кроме винды.
https://habr.com/ru/articles/768336/
#cpp #programming
👉 @cpp_lib
👍3
Как сравнить целые числа со знаком и без знака в C++20?
Сравнение двух чисел должно быть простым, верно? Может быть, и должно, но в языке C++ это не так, даже если ограничить сравнение областью целых чисел.
Если попытаться сравнить знаковое и беззнаковое целое число, то возможны несколько вариантов развития событий. Возможно, это действительно сработает, и вы никогда не узнаете, чем рисковали. Возможно, все будет не так, как вы ожидали, и вы потратите немало времени, ломая голову над тем, что же произошло. Возможно также, что он не сработает в соответствии с вашими ожиданиями, но это останется незамеченным.
https://www.sandordargo.com/blog/2023/10/11/cpp20-intcmp-utilities
#cpp #programming
👉 @cpp_lib
Сравнение двух чисел должно быть простым, верно? Может быть, и должно, но в языке C++ это не так, даже если ограничить сравнение областью целых чисел.
Если попытаться сравнить знаковое и беззнаковое целое число, то возможны несколько вариантов развития событий. Возможно, это действительно сработает, и вы никогда не узнаете, чем рисковали. Возможно, все будет не так, как вы ожидали, и вы потратите немало времени, ломая голову над тем, что же произошло. Возможно также, что он не сработает в соответствии с вашими ожиданиями, но это останется незамеченным.
https://www.sandordargo.com/blog/2023/10/11/cpp20-intcmp-utilities
#cpp #programming
👉 @cpp_lib
👍6🔥1
Инженерный калькулятор на C++. Часть 1: Токенизатор математических выражений
Всем привет! Сегодня хочу поделиться опытом написания консольного инженерного калькулятора, который может посчитать выражение вроде
Почему именно калькулятор (ну камон, их же и так тьма тьмущая)? Все потому, что в школе дали задание написать графический калькулятор на Qt; мне это показалось скучным, и я решил поэкспериментировать.
https://habr.com/ru/articles/769812/
#cpp #programming
👉 @cpp_lib
Всем привет! Сегодня хочу поделиться опытом написания консольного инженерного калькулятора, который может посчитать выражение вроде
(log2(18)/3.14)*sqrt(0.1*10^(-3)/0.02)
Почему именно калькулятор (ну камон, их же и так тьма тьмущая)? Все потому, что в школе дали задание написать графический калькулятор на Qt; мне это показалось скучным, и я решил поэкспериментировать.
https://habr.com/ru/articles/769812/
#cpp #programming
👉 @cpp_lib
👍6
Как и почему я писал для Флиппера на Си-с-классами
Мой Флиппер дошёл до меня больше полугода назад, но что-то под него написать я собрался только сейчас. Его API рассчитаны на язык С — а у меня с ним опыта не очень много. Но проблем с тулингом не возникло — у Флиппера есть своя система сборки, которая скачала мне нужный тулчейн и сгенерировала настройки для IDE.
А для написания кода я решил использовать всё же не C, а C++ — точнее, даже «Си-с-классами». На мой взгляд, затуманенный языками более высокого уровня, такой подход получился удобнее, чем писать на чистом C. Результат можно увидеть в моём репозитории, а в этой статье я попытаюсь описать, какие конкретные фичи языка я использовал, и как именно они мне помогли.
https://habr.com/ru/companies/ruvds/articles/768658/
#cpp #programming
👉 @cpp_lib
Мой Флиппер дошёл до меня больше полугода назад, но что-то под него написать я собрался только сейчас. Его API рассчитаны на язык С — а у меня с ним опыта не очень много. Но проблем с тулингом не возникло — у Флиппера есть своя система сборки, которая скачала мне нужный тулчейн и сгенерировала настройки для IDE.
А для написания кода я решил использовать всё же не C, а C++ — точнее, даже «Си-с-классами». На мой взгляд, затуманенный языками более высокого уровня, такой подход получился удобнее, чем писать на чистом C. Результат можно увидеть в моём репозитории, а в этой статье я попытаюсь описать, какие конкретные фичи языка я использовал, и как именно они мне помогли.
https://habr.com/ru/companies/ruvds/articles/768658/
#cpp #programming
👉 @cpp_lib
👍2🤮1
Интервью с разработчиками мультитула для хакеров и пентестеров Flipper Zero
Flipper Zero — карманный "мультитул" для гиков, сокровище для пентестеров, ваш собственный кибер-зверёк. Возможности девайса ограничиваются только вашим воображением и сноровкой.
В этой статье мы пообщаемся с разработчиками устройства Flipper Zero. Поклонникам девайса предлагается нырнуть вглубь истории создания и технических возможностей. Тем, кто впервые слышит про Флиппер — познакомиться с проектом. Флиппер переживал и запреты, и негатив, и обожание. Проект собрал вокруг себя сотни тысяч энтузиастов-хакеров, людей, охваченных любопытством познания мира вокруг. Приятного чтения!
Мы пообщались с тремя разработчиками — Александром, Иваном и Сергеем. Заряженная энергией и позитивом команда собралась перед нами, чтобы поделиться сокровенным, одним из главных дел их жизни — проектом Flipper Zero.
https://habr.com/ru/companies/pvs-studio/articles/769634/
#cpp #programming
👉 @cpp_lib
Flipper Zero — карманный "мультитул" для гиков, сокровище для пентестеров, ваш собственный кибер-зверёк. Возможности девайса ограничиваются только вашим воображением и сноровкой.
В этой статье мы пообщаемся с разработчиками устройства Flipper Zero. Поклонникам девайса предлагается нырнуть вглубь истории создания и технических возможностей. Тем, кто впервые слышит про Флиппер — познакомиться с проектом. Флиппер переживал и запреты, и негатив, и обожание. Проект собрал вокруг себя сотни тысяч энтузиастов-хакеров, людей, охваченных любопытством познания мира вокруг. Приятного чтения!
Мы пообщались с тремя разработчиками — Александром, Иваном и Сергеем. Заряженная энергией и позитивом команда собралась перед нами, чтобы поделиться сокровенным, одним из главных дел их жизни — проектом Flipper Zero.
https://habr.com/ru/companies/pvs-studio/articles/769634/
#cpp #programming
👉 @cpp_lib
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
С++
01 Введение
02 Placement new
03 Наивная реализация конструкторов и функции Reserve
04 Обработка исключений
05 Уносим сырую память в класс обёртку
06 Функции std::uninitialized *
07 Оператор присваивания и move конструктор
08 Resize, PushBack и PopBack
09 Гарантии безопасности исключений
10 Variadic templates
#cpp #programming
👉 @cpp_lib
01 Введение
02 Placement new
03 Наивная реализация конструкторов и функции Reserve
04 Обработка исключений
05 Уносим сырую память в класс обёртку
06 Функции std::uninitialized *
07 Оператор присваивания и move конструктор
08 Resize, PushBack и PopBack
09 Гарантии безопасности исключений
10 Variadic templates
#cpp #programming
👉 @cpp_lib
👍3❤1
Media is too big
VIEW IN TELEGRAM
Возможности С++ для программирования микроконтроллеров
Игнат Ворошилов
Обычно, программирование микроконтроллеров подразумевает использования языков программирования ASM, C, и лишь изредка C++. Но даже те проекты, которые написаны с использованием C++, написаны в стиле C, без использования преимуществ C++ в полной мере. Эти утверждения справедливы для подавляющего большинства проектов с открытым исходным кодом, библиотек от разработчиков микросхем, различных SDK и иже с ними. На мой взгляд, игнорирование возможностей C++ и возможностей ООП, при разработке ПО для микроконтроллеров, неоправдано. Предлагаю рассмотреть конкретные примеры использования возможностей языка C++, которые помогут сэкономить время разработчика и повысить качество проекта.
источник
#cpp #programming
👉 @cpp_lib
Игнат Ворошилов
Обычно, программирование микроконтроллеров подразумевает использования языков программирования ASM, C, и лишь изредка C++. Но даже те проекты, которые написаны с использованием C++, написаны в стиле C, без использования преимуществ C++ в полной мере. Эти утверждения справедливы для подавляющего большинства проектов с открытым исходным кодом, библиотек от разработчиков микросхем, различных SDK и иже с ними. На мой взгляд, игнорирование возможностей C++ и возможностей ООП, при разработке ПО для микроконтроллеров, неоправдано. Предлагаю рассмотреть конкретные примеры использования возможностей языка C++, которые помогут сэкономить время разработчика и повысить качество проекта.
источник
#cpp #programming
👉 @cpp_lib
👍4