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

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

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

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

إظهار المزيد
7 322
المشتركون
+524 ساعات
+67 أيام
+1230 أيام
أرشيف المشاركات
Три теоремы о сортировках Я знаю многих программистов и руководителей в IT компаниях, которые недолюбливают математиков и в ч
Три теоремы о сортировках Я знаю многих программистов и руководителей в IT компаниях, которые недолюбливают математиков и в частности считают их далёкими от жизни идиотами из-за их утверждений в духе "нельзя отсортировать последовательность быстрее, чем за nlogn" -- ведь это очевидным образом неверно, есть же сортировка подсчетом и radix sort. Нюанс в том, что описанное выше -- это распространённая некорректная трактовка одной из ключевых теорем об алгоритмах сортировок, корректное утверждение выглядит так: "не существует алгоритма, который бы гарантированно находил перестановку n элементов, приводящую к возрастающему порядку, быстрее чем за nlogn используя только операции попарного сравнения". В этом утверждении больше слов, оно более сложно в плане когнитивного восприятия, ключевой момент обозначил жирным шрифтом, чувствуете разницу? https://habr.com/ru/articles/893452/ 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

🚀 CUTE_HEADERS - Коллекция кроссплатформенных однофайловых библиотек на C/C++ без зависимостей, в основном используемых для
🚀 CUTE_HEADERS - Коллекция кроссплатформенных однофайловых библиотек на C/C++ без зависимостей, в основном используемых для разработки игр. 🔹 Математика (векторы, матрицы) 🔹 Системы частиц 🔹 Аудио и таймеры 🔹 Работа с файлами 🔹 Простая физика и коллизии 🔹 Анимация и графика 🔹 И многое другое! Все библиотеки — в одном .h файле, без зависимостей. Отлично подходят для маленьких проектов, прототипов и учебных задач. https://github.com/RandyGaul/cute_headers 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

⚔️ Линус Торвальдс против C++: Почему ядро Linux остается на C? Почему Линус Торвальдс категорически запрещает C++ в ядре Lin
⚔️ Линус Торвальдс против C++: Почему ядро Linux остается на C? Почему Линус Торвальдс категорически запрещает C++ в ядре Linux. Казалось бы, C++ - это "C на стероидах", но для разработки ядра эти стероиды - яд. Разбираем основные аргументы Линуса (и почему они имеют смысл в context of kernel development). 1. Исключения (Exceptions) - зло для ядра В C мы проверяем коды возврата. В C++ исключение может вылететь откуда угодно. 🩷Проблема: Недетерминированность. Для ядра с 30 млн строк кода это ад отладки. 🩷Риск: Если МРТ-сканер или система управления полетами "выбросит исключение" и упадет, последствия будут фатальными. Ядро требует полного контроля над потоком выполнения. 2. Скрытое управление памятью (RAII) Линус считает, что компилятор не должен делать ничего "за спиной" программиста. 🩷Проблема: Конструкторы, деструкторы и неявные аллокации. 🩷Аргумент: В ядре управление памятью должно быть ручным и прозрачным. Зависимость от магии компилятора снижает производительность и стабильность. 3. "Жирная" объектная модель Нужно ООП? Его можно сделать и на C. Линус утверждает, что C++ тянет за собой переусложненные иерархии и абстракции, которые потом невозможно рефакторить. 🩷Цитата: "Ограничение проекта языком C означает, что люди не смогут его испортить... идиотской чушью 'объектной модели'". 💡 Как выглядит ООП в стиле Linux (на чистом C): Вместо классов - структуры и указатели на функции. Это дает полиморфизм без оверхеда C++.

typedef struct {
    int value;
    // V-table на минималках: указатель на функцию
    void (*increment)(struct Person *self);
} Person;

void increment_person(Person *self) {
    self->value++;
}

int main() {
    Person *p = (Person*)malloc(sizeof(Person));
    p->value = 5;
    p->increment = increment_person; // Привязка метода
    
    p->increment(p); // Вызов: 6
    free(p);
}

