Библиотека C/C++ разработчика
Open in Telegram
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Show more7 194
Subscribers
-124 hours
-27 days
-2530 days
Posts Archive
Реализуем эффективный тупль с помощью C++26
Свет видел много любительских реализаций std::tuple, и реализация своих велосипедов — наверное, это действительно действенный способ обучения: вряд-ли можно сказать, что ты что-то по-настоящему понимаешь, если не можешь объяснить, как это что-то устроено.
Многие пытливые умы на протяжении десятилетий задавались вопросом: как же реализован std::tuple, как мне реализовать свой тупль (кортеж)? [1]
И немало было дано ответов на такие вопросы и написано статей ([2]). Однако я берусь утверждать, что все они имеют один фатальный недостаток! Конкретнее, они все рассматривают в основном лишь один (и при этом неэффективный) способ реализации: с помощью множественного наследования или рекурсивного инстанцирования, имеющий в свой очередь множество своих недостатков, главный из которых — неэффективное использование памяти.
В то время как современный C++ позволяет реализовать тупль гораздо проще (без обилия шаблоноты) и эффективнее.
https://habr.com/ru/articles/835176/
#cpp #programming
👉 @cpp_lib
Коллекция ресурсов по современному C++
https://github.com/rigtorp/awesome-modern-cpp
#cpp #programming
👉 @cpp_lib
Курс «Введение в Реверс инжиниринг»! Запись до 17 августа
Курс подойдёт всем интересующимся темой реверс-инжиниринга. По окончанию курса, вы будете уметь проводить исследования исполняемых файлов и вносить изменения в логику программ.
Курс включает в себя:
- Работу с отладчиком IDA
- Практические навыки анализа исполняемых файлов без исходного кода
- Изучение ассемблера, языка Си и EXE / ELF
- Восстановление исходного кода из скомпилированных программ
🏆 Сертификат / удостоверение о повышении квалификации
Пишите нам @Codeby_Academy или узнайте подробнее о курсе здесь
📕Navigating the Worlds of C and C++: Masters of Code
Автор: Frahaan Hussain (2024)
Начиная с основ, книга знакомит читателей с фундаментальными концепциями программирования на Си, включая переменные, типы данных и управляющие структуры, а затем переходит к более сложным темам, таким как управление памятью и системное программирование. При переходе к C++ в тексте рассматриваются объектно-ориентированное программирование, инкапсуляция, наследование и полиморфизм, а также инструменты, необходимые для создания надежного и эффективного программного обеспечения.
#cpp #programming
👉 @cpp_lib
Memory Safety in C++ vs Rust vs Zig
https://medium.com/@shyamsundarb/memory-safety-in-c-vs-rust-vs-zig-f78fa903f41e
#cpp #programming
👉 @cpp_lib
Как поделить не деля или оптимизация деления компиляторам(и)
Если вы никогда не пробовали смотреть как код на C++ разворачивается компилятором в код Assembly – вас ждёт много сюрпризов, причём, не нужно смотреть какой-то замудренный исходный код полный templates или других сложных конструкций: рассмотрите следующий snippet:
uint8_t div10(uint8_t x)
{
return x/10;
}
https://habr.com/ru/articles/833470/
#cpp #programming
👉 @cpp_libРаскатили фан на полную
17 августа в Москве в музее-заповеднике «Коломенское» пройдет ИТ-пикник — фестиваль для опытных ИТ-специалистов, их близких и друзей. Будет больше 17-ти ИТ-партнеров фестиваля. В программе воркшопы, лекции от спикеров известных компаний, нетворкинг, выступления топовых музыкантов и детская зона.
Придут Леонид Агутин, TRITIA, Дайте танк (!), Драгни, Найк Борзов и Нееет, ты что. А вы придете?
Успейте зарегистрироваться
erid:2VtzqxH1gXD
Реклама. АО "ТБанк", ИНН 7710140679, лицензия ЦБ РФ № 2673
С++ фреймворк для описания пайплайнов распределенных вычислений
Огромное количество С++ кода в Яндексе можно описать словами «распределенные вычисления». Доклад посвящен активно разрабатываемому сейчас С++ фреймворку, вдохновленному библиотеками std::ranges и Apache Beam. Этот фреймворк позволяет достаточно компактно и просто описывать такие процессы и запускать их в MapReduce-режиме для обработки таблиц данных или в real-time режиме для обработки бесконечных потоков (очередей) данных.
Доклад не предполагает знакомства с какими-либо специфичными технологиями. Он будет полезен разработчикам и пользователям различных распределенных систем обработки данных и тем, кто интересуется этой темой.
источник
#cpp #programming
👉 @cpp_lib
Нативная рефлексия в C++ уже близко
Почему в 2024 году нам приходится писать каст енума к строке вручную, для каждого кастомного типа нужна своя функция логирования, а биндинги к C++ библиотеке требуют кучу повторяющегося кода?
Если Вы задавались этими, или подобными вопросами, то у меня для вас хорошая новость - скоро эти проблемы будут решены. И что самое приятное - на уровне языка, а не нестандартным фреймворком.
Сегодня рассматриваем пропозалы рефлексии, которые с большОй вероятностью попадут в следующий стандарт - C++26.
https://habr.com/ru/articles/824840/
#cpp #programming
👉 @cpp_lib
Не знаете, как правильно реализовать аварийное восстановление (DR) и высокую доступность (HA)?
А теперь представьте, что вы освоили основы DR и HA, понимаете их взаимосвязь и умеете применять архитектурные паттерны для обеспечения надежности и доступности.
Присоединяйтесь к открытому вебинару «Связь DR и HA в современных архитектурных решениях» 14 августа в 20:00 мск и сделайте этот прыжок в будущее! Там мы обсудим все эти проблемы и даже больше, а также разберем возникающие вопросы.
💻 Урок будет полезен Backend- и Fullstack-разработчикам, DevOps-инженерам, архитекторам ПО, IT-менеджерам и руководителям проектов.
🔴 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cyRreF
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576📕Sams Teach Yourself C++ in One Hour a Day
Siddhartha Rao (2021)
In just one hour a day, you will have all the skills you need to begin programming in C++. With this complete tutorial, you will quickly master the basics, and then move on to more advanced features and concepts. Completely updated for the latest C++ standard, this book presents the language from a practical point of view, helping you learn how to use C++ to create faster, simpler, and more efficient C++ applications.
#cpp #programming
👉 @cpp_lib
Сборка C++ проектов. Оптимизации компилятора. Inline, constexpr, alignment. Game Engine серии
0:00:00 - Введение
0:02:26 - Дизассемблер
0:09:31 - Общие оптимизации
0:20:46 - Inline
0:35:24 - Constexpr
0:45:28 - Compile-time raytracer
0:52:40 - Internal vs. external linkage
0:55:18 - Выравнивание структур
1:06:46 - Pragma optimize
источник
#cpp #programming
👉 @cpp_lib
У вендора и производителя IT-инфраструктуры YADRO активны вакансии в разных направлениях для тех, кто кодит на С/С++ 🔍
1️⃣ Software Engineer C/C++
2️⃣ Разработчик ПО для цифровых систем связи
3️⃣ Senior C++ developer/Старший инженер-программист С++
4️⃣ Инженер по разработке ПО (C/C++ Embedded Linux)
5️⃣ Старший разработчик C++ (Linux/ OpenBMC)
6️⃣ Инженер по разработке встраиваемого ПО (Embedded Linux BSP)
Ты сможешь раскрыть свой творческий и инженерный потенциал в команде профессионалов, которые создают высокотехнологичные решения мирового уровня.
Какие бенефиты предлагаются:
– достойная зарплата (размер обсуждается на собеседовании) и прозрачная система премий;
– обучение за счёт компании: учебный портал с курсами и лекциями от экспертов, дополнительное профессиональное обучение, изучение английского, участие в конференциях;
– возможность учиться у лучших специалистов индустрии, расти в рамках своей роли, а также участвовать во множестве различных проектов;
– личное участие в становлении процессов и продуктов, возможность увидеть результат своей работы;
– большое инженерное сообщество, которое постоянно развивается;
– гибридный или удалённый формат работы;
– ДМС со стоматологией с первого дня, консультации юристов, психологов, экспертов по ЗОЖ и управлению финансами;
– скидки для сотрудников, дополнительные day-off;
– комфортные офисы в Москве, Санкт-Петербурге, Нижнем Новгороде и Минске.
Скорее переходи по ссылкам и оставляй отклики!
Mastering Memory: Allocation Techniques in C, C++, and ARM Assembly
В этом видео мы рассмотрим эквивалентные методы выделения памяти в C++, C и raw ARM assembly. Мы обсудим методы и системные вызовы, связанные с каждым языком, для выделения и освобождения памяти после того, как динамическая переменная больше не нужна.
00:00 Intro
01:46 C++ Memory Allocation
05:41 C Memory Allocation
09:50 ARMv7 Assembly Memory Allocation
16:18 Conclusion
источник
#cpp #programming
👉 @cpp_lib
4 типовые ловушки в работе со строками в С и С++ и как их избежать
Некорректное использование строк может стать настоящей ахиллесовой пятой защиты программы. Поэтому так важно применять актуальные подходы к их обработке. Под катом разберём несколько паттернов ошибок при работе со строками, поговорим о знаменитой уязвимости Heartbleed и узнаем, как сделать код безопаснее.
https://habr.com/ru/companies/ncloudtech/articles/830918/
#cpp #programming
👉 @cpp_lib
Открытый урок. Аллокаторы в C++: Что делать, если менеджер памяти вас разочаровывает? 🤔
C++ известен тем, что позволяет работать с памятью напрямую. Здесь вы точно знаете, где и как расположен каждый из ваших объектов, сколько памяти он занимает.
Но можете ли вы принимать решение, где и как будет размещен ваш объект? Часто стандартные методы выделения памяти не удовлетворяют узким требованиям конкретной логики.
⚡️Присоединяйтесь к открытому вебинару 8 августа в 20:00 мск! Поговорим, зачем в C++ существуют аллокаторы.
✅Обсудим, что C++ приобрел при введении полиморфных аллокаторов. И рассмотрим конкретный пример увеличения производительности программы с их помощью.
Регистрируйтесь по ссылке: https://clck.ru/3CCLBT/?erid=2VtzqwmRJ5h
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Опыт создания UI библиотеки на C++
Началось все почти два года назад в декабрe, наш основной проект (видео мессенджер) использовал WTL для Windows и GTKmm для Linux. Поддержки мака не было. Огромной неприятностью было тащить два идентичных клиента, которые, по идее, должны делать все строго одно и тоже. Разумеется, это никогда не получалось. От мысли что надо бы сделать ещё один нативный клиент для мака начинался нервный тик...
На резонный вопрос - почему сразу делалось не на Qt могу лишь ответить, что это связано с, так скажем, гурманскими предпочтениями и, отчасти, с любовью к монолитным exe. Да и не требовалось на старте ничего кроме винды.
В течение шести лет жизни с двумя кодовыми базами одного и того же, неспешно подбирались легковесные UI библиотеки написанные хотя бы в стиле C++11.
Надо сказать, что мы активно используем boost и всей душой, как можем, его любим...
В 2021 году видимо Гугл работал плохо или звёзды так сошлись, но не нашлось ничего стоящего. Все что попадалось - основанные на рендеринге html проекты и обертка над wxWidgets. Сейчас то мы знаем про lvgl, да... А вообще, тысячи их.
wxWidgets не плох, но хотелось своего рисования, без окошек под кнопки, поля ввода и списки, boost/bsd подобной лицензией, максимально лаконичной, и в идеале работающей от Windows XP / CentOS 6 на стандартном GDI / X11 до Vulkan на современных машинах.
В итоге, все же было принято волевое решение сделать минимальный UI фреймворк для этого проекта, и сразу выпускать его в Open Source под лицензией boost.
https://habr.com/ru/articles/768336/
#cpp #programming
👉 @cpp_lib
📕Beginning C++ Game Programming, 3rd Edition: Learn C++ from scratch by building fun games
John Horton (2024)
Вы изучите ключевые темы C++, такие как ООП и указатели C++, познакомитесь со стандартной библиотекой шаблонов (STL). Книга поможет вам узнать о методах обнаружения столкновений и игровой физике, создав игру Pong. В процессе создания игр вы также узнаете такие интересные концепции игрового программирования, как вершинные массивы, направленный звук (пространственность), программируемые шейдеры OpenGL, порождение объектов и многое другое. Вы глубоко погрузитесь в игровую механику и реализуете обработку ввода, повышение уровня персонажа и простой вражеский ИИ. Наконец, вы изучите паттерны проектирования игр, чтобы усовершенствовать свои навыки программирования игр на C++.
#cpp #programming
👉 @cpp_lib
CppCoreGuidelines
Основные принципы C++ - это набор проверенных рекомендаций, правил и лучших практик по программированию на C++.
https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
#cpp #programming
👉 @cpp_lib
