Библиотека C/C++ разработчика
6.81K subscribers
655 photos
690 videos
8 files
940 links
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Download Telegram
Простое руководство по атомарности в C++

Часто возникает путаница с тем, что же понимается в компьютерных науках под «атомарностью». Как правило, атомарность – это свойство процесса, означающее, что он совершается за один шаг или операцию. Но в языке C++ атомарность определяется гораздо более специфичным образом. На самом деле, при использовании std::atomic с классами и типами еще не гарантируется, что весь код будет подлинно атомарным. Хотя, атомарные типы и входят в состав языка C++, сами атомарные операции должны поддерживаться на уровне того аппаратного обеспечения, на котором работает программа. Эта статья – простое руководство, помогающее понять, что же представляет собой атомарность в C++.

https://blog.devgenius.io/a-simple-guide-to-atomics-in-c-670fc4842c8b

#cpp #programming

👉 @cpp_lib
👍5🤣1
C++: Трассировка лучей за одни выходные

За годы работы я провел множество занятий по графике. Часто я провожу их по трассировке лучей. Я решил адаптировать свои заметки к курсу, чтобы как можно быстрее познакомить вас с полезной программой. Это не будет полнофункциональный трассировщик лучей, но в нем есть непрямое освещение, которое сделало трассировку лучей основным элементом в фильмах. Следуйте этим шагам, и архитектура созданного вами трассировщика лучей будет пригодна для создания более обширного трассировщика лучей, если вы увлечетесь и захотите этим заняться.

https://raytracing.github.io/books/RayTracingInOneWeekend.html

#cpp #programming

👉 @cpp_lib
👍10
Генерация пещер при помощи клеточного автомата

Клеточный автомат — дискретная модель, изучаемая в математике, теории вычислимости, физике, теоретической биологии и микромеханике. Основой является пространство из прилегающих друг к другу клеток (ячеек), образующих решётку. Каждая клетка может находиться в одном из конечного множества состояний (например, 1 и 0).

https://habr.com/ru/articles/741564/

#cpp #programming

👉 @cpp_lib
👍4
Media is too big
VIEW IN TELEGRAM
C++ Что такое указатели и зачем они нужны

#cpp #programming

👉 @cpp_lib
👍7🔥2
Развлечения с gRPC и C++

Погружение в асинхронные серверы и клиенты с использованием C++ и gRPC в 2023 году

Почему я пишу эту серию статей? Так получилось, что я хочу использовать gRPC в своем будущем DNS-сервере.

В прошлом я уже использовал gRPC - с большим трудом. В этот раз я посмотрел несколько примеров и сделал что-то вроде реализации - но понял, что это дерьмо. К тому же было слишком много вещей, которых я не знал и не понимал, чтобы исправить это. Поэтому я решил потратить некоторое время на игру с gRPC, чтобы лучше понять его.

https://lastviking.eu/fun_with_gRPC_and_C++/

#cpp #programming

👉 @cpp_lib
👍4🔥3
Рефакторинг с использованием C++17 std::optional

Существует множество ситуаций, когда вам нужно выразить, что что-то является "необязательным" - объект, который может содержать значение или нет. У вас есть несколько вариантов реализации такого случая, но в C++17 появился, пожалуй, самый полезный способ: std::optional.

Сегодня я подготовил один пример рефакторинга, где вы можете научиться применять эту новую возможность C++17.

https://www.cppstories.com/2018/04/refactoring-with-c17-stdoptional/

#cpp #programming

👉 @cpp_lib
👍6
Разработка кросплатформенного приложения на Qt с использованием нейросетей, обученных на tensorflow

Раз уж Вы заинтересовались данной статьёй, то ожидается, что Вы умеете программировать на с++ с использованием библиотеки Qt и разрабатывать нейросети на Python c использованием библиотеки tensorflow.
Соответственно остаётся только понять как использовать обученные Вами нейросетевые модели в Qt проектах.

https://habr.com/ru/articles/719888/

#cpp #programming