4. Проблема зависимостей (STL/Boost) То, что стабильно для приложения в GNOME, недостаточно стабильно для ядра. Внедрение STL или Boost - это риск security-проблем (вспомним бэкдор в xz/liblzma) и раздувание бинарников. А как же Rust? Интересно, что к Rust отношение другое. Линус допускает Rust, потому что он (в отличие от C++) решает проблемы безопасности памяти, а не просто добавляет синтаксический сахар. C - прост, но позволяет выстрелить себе в ногу. Rust - строг. C++ - слишком сложен и неявен для ядра.
Отказ от C++ - это выбор между эргономикой разработчика и стабильностью системы. Для User-space приложений C++ прекрасен. Но для ядра, от которого зависит работа миллиардов устройств (от тостеров до спутников), консерватизм C - единственно верный путь.
👉 Читать статью полностью: https://habr.com/ru/companies/otus/articles/902724/ 👇Холивар в комментах объявляется открытым: Согласны с Линусом, что C++ переусложнен для системного уровня, или это просто "синдром утенка" у старой школы? 📲 Мы в MAX #cpp #c #linux #kernel #linus #coding #holivar 👉 @cpp_lib

💻Полный перебор выглядит простым решением, пока не сталкивается с реальностью. Как только задача усложняется, перебор станов
💻Полный перебор выглядит простым решением, пока не сталкивается с реальностью. Как только задача усложняется, перебор становится неприемлемо медленным — и именно здесь начинаются настоящие алгоритмы. 📆На открытом уроке вы напишете алгоритм Dancing Links Дональда Кнута — один из самых элегантных способов решения задач точного покрытия. Мы разберём, почему классический перебор не работает, и как четырёхсвязный список позволяет добавлять и удалять элементы практически без затрат. Вы увидите, как несколько десятков строк кода решают задачи, которые выглядят непосильными для brute force. Реализуете алгоритм полностью, разберёте его внутреннюю механику и примените к задаче пентамино. 👉Встречаемся 12 января в 20:00 МСК в преддверие старта курса «Алгоритмы и структуры данных». Регистрация открыта: https://vk.cc/cTbGNW Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Практика языка C (МФТИ, 2023-2024). Допсеминар: системы сборки (make, cmake). 00:00 Зависимости и хедера 08:22 Build.sh 11:48 Makefiles и декларативная модель 19:51 Ленивые и переменные 30:52 Автоматические переменные 36:15 Первая версия makefile 41:33 Функции и wildcards 47:40 Вторая версия makefile и зависимости от хедеров 56:36 Третья итерация: почти идеальный makefile 01:06:26 Знакомство с cmake 01:19:35 Бонус. Немного больше про cmake. 01:30:40 Окончательные уроки. источник 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

Дорогие друзья, с Новым Годом!!!

Пишем на С++ 23 под Windows 95, не вызывая подозрение у санитаров Что, если я скажу вам, что можно писать код на свежайшем C+
Пишем на С++ 23 под Windows 95, не вызывая подозрение у санитаров Что, если я скажу вам, что можно писать код на свежайшем C++23 с модулями, лямбдами и constexpr, а потом запустить его на Pentium с 16 МБ ОЗУ под Windows 95? Звучит как магия или безумие, но это работает. В этой статье я покажу, как: Настроить компиляцию в Visual Studio 2022 под 32-битный x86 без исключений и стандартной библиотеки. Создать минимальную реализацию std::string и аллокаторов для работы на чистом WinAPI. Собрать проект линкером 1998 года и запустить его на Windows 95. Сохранить единый код для современных и ретро-систем, используя возможности C++23. https://habr.com/ru/articles/980092/ 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

