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

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

Открыть в Telegram

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

Больше
7 224
Подписчики
-324 часа
-167 дней
-3930 день
Архив постов
🔮 Асинхронный код часто воспринимается как магия: функции работают, задачи выполняются, но при сбоях или оптимизации станови
🔮 Асинхронный код часто воспринимается как магия: функции работают, задачи выполняются, но при сбоях или оптимизации становится непонятно, как всё устроено. Без этого сложно писать предсказуемые и эффективные решения. ❗️ На открытом уроке разберём, как Rust представляет асинхронные задачи, как компилятор преобразует async-функции и что происходит во время выполнения. Покажем, как описывать собственные асинхронные задачи и контролировать их поведение. 👣 Урок проходит в преддверии старта курса «Rust-разработчик. Продвинутый уровень». Если вы хотите понимать асинхронность на уровне реализации, а не только использовать её — подключайтесь. ➡️ Встречаемся 19 мая в 20:00 МСК. Подробности и регистрация: https://vk.cc/cXO63U Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

🚀 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

Как отслужить срочку, работая с Геранями, и получить диплом по дуальной системе Алабуга Политех?

Практика языка 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

📦 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

🧵 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

Если вы хотите основательно изучить 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

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

🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. https://max.ru/tipsysdmin Типичный Сисадмин 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика GitHub Сообщество 📌 https://max.ru/githublib Интересное из GitHub Базы данных (Data Base) 📌 https://max.ru/database_info Все про базы данных Фронтенд разработка 📌 https://max.ru/frontend_1 Подборки для frontend разработчиков Библиотеки 📌 https://max.ru/programmist_of Книги по программированию https://max.ru/proglb Библиотека программиста https://max.ru/bfbook Книги для программистов Программирование 📌 https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 Шутки программистов 📌 https://max.ru/itumor Шутки программистов Защита, взлом, безопасность 📌 https://max.ru/thehaking Канал о кибербезопасности https://max.ru/xakkep_1 Хакер Free Книги, статьи для дизайнеров 📌 https://max.ru/odesigners Статьи, книги для дизайнеров Математика 📌 https://max.ru/Pomatematike Канал по математике https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике Вакансии 📌 https://max.ru/progjob Вакансии в IT Мир технологий 📌 https://max.ru/mir_teh Канал для любознательных Бонус 📌 https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга https://max.ru/mockva_life Свежие новости Москвы

+9
Базовый курс C++ (MIPT, ILab) Lecture 1. Scent of C++. Lecture 2. Указатели и ссылки Lecture 3. Имена и сущности Lecture 4. Инициализация и копирование. Lecture 5. RAII и перемещение Lecture 6. Приведение типов Lecture 7. Перегрузка операторов Lecture 8. Наследование и полиморфизм Lecture 9. Множественное наследование Lecture 10. Языки и грамматики источник 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

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

+9
Метапрограммирование 1. Введение в шаблоны 2. C++20: requires keyword 3. C++20: concepts 4. Operator spaceship 5. ADL и CRTP 6 (семинар). Typelist 7. Traits, Policy Based Design, Mixins 8. Полиморфизм 9 (семинар). Реализация std::function 10 (семинар). Реализация std::any без виртуальных функций источник 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

Улучшенные версии STL-контейнеров из библиотеки Boost Илья Мещерин В любом учебном курсе по C++, даже начального уровня, обязательно изучают, как устроен std::vector. Детали внутреннего устройства std::vector в подробностях продолжают изучать в вузах, спрашивать на собеседованиях, обсуждать на конференциях. То же самое происходит с контейнерами std::list, std::deque, std::map и std::unordered_map: про их реализацию и особенности внутреннего устройства можно говорить бесконечно долго, про них все еще делают доклады, снимают лекции и пишут статьи. И их продолжают использовать в продакшен-коде даже в самых крупных и известных компаниях. При этом в библиотеке Boost давным-давно есть альтернативные версии контейнеров, которые выигрывают у стандартных по многим показателям. Однако об этих версиях почти никто не знает, о них почти нет лекций, статей и докладов. Пора положить этому конец и разобраться в том, как еще могут быть устроены контейнеры, помимо тех версий из STL, о которых и так все знают. Спикер обсудил внутреннее устройство не таких уж стандартных контейнеров: stable_vector, devector, bimap, circular_buffer, а также интрузивных версий list, map, unordered_map и их разновидностей. источник 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

Плывущий экран. Вирус на C++. Melting Screen Программа предоставлена в образовательных целях! Автор не несёт ответственности за её использование! В этом видео вы узнаете как написать вирус на с++ который заставляет экран сыпаться и плыть. источник 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

Алгоритмы манипуляций с битами В статье приведены алгоритмы обработки коротких битовых строк, обычно вмещающихся в машинное с
Алгоритмы манипуляций с битами В статье приведены алгоритмы обработки коротких битовых строк, обычно вмещающихся в машинное слово, в большей степени эти алгоритмы предназначены для обработки строк длины 32 или 64, но многие из них можно применять для SIMD инструкций или даже GPU. https://habr.com/ru/articles/886182/ 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

Botan — это мощная криптографическая библиотека на C++, поддерживающая широкий спектр алгоритмов и предназначенная для исполь
Botan — это мощная криптографическая библиотека на C++, поддерживающая широкий спектр алгоритмов и предназначенная для использования в различных проектах. Она отличается модульной архитектурой, хорошей производительностью и кроссплатформенностью. Основные возможности: 🔹 Поддержка симметричных и асимметричных алгоритмов шифрования 🔹 Генерация и управление ключами 🔹 Хеш-функции и HMAC 🔹 Поддержка TLS и сертификатов X.509 🔹 Стандартизованные и экспериментальные криптографические примитивы Библиотека активно развивается и используется в различных областях, включая безопасность сетевых соединений, шифрование данных и аутентификацию. https://github.com/randombit/botan 📲 Мы в MAX #cpp #programming 👉 @cpp_lib

🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. https://max.ru/tipsysdmin Типичный Сисадмин 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика GitHub Сообщество 📌 https://max.ru/githublib Интересное из GitHub Базы данных (Data Base) 📌 https://max.ru/database_info Все про базы данных Фронтенд разработка 📌 https://max.ru/frontend_1 Подборки для frontend разработчиков Библиотеки 📌 https://max.ru/programmist_of Книги по программированию https://max.ru/proglb Библиотека программиста https://max.ru/bfbook Книги для программистов Программирование 📌 https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 Шутки программистов 📌 https://max.ru/itumor Шутки программистов Защита, взлом, безопасность 📌 https://max.ru/thehaking Канал о кибербезопасности https://max.ru/xakkep_1 Хакер Free Книги, статьи для дизайнеров 📌 https://max.ru/odesigners Статьи, книги для дизайнеров Математика 📌 https://max.ru/Pomatematike Канал по математике https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике Вакансии 📌 https://max.ru/progjob Вакансии в IT Мир технологий 📌 https://max.ru/mir_teh Канал для любознательных Бонус 📌 https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга https://max.ru/mockva_life Свежие новости Москвы