Библиотека C/C++ разработчика
6.81K subscribers
655 photos
690 videos
8 files
940 links
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Download Telegram
Шпаргалка по C++

#cpp #programming

👉 @cpp_lib
👍6💩21
Сборка мусора: как это делается в системном программировании

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

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

Rus https://habr.com/ru/companies/timeweb/articles/766772/

Eng https://bitbashing.io/gc-for-systems-programmers.html

#cpp #programming

👉 @cpp_lib
👍51
Являются ли указатели функций и виртуальные функции действительно медленными?

Повсюду повторяется так много ложных истин, что иногда я считаю своим патриотическим долгом развеять всю эту дезинформацию. Не знаю, где была создана эта ложь, придумана ли она ленивыми разработчиками, которые никогда не проводили ни одного бенчмарка и хотят выглядеть хорошо перед своими коллегами, или это 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
👍3
Как сравнить целые числа со знаком и без знака в C++20?

Сравнение двух чисел должно быть простым, верно? Может быть, и должно, но в языке C++ это не так, даже если ограничить сравнение областью целых чисел.

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

https://www.sandordargo.com/blog/2023/10/11/cpp20-intcmp-utilities

#cpp #programming

👉 @cpp_lib
👍6🔥1
Инженерный калькулятор на C++. Часть 1: Токенизатор математических выражений

Всем привет! Сегодня хочу поделиться опытом написания консольного инженерного калькулятора, который может посчитать выражение вроде (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
👍2🤮1
Интервью с разработчиками мультитула для хакеров и пентестеров Flipper Zero

Flipper Zero — карманный "мультитул" для гиков, сокровище для пентестеров, ваш собственный кибер-зверёк. Возможности девайса ограничиваются только вашим воображением и сноровкой.

В этой статье мы пообщаемся с разработчиками устройства Flipper Zero. Поклонникам девайса предлагается нырнуть вглубь истории создания и технических возможностей. Тем, кто впервые слышит про Флиппер — познакомиться с проектом. Флиппер переживал и запреты, и негатив, и обожание. Проект собрал вокруг себя сотни тысяч энтузиастов-хакеров, людей, охваченных любопытством познания мира вокруг. Приятного чтения!

Мы пообщались с тремя разработчиками — Александром, Иваном и Сергеем. Заряженная энергией и позитивом команда собралась перед нами, чтобы поделиться сокровенным, одним из главных дел их жизни — проектом Flipper Zero.

https://habr.com/ru/companies/pvs-studio/articles/769634/

#cpp #programming

👉 @cpp_lib
👍4
С++

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
👍31
Media is too big
VIEW IN TELEGRAM
Возможности С++ для программирования микроконтроллеров
Игнат Ворошилов


Обычно, программирование микроконтроллеров подразумевает использования языков программирования ASM, C, и лишь изредка C++. Но даже те проекты, которые написаны с использованием C++, написаны в стиле C, без использования преимуществ C++ в полной мере. Эти утверждения справедливы для подавляющего большинства проектов с открытым исходным кодом, библиотек от разработчиков микросхем, различных SDK и иже с ними. На мой взгляд, игнорирование возможностей C++ и возможностей ООП, при разработке ПО для микроконтроллеров, неоправдано. Предлагаю рассмотреть конкретные примеры использования возможностей языка C++, которые помогут сэкономить время разработчика и повысить качество проекта.

источник

#cpp #programming

👉 @cpp_lib
👍4