📦 cpp-sort — это коллекция высокоэффективных алгоритмов сортировки, написанная на C++. Она предоставляет как классические ал
📦 cpp-sort — это коллекция высокоэффективных алгоритмов сортировки, написанная на C++. Она предоставляет как классические алгоритмы (например, quicksort, mergesort), так и более современные, такие как ska_sort и spreadsort. 🔧 Основные особенности: - Простое подключение - Упор на производительность: множество алгоритмов оптимизированы под современные CPU - Совместимость с std::sort и пользовательскими компараторами - Некоторые алгоритмы устойчивы (stable), другие — нет (для повышения скорости) - Поддержка сортировки по ключу (projection) 💡 Если ты работаешь с C++ и тебе нужна кастомная или быстрая сортировка — обязательно стоит взглянуть. Особенно если std::sort не даёт нужного эффекта. https://github.com/Morwenn/cpp-sort 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

Сборка проектов Си и Си++: от простого к сложному. Часть II. Сборщики Продолжаю тему о сборке проектов на Си и Си++, первая ч
Сборка проектов Си и Си++: от простого к сложному. Часть II. Сборщики Продолжаю тему о сборке проектов на Си и Си++, первая часть которой размещена здесь. Рецепты сборки по правилам хорошего тона должны поставляться с проектом и очень желательно, чтобы они не были привязаны к конкретной ОС или хотя бы к конкретному дистрибутиву Linux, используя специфические команды вроде apt-get, yum, emerge. Если это небольшой пет-проект выходного дня, то, конечно, в качестве рецепта сгодится и bash-скрипт. Пользователи адаптируют. Но если к проекту подключаются другие разработчики, то лучше потратить время на автоматизацию сборки, чтобы не терять его оптом в будущем. В этой части речь пойдёт об инструментах, которые используются для автоматизации процесса сборки программного обеспечения. https://habr.com/ru/companies/ruvds/articles/875620/ 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

Сборка проектов Си и Си++: от простого к сложному. Часть I. Библиотеки Каждый раз, в течение многих лет, собирая пилотную вер
Сборка проектов Си и Си++: от простого к сложному. Часть I. Библиотеки Каждый раз, в течение многих лет, собирая пилотную версию мизерного проекта или простой утилиты, мне кажется, что уж в этот раз точно обойдусь обычным скриптом для сборки, и никакие сборщики проекта мне не понадобятся. Но суровая реальность приводит меня в чувство уже в течение первых нескольких минут работы. Сначала оказывается, что до невозможности простая программка нуждается в JSON-парсере, HTTP-запросах CURL и прочих библиотеках. А по мере возбуждения хотелок эти все зависимости нарастают как снежный ком. И все мечты быстро скомпилировать страничку кода встречают на каждом шаге всё новые и новые проблемы. Вот сегодня и расскажу о том, какие бывают способы борьбы с зависимостями и сборки проекта из множества файлов на Си++. Заодно те, кто не любят Си++, смогут порадоваться «прелестям» этого процесса. И хоть тема очень важная для программистов, но я обратил внимание, что даже многолетний опыт не гарантирует понимания этих процессов. Но сразу предупреждаю — история длинная даже с учетом всех попыток не убегать на смежные темы. https://habr.com/ru/companies/ruvds/articles/871940/ 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

Можно ли навсегда избавиться от утечек памяти из-за циклических ссылок? В комментариях к статье в очередной раз услышал мнени
Можно ли навсегда избавиться от утечек памяти из-за циклических ссылок? В комментариях к статье в очередной раз услышал мнение, что поскольку невозможно в принципе гарантировать отсутствие циклических ссылок при статическом анализе кода, то в языке Rust утечки памяти из-за циклических ссылок считаются безопасными, так это не влияет на безопасное управление памятью. При работе с памятью существует много типов ошибок, но единственные ошибки, которые до сих пор не имеют нормального способа решения, это утечки памяти из-за циклических ссылок, когда два или более объектов напрямую или косвенно ссылаются друг на друга, в результате чего доступная приложению оперативная память постепенно уменьшается, так как ее невозможно освободить автоматически. Утечки памяти из-за циклических ссылок являются наиболее сложными для анализа. В то время как для всех остальных типов ошибок при работе с памятью уже найдены и используются различные решения, например на уровне языка программирования, с помощью сборщиков мусора, проверки заимствований или шаблонов библиотек, то проблема утечек памяти из-за циклических ссылок остается нерешенной и по сей день. Но мне кажется, что есть очень простой способ устранить циклические ссылки в программе, который можно реализовать практически в любом типизированном языке программирования, конечно, если при этом не использовать все разрешающее ключевое слово unsafe для Rust или оператор reinterpret_cast в случае С++. https://habr.com/ru/users/rsashka/articles/ 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

