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

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

Ir al canal en Telegram

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

Mostrar más
7 224
Suscriptores
-524 horas
-217 días
-4430 días
Archivo de publicaciones
ggwave — это компактная и переносимая библиотека C/C++ для передачи и приема коротких сообщений с использованием звуковых волн. Она позволяет устройствам обмениваться данными через звук — без необходимости в Bluetooth, Wi-Fi или других беспроводных технологиях. Это особенно полезно для коротких одноразовых взаимодействий между устройствами, которые находятся рядом друг с другом. Поддерживает: * Передачу текста через звук * Возможность генерации и анализа аудиосигналов в реальном времени * Кроссплатформенность: работает на Windows, macOS, Linux, iOS, Android и в браузере (через WebAssembly) Примеры использования: * Аутентификация устройств поблизости * Обмен контактами или ссылками * Синхронизация устройств без интернета https://github.com/ggerganov/ggwave 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

Этот проект содержит исходный код игр Command & Conquer: Tiberian Dawn и Command & Conquer: Red Alert, выпущенных как часть сборника Command & Conquer Remastered Collection. Код распространяется под лицензией GPL v3 и предоставляет возможность энтузиастам и разработчикам модифицировать, изучать и использовать движок в рамках условий лицензии. В проекте используется C++ и множество современных практик разработки, а также система сборки CMake. Репозиторий включает: * Исходный код движка на C++ * Документацию по сборке * Скрипты для интеграции с игрой * Исторический контекст разработки Проект ориентирован на обучение, поддержку моддинга и развитие сообщества вокруг классических RTS-игр. https://github.com/electronicarts/CnC_Remastered_Collection 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

🧑‍💻Пишете на Vue и давно работаете с Vue Router по привычке? Сейчас в экосистеме появляется новая опция — Kitbag Router. Лё
🧑‍💻Пишете на Vue и давно работаете с Vue Router по привычке? Сейчас в экосистеме появляется новая опция — Kitbag Router. Лёгкий повод пересобрать подход к роутингу и обновить стек. На открытом уроке разберём, как подключить его к проекту, настроить под свой стек и чем он принципиально отличается от Vue Router. Пошагово пройдём путь от установки до рабочих маршрутов в SPA. Вы познакомитесь с новой библиотекой роутинга для VueJS, научитесь создавать приложения с клиентским роутингом на Kitbag Router, сравнивать его с Vue Router и осознанно выбирать инструмент под задачу. 📆Встречаемся 21 января в 20:00 МСК в преддверие старта курса «Vue.js разработчик». Регистрация открыта: https://vk.cc/cTo00r Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Три теоремы о сортировках Я знаю многих программистов и руководителей в 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