👉 @cpp_lib
👍3
📚Expert C++: Become a proficient programmer by learning coding best practices with C++17 and C++20's latest features
Авторы: Vardan Grigoryan, Shunguang Wu (2020)

Язык C++ развивался на протяжении многих лет, и сейчас доступна его последняя версия - C++20. Начиная с C++11, C++ постоянно расширяет набор функций языка. В новой версии вы познакомитесь с такими возможностями, как концепции, модули, диапазоны и корутины. Эта книга станет вашим путеводителем в изучении тонкостей языка, методов, инструментов C++ и новых возможностей, появившихся в C++20, а также поможет вам применить их при создании современного и отказоустойчивого программного обеспечения.

#cpp #programming

👉 @cpp_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52
Words counter benchmarks

Это серия все более производительных "счетчиков слов" (не вычурных, просто разделяющих "слова" пробелами), реализованных с использованием возможностей Modern C++20, таких как span, string_view, filesystem, ranges и других.

При необходимости используются параллельные хэш-карты и другие зависимости, такие как контейнеры Abseil, Boost.Future (допускающие продолжения) или Asio с корутинами C++20.

https://github.com/germandiagogomez/words-counter-benchmarks-game

#cpp #programming

👉 @cpp_lib
1👍1
Отладка C при помощи пакета Cosmopolitan Libc

Cosmopolitan Libc предоставляет набор отладочных возможностей, повышающих удобство разработки на C: трассировка вызовов функций, интеграция с gdb, среда выполнения ASAN/UBSAN и многое другое! На C написано много быстрого и критически важного кода. Если вы пользуетесь программами, написанными на C, если вам приходится предусматривать интерфейсы для работы с библиотеками на C, исправлять баги в коде на C, либо даже переписывать имеющуюся на С программу на каком-то другом языке, то именно этот инструмент помогает понять, что делается в вашем коде на C. Отладка – это не просто россыпь инструкций printf. В этом посте будет рассмотрено, как Cosmopolitan Libc помогает наверняка и как следует отлаживать код C. Все примеры находятся в этом репозитории.

https://ahgamut.github.io/2022/10/23/debugging-c-with-cosmo/

#cpp #programming

👉 @cpp_lib
👍32
📚C++ Standard Library Quick Reference
Авторы: Marc Gregoire, Peter Van Weert (2016)

Стандартная библиотека шаблонов является жемчужиной языка программирования С++ и содержит основные алгоритмы, структуры данных и функции, необходимые для повседневной работы. Обычно она изучается в конце любого руководства по С++, однако этот справочник направлен исключительно на изучение STL, рассматривая основные темы, такие как контейнеры, лямбда-выражения, указатели и функции по работе с многопоточностью.

В книге рассматриваются следующие темы:
✔️ математические функции;
✔️ контейнеры;
✔️ алгоритмы;
✔️ потоки ввода/вывода;
✔️ строки;
✔️ многопоточность.

#cpp #programming

👉 @cpp_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
Автоматическая Генерация Конфигураций для Make Сборок

При разработке программного обеспечения (особенно для микроконтроллеров) рано или поздно придется столкнуться с тем, что надо как-то передавать конфигурации для данного программного проекта.

В своем опыте я пришел к выводу, что с точки зрения масштабирования кодовой базы, конфиги проще всего передавать через переменные окружения. Да.. Плюс в том, что переменные окружения можно определять прописывая прямо в скриптах (Make, CMake и т.п.).

Выглядит это так. У каждой сборки есть файл config.mk в котором перечислены программные компоненты из которых должна собираться эта конкретная сборка. Содержимое этого файла обычно выглядит так.

https://habr.com/ru/articles/798213/

#cpp #programming

👉 @cpp_lib
👍5
C++: Эмулятор NES с нуля

#1: Bitwise Basics & Overview
#2: The CPU (6502 Implementation)
#3: Buses, RAMs, ROMs & Mappers
#4: PPU - Background Rendering
#5: PPU - Foreground Rendering
#6: APU - Sounds, Beeps & Bloops
#7: More About Mappers

источник

#cpp #programming

👉 @cpp_lib
👍122🔥1