Библиотека C/C++ разработчика
رفتن به کانال در Telegram
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
نمایش بیشتر7 224
مشترکین
-524 ساعت
-217 روز
-4430 روز
آرشیو پست ها
🎯 В 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 компаниях, которые недолюбливают математиков и в частности считают их далёкими от жизни идиотами из-за их утверждений в духе "нельзя отсортировать последовательность быстрее, чем за nlogn" -- ведь это очевидным образом неверно, есть же сортировка подсчетом и radix sort.
Нюанс в том, что описанное выше -- это распространённая некорректная трактовка одной из ключевых теорем об алгоритмах сортировок, корректное утверждение выглядит так: "не существует алгоритма, который бы гарантированно находил перестановку n элементов, приводящую к возрастающему порядку, быстрее чем за nlogn используя только операции попарного сравнения". В этом утверждении больше слов, оно более сложно в плане когнитивного восприятия, ключевой момент обозначил жирным шрифтом, чувствуете разницу?
https://habr.com/ru/hubs/cpp/articles/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Лекции С++ продвинутый поток ФПМИ 2023-24
Лекция 1. Введение в язык C++. Основные типы и операции над ними
Лекция 2. Основные команды в терминале. Компиляция программ
Лекция 3. Объявления и определения, области видимости, пространства имен
Лекция 4. Выражения и операторы. Управляющие конструкции
Лекция 5. Compile-time errors, runtime errors, undefined behavior
Лекция 6. Указатели
Лекция 7. Стековая, статическая и динамическая память
Лекция 8. Массивы, функции и указатели на функции
источник
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
15 декабря в Москве и онлайн пройдёт встреча РГ21 С++ для практикующих разработчиков и энтузиастов языка
Участников ждет разговор о будущем С++, свежие новости и ответы на вопросы о стандартизации языка.
В программе:
🔸 Новости со встречи международного Комитета по стандартизации языка C++. Антон Полухин, руководитель группы разработки общих компонентов в Техплатформе Городских сервисов Яндекса, разберёт прогресс в работе над С++26 с рефлексией, расскажет про контракты и комментарии к стандарту от России.
🔸 Ответы на вопросы о практическом участии в разработке. Обсудим, как российским разработчикам можно напрямую участвовать в развитии стандарта языка.
🔸 Неформальный нетворкинг. После основной программы обмениваемся мнениями и общаемся с коллегами.
Регистрация на встречу уже открыта.
Метапрограммирование
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
🧑🏻💻Асинхронность в C++ всегда была испытанием на зрелость. Потоки, мьютексы, коллбеки — и тысячи строк кода, чтобы просто дождаться результата. Но в C++20 всё изменилось: корутины убирают боль ручного управления потоками.
На открытом уроке разберём, как работает новая модель асинхронности в C++: без громоздких конструкций и перегрузок по CPU. Вы поймёте, как устроены корутины, где их применять и почему они стали стандартом в C++20 и C++23. На практике создадим корутины-генераторы и обсудим их преимущества перед классическими потоками.
Если вы уже чувствуете, что ваш C++ проект тонет в callback hell или не масштабируется под нагрузкой — этот вебинар поможет понять, как писать современный, чистый и асинхронный код.
🔥11 декабря в 20:00 МСК. Открытый урок проходит в преддверии старта курса «C++ Developer. Professional». Присоединяйтесь и узнайте, как сделать асинхронность естественной частью вашего кода: https://vk.cc/cS9XVO
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Базовый курс 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
Метапрограммирование
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
👨💻Ошибки в памяти, утечки, неопределённое поведение — всё это неизбежная часть разработки на C++. Даже опытные инженеры порой тратят часы на поиск невидимых дефектов, которые ломают логику программы. Но есть инструменты, которые позволяют ловить такие баги ещё до того, как они попадут в прод.
На открытом уроке 9 декабря в 20:00 мск мы подробно разберём санитайзеры — инструменты, которые показывают, где и почему программа ведёт себя неправильно. Вы поймёте, как использовать их в реальных проектах, какие типы ошибок они находят и где проходят границы применимости.
Это полезно всем, кто пишет на C++. Санитайзеры — минимальный набор безопасности, который помогает не только отлавливать критические ошибки, но и формировать инженерную культуру «чистого» кода. Вы увидите, как всего одно включение инструмента даёт прозрачность, на которую обычно уходят недели отладки.
🚀Присоединяйтесь к открытому уроку в преддверие старта курса «C++ Developer»: https://vk.cc/cRZJeG
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Улучшенные версии 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🔥OS DevConf 25 powered by GigaChat — конференция про разработку системного ПО, ядра Linux и open source.
Один день, 500 участников, 30+ докладов, 3 трека — концентрат практического опыта, знаний и инструментов, готовых к внедрению сразу по возвращению в офис. И, конечно, мега-возможности для нетворкинга с коллегами и экспертами сообщества!
Что будем обсуждать?
-Инструменты и примеры отладки, виртуализации, оптимизации производительности
-Практический опыт оптимизации сетевых решений с DPDK
-Эффективные методы безопасной разработки ядра Linux
-Реальные кейсы создания драйверов на Rust
-Все про GPU, NPU, ASIC и как запускать AI на железе под Linux и не только. Как AI встраивается в современную разработку
-Современные подходы к разработке системного и embedded ПО
Участие бесплатное, но количество мест ограничено — зарегистрируйтесь прямо сейчас 💻
#реклама
О рекламодателе
Алгоритмы манипуляций с битами
В статье приведены алгоритмы обработки коротких битовых строк, обычно вмещающихся в машинное слово, в большей степени эти алгоритмы предназначены для обработки строк длины 32 или 64, но многие из них можно применять для SIMD инструкций или даже GPU.
https://habr.com/ru/articles/886182/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Все секреты и лайфхаки по работе со строками — на втором вебинаре по оптимизации игр от PVS-Studio ❤️
Приглашённые эксперты из gamedev-индустрии поделятся удачными (и не очень) историями развития собственных решений.
А ещё:
🔵 расскажут о пулах строк и способах экономии памяти;
🔵 разберут, как ускорить поиск подстроки в строке и почему одна реализация может быть быстрее другой.
Вас ждут доклады:
🔵 «String interning и все, все, все» от Сергея Кушниренко, Senior Software Engineer в команде Age of Empires 2 (студия Forgotten Empires);
🔵 «Векторизованный поиск подстроки в строке» от Дениса Ярошевского, Performance engineer, условно активный член C++ сообщества, один из разработчиков библиотеки для векторизации EVE;
🔵 «std::string – путешествие туда и обратно» от Андрея Карпова, сооснователя PVS-Studio и автора Telegram-канала «Бестиарий программирования».
🗓 4 декабря, 15:00
Присоединяйтесь по ССЫЛКЕ.
Game++. Building arcs
Прежде чем рассказать про архитектуры игровых движков, я подумал, что будет полезно немного рассказать о том, как я понимаю архитектуру ПО и как это связано с играми. Во-первых они (архитектуры) есть, чтобы бы там не врали про игрострой. Во-вторых их оказывается больше одной. Это, возможно, поможет вам понять, почему остальные статьи написаны в таком порядке, или без какого-то порядка. В худшем случае, когда вас втянут в спор о том, насколько отвратительны (или, наоборот, потрясающе гениальны) отдельные игровые движки и их архитектуры, у вас будет пара аргументов и понимание что к чему.
Символично, что статья про архитектуру игрового движка появилась после того, как было рассказано про строки, мультипоток, применение алгоритмов: просто оно так и в жизни получается, мы сначала пишем код, редактор, игру - костяк проекта обрастает мясом, и тут нас догоняют проблемы, на которые все забивали, потому что надо было выдать хоть что-то похожее на работающий вариант. Но от того, что мы забивали на проблемы и заметали их под коврик беклога, проблемами быть они не перестали.
Вы не получите из статьи знаний об аллокаторах, контейнерах, или математике, стоящей за физикой игры. Так же я не ставлю целью научить вас, как применять A* разбиение в поиске пути неписей или моделировать реверберацию комнаты. Вместо этого есть размышления о коде между всем этим. И даже не столько про написание кода, сколько о его организации.
https://habr.com/ru/articles/885780/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
Botan — это мощная криптографическая библиотека на C++, поддерживающая широкий спектр алгоритмов и предназначенная для использования в различных проектах. Она отличается модульной архитектурой, хорошей производительностью и кроссплатформенностью.
Основные возможности:
🔹 Поддержка симметричных и асимметричных алгоритмов шифрования
🔹 Генерация и управление ключами
🔹 Хеш-функции и HMAC
🔹 Поддержка TLS и сертификатов X.509
🔹 Стандартизованные и экспериментальные криптографические примитивы
Библиотека активно развивается и используется в различных областях, включая безопасность сетевых соединений, шифрование данных и аутентификацию.
https://github.com/randombit/botan
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
📌 Многие разработчики уверены, что проблема в алгоритме. Но на практике код «тормозит» чаще из-за того, как он работает с памятью.
На открытом уроке 25 ноября в 19:00 мы разберём, почему два одинаковых на вид фрагмента кода в C++ могут показывать кардинально разную производительность. Поговорим о том, как устроены уровни памяти, какие паттерны доступа ускоряют программу в разы и как формируется та самая «интуиция» эффективного инженера.
Вы увидите на практических примерах, как принципы оптимизации, привычные для работы с HDD, прекрасно масштабируются до SSD и оперативной памяти. Это знания, которые повышают ценность любого C++ разработчика — от начинающего до уверенного middle.
⚡️Оставьте заявку и присоединяйтесь к открытому уроку в преддверие старта курса «C++ Developer»: https://vk.cc/cRBJld
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
С++ и безопасность: правда ли все так плохо?
Сергей проанализировал недавний отчет NSA и рассказал, так ли плохо обстоят дела с безопасностью в С++ на самом деле и что современная индустрия предлагает для решения этого вопроса.
Он разобрал проблемы с безопасностью в С++ на открытых примерах из Chromium, среди которых:
— работа с памятью;
— UB;
— C legacy, строки, арифметика, преобразования типов.
Спикер также показал различные подходы к митигации описанных проблем, в частности:
— статический анализ;
— динамический анализ;
— фаззинг-тестирование;
— харденинг;
— выделение безопасных подмножеств языка: Misra, AUTOSAR, стандарт Google;
— методология SDL как комплексное решение;
— (бонус) подход KasperskyOS по определению недоверенных компонентов, допускающих наличие уязвимостей, но без возможности их проэксплуатировать и развить атаку.
источник
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
🚀Это отличный ресурс для программистов, работающих с C++. Можно найти подробную документацию по стандартной библиотеке, STL, различным версиям стандарта C++, а также примеры кода и объяснения по ключевым аспектам языка.
Справочник по C++
C++11, C++14, C++17, C++20, C++23, C++26 │ Поддержка компиляторами C++11, C++14, C++17, C++20, C++23, C++26
Справочник по языку C
C89, C95, C99, C11, C17, C23 │ Поддержка компиляторами C99, C23
https://ru.cppreference.com/w/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