Если вы работаете ближе к железу или серверу, чем к интерфейсу, жизненный цикл программы в UNIX — необходимый инструмент. 💻
Если вы работаете ближе к железу или серверу, чем к интерфейсу, жизненный цикл программы в UNIX — необходимый инструмент. 💻 На открытом уроке разберём: - чем программа отличается от процесса - как процессы создаются и связываются между собой - как терминал с ними взаимодействует - что такое процесс-зомби и как грамотно завершать процессы. Потренируемся работать с ps, kill и базовыми сценариями управления. Занятие будет полезно embedded-разработчикам и системным администраторам, которые хотят понимать иерархию процессов, уверенно разбираться в зависаниях и обслуживать системы без угадываний. 📌Встречаемся 23 декабря в 20:00 МСК, регистрация открыта: https://vk.cc/cSuInc Вебинар проходит в преддверие старта курса «Программист С» 🎄 Учитесь в новом году по старым ценам! Максимальная скидка 30% на обучение до 21.12.2025: 1 курс — тающая скидка 15% до 21.12 2 курса −25%, 3 курса −30% Вы можете оставить заявку на странице курса. Учиться системно — выгоднее! Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

📲 Мы в MAX #cpp #programming 👉 @cpp_lib
📲 Мы в MAX #cpp #programming 👉 @cpp_lib

🧵 STL Renderer — это простой рендерер STL-файлов, написанный с использованием C++, OpenGL и Dear ImGui. 🔹 Функции: - Загруз
🧵 STL Renderer — это простой рендерер STL-файлов, написанный с использованием C++, OpenGL и Dear ImGui. 🔹 Функции: - Загрузка и визуализация STL-файлов (как ASCII, так и бинарных) - Управление камерой: вращение, масштабирование, перемещение - Интеграция с Dear ImGui для графического интерфейса 📦 Сборка: Проект использует CMake и требует следующих зависимостей: - OpenGL - GLFW - GLAD - Dear ImGui 🚀 Отличный старт для тех, кто хочет разобраться, как визуализировать 3D-модели в формате STL с помощью OpenGL и создать минимальный интерфейс управления сценой. https://github.com/SynrgStudio/STL-Renderer 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

👨‍💻Задачи точного покрытия — фундамент для многих алгоритмических подходов. Но пока теория лежит на полке, она мало что мен
👨‍💻Задачи точного покрытия — фундамент для многих алгоритмических подходов. Но пока теория лежит на полке, она мало что меняет в вашем инженерном мышлении На открытом уроке мы разберем Dancing Links через практику: соберем пентамино на столе, представим фигуры в виде строк матрицы и разберемся, как работает поиск с возвратом. Когда алгоритм становится наглядным, вы начинаете понимать, что на самом деле происходит внутри. Если вы хотите развивать алгоритмическое мышление, системно улучшать свои решения и уверенно чувствовать себя в задачах уровня middle+, такие разборы — обязательная часть роста. 📆 Встречаемся 22 декабря в 20:00 МСК в преддверие старта курса «Алгоритмы и структуры данных», регистрация открыта: https://vk.cc/cSslDR Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

+8
Алгоритмы на С/С++ Задача о Ханойской башне Быстрая сортировка (quick sort) Бинарный поиск в отсортированном массиве Сортировка методом выбора Сортировка методом пузырька Минимизация просмотров в методе сортировки пузырьком Модифицированный метод пузырька Сортировка методом вставок Шейкер - сортировка источник 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

Если вы хотите основательно изучить C++, ресурс LearnCpp - один из лучших бесплатных онлайн-курсов по современному C++. Сайт
+3
Если вы хотите основательно изучить C++, ресурс LearnCpp - один из лучших бесплатных онлайн-курсов по современному C++. Сайт охватывает: - Основы языка (переменные, типы данных, управление потоком, функции) - Указатели, ссылки и динамическое выделение памяти - Работа с массивами, строками и контейнерами STL - ООП: классы, наследование, полиморфизм, инкапсуляция - Современные фичи C++11/14/17/20: smart pointers, lambdas, auto, ranged for, structured bindings - Обработка исключений - Пространства имён, шаблоны, перегрузка операторов - Управление ресурсами (RAII) - Работа с файлами - Продвинутые темы: многопоточность, move-семантика, constexpr и др. Все главы структурированы в логическом порядке, с практическими примерами, пояснениями и заданиями. Сайт постоянно обновляется, чтобы соответствовать актуальным стандартам языка. 📚 Отличный выбор для как новичков, так и опытных разработчиков, желающих освежить знания по современному C++. https://www.learncpp.com/ 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

🎯 В C++ вызываемый объект — это намного больше, чем “функция”. За тридцать лет язык прошёл путь от простых указателей до мощ
🎯 В C++ вызываемый объект — это намного больше, чем “функция”. За тридцать лет язык прошёл путь от простых указателей до мощных лямбда-выражений, которые лежат в основе современного параллелизма, асинхронности, алгоритмов и гибких архитектур. На открытом уроке 18 декабря в 20:00 мск вы увидите эволюцию callable-подходов во всей широте: от function pointers и функторов до std::bind, std::function и современных лямбд. Разберёмся, что происходит «под капотом», как выбирать подходящий инструмент и почему именно лямбды стали стандартом промышленного C++. Такой разбор особенно полезен тем, кто хочет писать более выразимый, модульный и безопасный код. Понимание callable-моделей даёт гибкость: проще проектировать API, реализовывать callback-механику, строить асинхронность, оптимизировать архитектуру приложения и мыслить “по-современному”. ⚡️Присоединяйтесь к открытому уроку в преддверие старта курса «C++ Developer» — получите базу, на которой строятся потоки исполнения, асинхронные модели и ключевые элементы современного C++20/23: https://vk.cc/cSn7e8 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Как написать 2D игру на C++ и чистом STL для терминала в Linux Я PHP разработчик с опытом работы в продакшне более 8 лет. После долгого и упорного труда мне стало скучно пилить микросервисы и бэкенды в хайлоде, я решил постичь магию разработки игр. Выбрал курс по Unreal Engine 5 и C++, так как там все структурировано, понятно, и в случае необходимости есть кому задать вопрос. На первой лекции по основам С++ преподаватель сразу предложил челлендж - написать 2D игру без использования игрового движка. Идея мне понравилась и я сразу приступил к реализации. https://habr.com/ru/post/708486/ 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

Три теоремы о сортировках Я знаю многих программистов и руководителей в IT компаниях, которые недолюбливают математиков и в ч
Три теоремы о сортировках Я знаю многих программистов и руководителей в IT компаниях, которые недолюбливают математиков и в частности считают их далёкими от жизни идиотами из-за их утверждений в духе "нельзя отсортировать последовательность быстрее, чем за nlogn" -- ведь это очевидным образом неверно, есть же сортировка подсчетом и radix sort. Нюанс в том, что описанное выше -- это распространённая некорректная трактовка одной из ключевых теорем об алгоритмах сортировок, корректное утверждение выглядит так: "не существует алгоритма, который бы гарантированно находил перестановку n элементов, приводящую к возрастающему порядку, быстрее чем за nlogn используя только операции попарного сравнения". В этом утверждении больше слов, оно более сложно в плане когнитивного восприятия, ключевой момент обозначил жирным шрифтом, чувствуете разницу? https://habr.com/ru/hubs/cpp/articles/ 📲 Мы в MAX #cpp #programming 👉 @cpp_lib